For the last year or so, I’ve been working on version 3 of RhythmTool. I wasn’t happy with how it performed and with the way it was designed, so I threw everything away and started from scratch.
Previously, the different algorithms and analysis results were kind of tucked away and difficult to configure. Both playback and analysis were done in one place, which made it tricky to use.
This has all been separated. Each algorithm is its own separate component which is easy to configure in the inspector. Playback and synchronization can be done simply by using an AudioSource or by using the included event system.
Analysis results are provided through a custom asset type. This way it’s easy to reference and save analysis results when needed. Even though there is no real way to edit and inspect the asset yet, this makes it possible to eventually add this functionality.
I want to make it possible to create custom beatmaps. I am planning on adding a beatmap editor for the Unity editor and in-game.
I have rewritten beat tracking and onset detection to make them more reliable. All the heavy lifting now happens on a separate thread, which reduces the impact that analyzing a song has on the frame rate.
The last thing I’ve been working on before getting RhythmTool 3 ready for release was pitch detection in the form of a chromagram. The chromagram represents the most prominent notes at any given time in the song. This isn’t perfect yet for more complex music, but it provides enough information to create interesting patterns that match the music.