Communicating Synthesized Sound Design Patches

I think it would be useful to have some universal language when it comes to sound design, many simpler patch designs are capable of being played on a variety of synths. Of course, each synth has potential subtle differences, but the goal here is to share and describe sounds in a broader more universal sense. For example, sheet music does not predict the various tones and timbres of instruments, and often times there is some randomness in regards to expression and timing. Regardless of this, we still can recognize a written piece given these variances.

I decided to devise a potential system to communicate patches universally. Perhaps this has been done before or better, my goal isn’t to dictate how things should be done, but to simply give it a shot and see what I could come up with. I doubt this first attempt will be particularly useful, I believe there are many unpredicted flaws in this system.

My first though was to separate controls and modulation. Controls would be listed as destinations, and modulation sources can target these destinations
I think some universal language is likely necessary for a system like this to work. For example “LFO” could be followed by a numeral if multiple LFOs are involved in a patch
Some standard wave shapes and oscillator types could be assumed as well. I also decided to use color to differentiate sources and destinations visually, as well as universal language which I am reffering to as “keywords”.

[name] destination: the name of any given control, followed by its value
(name) source: the name of a modulation source, followed by the modulation depth of that source
% modulate: a [destination] followed by “%” is being modulated by a (source, and its value)
+-: bipolar modulation
multiple lines can denote multiple sources targeting a single destination
modulation is only applied to the nearest above [destination]

values are presented from 0-100 being a percentage of the control’s range
universal values such a tempo sub divisions, semitones, ratios, or hz can be used in place of control values
universal values will always be labelled appropriately
common shapes, control names, and filter types will be given universal keywords

 

for example:

[Osc Frq, 100 hz]
[Osc shape, Saw]
[Cutoff, 50] % (LFO 1, +-25)
% (KT, 100)
[Resonance, 30]
[LFO 1 Speed, tempo=1/4]
[LFO 1 Shape, Sine]
[Volume, 0] % (ADSR 1, 100)
[ADSR 1 Attack, 0]
[ADSR 1 Decay, 30 ms]
[ADSR 1 Sustain, 50]
[ADSR 1 Release, 30 ms]

which could also be listed as such without colors:
[Osc Frq, 100 hz][Osc shape, Saw][Cutoff, 50] % (LFO 1, +-25)% (KT, 100)[Resonance, 30][LFO 1 Speed, tempo=1/4][LFO 1 Shape, Sine][Volume, 0] % (ADSR 1, 100)[ADSR 1 Attack, 0 ms][ADSR 1 Decay, 30 ms][ADSR 1 Sustain, 50][ADSR 1 Release, 30 ms]


 

This patch would require an saw shaped oscillator, tuned to 100 hertz, into a filter (assumed lowpass by default)
with the cutoff control set to 50% of the controls range and resonance of 30% of the control range.
The filter cutoff is being modulated by a sine wave LFO with bipolar modulation at 25% of the modulation range.
This LFO is cycling at 1/4 the project’s BPM
The cutoff is also being 100% keytracked (assuming KT is a universal keyword for Keytracking)
A volume value of “0” is assumed -inf db, a volume range up to 0db is also assumed,
so 100% modulation would be from 0db down to -inf db
In this case we are using ADSR 1 to modulate the Volume through this range
There is no attack, both decay and release are set to 30 ms, and sustain is at 50%

Issues:

I feel like a better system for volume is possible
As well, the mixture of value types can cause confusion, while percentage based values will work for any given synth,
if the patch is meant to be universal, universal unit types are preferred
50 Percent of the cutoffs value could be a wide range of “hz” values depending on a synthesizer’s cutoff range
Resonance, on the other hand, does not quite have a universal unit value.
Perhaps “100” could be assumed to be the point of self oscillation?
In this case a symbol or keyword would be necessary to differentiate this universal range from the synth’s range (values over 100 would be possible here as well)

These are just my initial thoughts on a system like this, I’m curious how useful this could even be. I imagine making more complex patches using this system, perhaps even a patch bank that could be used on any synth with the applicable controls. I fantasize about this system, especially if we assume some universal keywords, being a potential text based patch system for various synthesizers. I’m curious what other sound designers think about a proposed system like this.

Next
Next

FORMANT: free formant shifting effect