Form and Void
MPE Synth. Formants, and then it gets weird.
We can do flutes
Sad trombones
And whatever this is
…along with a pile of other stuff.
The extra-cool thing about this script is that any parameter you map to a CC on the MPE “main channel” in the Norns interface also gets mapped in an MPE way to the other midi channels.
This script started when I was in the Isolation House to keep my family from getting covid. I felt fine, and I wanted to do some norns dev, so I started porting the exellent minim Teletype script by @modularbeat to norns (forthcoming). Anyway, there I was without a crow or a midi adapter in sight, wanting to hear the result of this sequencer I was porting, so I decided to write an engine. Eight hours later I had the beginnings of a mod matrix, and it was no longer “just” a simple engine so I could hear the chords and the arp from minim with different timbres.
Anyway, this synth works by taking grains of sine waves and 2-op FM of sine waves and playing the individual grains at audio rate. The frequency content of the grains determines the formant frequencies of the sound you hear, and the frequency at which we play them is the fundamental. The length of the grains determines the “sharpness” of the formant in frequency space. You specify two formants, and the relative presence of the two formants and the fundamental in your final sound.
Formant 1 is 2-op FM grains. You can determine the frequencies of the carrier and modulator, and the FM index.
Formant 2 is just a sine… but it can phase-modulate the fundamental directly.
The thing about doing FM with little grains of sound played synchronously at audio rate like this is that unlike standard FM, where you can easily get clangorous tones, everything will always stay harmonic in Form and Void. Sorry, look elsewhere for clangor.
Requirements
Norns, midi controller or other midi sender thing. Should work with any ol’ midi controller, but it’s best if your controller does MPE or at least sends pressure messages.
If you’re using a Linnstrument or other fancy MIDI controller, you might want to find the setting to slow down the rate of messages just a tad; I found setting the message delay to 320us or so completely eliminated my stuck/missed note problem.
Documentation
Use E1 to change between screens.
The formant screen helps you see what each wave of your sound is going to look like.
E2 and E3 control the two formants. Without keys, they control the frequency. Holding K2 they control the amplitude of the formant; holding K3 they control the number of waves per cycle.
The modulation screen helps you design the modulation sources for your sound
You get two envelopes and an LFO. Use K2 and K3 to cycle through params to edit; E2 and E3 each edit a parameter.
The matrix screen helps you set up how your sound is modulated.
(I promise this looks better on the norns screen; the gamma didn’t translate right to PNG) Anyway there are a bunch of little angle-y doodads that show you the modulation depth of each thing in the matrix. On the top are the destinations: fundamental, amp of fundamental, formant 1, amp of formant 1, fm index of formant 1, formant 2, amp of formant 2, fm index of formant 2.
The left side are the sources: envelope 1, envelope 2, the lfo, and the MIDI pressure/aftertouch messages.
Use E2 to select a cell in the matrix, E3 to adjust it. K2 will zero it. Hold K3 to make fine adjustments.
There is a little bit more in the params menu, but not much. I do want to call out the anti-aliasing setting — I made the default to have anti-aliasing on, but you can sure play more notes if you turn it off. I was very proud of figuring out what was making that godawful sound that was very evident above C5 or so and how to mitigate it.
Download
;install https://github.com/sixolet/formandvoid
in maiden.