Audio Helm is a live audio synthesizer, sequencer and sampler for Unity. With these tools you can create musical sound effects and generative music for your game.
Synthesizer
The synthesizer generates dynamic audio live, no samples or recordings required. It runs as a native plugin to ensure low latency, high performance, mobile ready audio. Download the standalone synth now (free or pay what you want) to browse and create synth patches you can import into your game.
Sequencer
The sequencer is a tool for creating musical patterns and rhythms by playing synthesizer or sampler notes over time. You can create your own patterns inside Unity’s inspector or create them live from code to generate procedural music. The sequencer supports dynamic tempo so you can increase/decrease the bpm as your game progresses.
Sampler
The sampler takes an audio sample or recording and can play it back at different speeds to create musical pitches. Using different keyzones you can create a full spectrum piano sampler. Audio Helm comes with 4 drum machines each with a separate sample bank.
Sure, I will write a short review imminently, though I won’t mention the wait since thats more relevant to long-time observers of this thread than on the asset store where it is fresh & timely
Small obscure request: Would you consider increasing the maximum pitch-bend range to 48 in the synth engine/standalone/presets? I’ve got a roli seaboard block and although I can turn down the range of the instruments pitch in their dashboard utility, 48 is the default for those devices. Yes this is an obscure request but the seaboard block is a lot cheaper than the previous seaboards so over time I kind of expect more people to use these devices.
Speaking of which, I will be using multiple instances of the synth plugin, one per note, so that I can use the additional dimensional controls of the seaboard to control synth params in a per note/per voice/multi-timbral way. As a quick starting point to testing whether this will work, I quickly tried 2 instances by using 2 audio mixers with helm and 2 helm controller scripts. Seems to work, but before I start adding more voices and more lines of code to my script, I thought I’d ask if you had any tips/best practice ways to handle multiple instances.
Unnecessary detail: I’m using the following to get live midi input which I then handle with my own code which takes account of the voice-per-midi-channel way the roli seaboard works (MPE).
I just changed the pitch bend range to 48. It’ll come out in the next release cycle.
Multiple synth instances work in Unity. There is a small caveat where the channel slider needs to be different for each synth if you want to control them separately. Then in the HelmController/Sequencer, the channel needs to match the Audio Plugin. I was trying to find a automatic way to do this (still am) but Unity makes it really hard to access an audio plugin instance from a MonoBehaviour.
Are the second and third seaboard dimensions just like second and third aftertouches? Ideally I think the best option is for me to add these to the current single aftertouch setting so you could use a single Helm instance and just map those to modulate whatever params you want in the synth patch. I’ll look into this for the future.
I’ll have to try out that MIDI plugin as I’m thinking about adding full MIDI support in the future. Ideally, MIDI would bypass any MonoBehaviour script as I think it’s tied to the game refresh rate. Need to think on it.
Cheers, yes I already spotted the channel slider and used it for my quick 2-voice test.
I’ll bore you with that detail in a later post but I suppose the main reason I jumped to using multiple instances was because I didn’t see much detail about what the multi-polyphony is like in the helm synth. eg are any parameters (other than the obvious like initial note velocity) per note/per voice or do they apply to all voices that instance of the synth is producing?
Nice. Let me know how this goes and if you have any feature requests.
Aftertouch is the only per-note setting right now and you can change that after the note is played. That said, you would only get one dimension, e.g. pressure.
It should be pretty easy to support all three seaboard dimensions in a future release though. I’m using the JUCE framework in the standalone editor which is owned by ROLI, so they definitely make it easy to support the seaboard.
Cheers, yeah I just spotted that SetAftertouch accepts a note value so that all makes sense.
Cheers. Actually they go on about 5 dimensions but one of those is initial velocity. There is also lift, which I don’t use often, which is sent as midi release velocity. Moving finger left and right sends pitch (which is why pitch bend range is so large because you can bend across the full octave range of the keyboard), stroking a finger up and down a key sends cc74 by default although this can be changed to any other cc with newer seaboard block (but not with older seaboards). And yes, pressure after initial hit is sent as aftertouch, but it is sent as a midi channel aftertouch message, not a midi polyphonic aftertouch message. Most of this midi detail is only really applicable to the standalone/daw plugin version and whilst JUCE will certainly make it much easier for you its probably still quite a bit of work at this stage. And I don’t want to keep going on about this stuff on this thread as its rather a niche area and I already have a workaround that should be more than good enough for me for ages.
I’m planning on making a flexible version of this where you can load whatever patch you want from script. The dynamic patch loading isn’t difficult, it’s getting Unity to serialize non-native patch files. I’m still not sure how you are supposed to have files that don’t have standard extensions in your game.
Right now the only way to do this is have two separate audio mixers with different instances of Helm. Then switch the audio mixer group Output parameter to the other audio mixer group. The MIDI File Loading example does this so you could take a look there.