2025–present · Rhythm game in development
Transientica
A rhythm game I am developing solo in Unity. I wrote the C# audio recognition system that turns the player’s beatboxing into kick, snare and hi-hat inputs.
Training with the player’s voice
Players record at least ten examples of each beatbox sound with their own microphone. The classifier learns from these examples, then identifies live hits during a song.
The game compares each hit with the beatmap and scores its timing.
Training and gameplay in the current C# build.
Audio recognition and note timing
The current build captures, analyses and scores the microphone input inside Unity.
01
Microphone input
One lane each for kick, snare and hi-hat, with the microphone open before the first note.
02
Sound classification
An onset triggers a 512-sample FFT and seven features. A KNN classifier compares them with the player’s own recordings.
03
Timing and calibration
The hit is matched to the nearest note on Unity’s audio clock. A short calibration estimates the microphone delay, adjustable in 1 ms steps.
Moving recognition from Python to C#
The first version used a separate Python classifier and sent its results to Unity over OSC. I replaced it with a KNN classifier and FFT written in C#, keeping the audio processing and gameplay in one application.
The 2025 prototype, with its Python classifier.
Song selection and saved training
The current build includes song selection, beatmaps, scoring and saved results. Player recordings are stored as labelled features in JSON, so training can be updated between rounds.
The C# rebuild has not yet had a like-for-like accuracy and latency benchmark against the earlier Python prototype.
Choosing a beatmap in the current build.