Sonic Riders has an Air mechanic in it. Essentially you can only ride your extreme gear if you have air in the tank. Run out of air and you're stuck on foot and at a major speed disadvantage. Performing tricks, collecting air from power-ups, riding turbulence, all of that gives you more air. Dashing, drifting, and just riding your gear decreases air. When you're about to run out of air, the game repeatedly plays a sound to warn you.
I was a bit bored and decided to essentially turn this mechanic into a programming tool, and I made it open-source at https://github.com/acidiclight/Airflow.
It's based on an existing Visual Studio Code extension called Codeflow, which controls your system volume based on how you type. I used to use that extension but I no longer use VS Code and can therefore no longer use Codeflow.
Both Codeflow and Airflow work essentially the same. They monitor your keypresses, and if you type a lot of letters really quickly, it assumes you're in a flow state and turns up the volume for you. If you stop typing or start DELETING text, it assumes you've screwed up and punishes you by turning the music down.
The main differences with Airflow are:
- It controls a single program's audio (I let it control Spotify), and not your main system volume. That way, I can still use screen readersand things like that which is important given I'm blind.
- Airflow has a much smoother volume adjustment routine, Codeflow was really jarring if you set the volume range really high.
- Airflow monitors keypresses system-wide, so you can use it for anything - not just writing code. Banging out emails, writing forum posts like this one, chatting on Discord, writing a school essay, whatever. It'll work.
- Airflow turns up the music when you reach 100% air, and only turns it down when you run out.
I kinda wonder what ways I could improve it, and I wonder if it'd be possible to port it to Linux and macOS. It's a .NET application but it relies on Windows/Win32 APIs to work, so it won't run on other OSes even under Wine (my friend tested it, it crashes).