Electronic music - modular DIY - Learning from existing devices
Multiples (mults) and mixers
Passive multiple
Switched passive multiple
A switched passive multiple is one of the most basic routing trick you can pull.
Consider a socket wired to a three-position, on-off-on switch. These switch the middle pin to one side, to nothing, or to the other side.
Now consider a bunch of those, with
- each middle position wired to a socket
- the sides wired to the same side of other instances of that socket-and-switch
What you have just made is a multiple that you can switch to two different buses, and can switch off.
https://youtu.be/nDyEjh-dviU?t=245
It does still have the issue of outputs driving into each other,
and it may be slightly less obvious what is combined when.
So you probably want to consider making a safer active version of this, where some of them are inputs and some of them are outputs.
Active multiple
Conditional multi
Basically, an input is connected to an output only if a gate signal says so
- it may be easy to add an inverted gate input as well
- and a manual pushbutton if you care
This is, in theory, just a transistor.
Which also buffers that input, so you can make a safer "OR".
There are footnotes to 'just a transistor', and there are different upsides and footnotes to alternatives like a 4016.
Buffered mixers
Basic DC mixer
LFOs
STOMPLFO (Electric Druid)
Inputs:
- tap tempo (Gate)
- pitch (CV)
- waveform (CV)
- depth (CV)
- offset (CV)
Outputs:
- 12-bit ~32kHz signal (PDM)
- waveforms with an LFO rate in the range of 0.05..25Hz
https://electricdruid.net/product/stomplfo/
https://electricdruid.net/datasheets/STOMPLFODatasheet.pdf
TAPLFO 3C (Electric Druid)
https://electricdruid.net/datasheets/TAPLFO3Datasheet.pdf
VCLFO 10 (Electric Druid)
https://electricdruid.net/datasheets/VCLFO10Datasheet.pdf
CGS21 Super Psycho LFO
40106 hex schmitt oscillators - no CV control, just a bunch of slow changing things for cheap.
https://www.elby-designs.com/webtek/cgs/cgs21/cgs21_super_psycho.html
DIY LFO
Arduino LFO:
Envelope generators, VCAs
ONESHOT (Electric Druid)
Envelope generator notes
Envelope generators, a.k.a. transient generators, create a curve of a particular shape.
There are many types. ADSR was a great balance in ease of implementing and decent approximations of what a lot of natural instruments do, amplitudewise.
It was also made fairly early-days, so once once it appeared, it became so common that envelope generators and ADSR were and still are near-synonyms.
ADSR
The ADSR has four stages, four settings:
- Attack time
- Decay time
- Sustain level
- Release time
Note that analog ADSRs usually had D and R falloffs based on RC circuits,
meaning they are exponential falloffs, not linear as often shown in diagrams.
You won't consciously hear that difference, but it seems exponential falloff for decay and release sounds slightly less mechanical than linear, and while linear falloff is easier to implement digitally, exponential falloff is also frequently implemented.
For example, the SID chip does a piece-wise approximation of such a falloff.
(And yes, you can get a nonlinear VCA to interpret linear envelope, but it's messy in terms of levels and would also apply to attack, where you may not want it, or want it the other way (verify))
Simpler-than-ADSR variants
You can omit parts of the ADSR, and most of the possible simplification exist somewhere
- ASR / ASD
- attacks to the sustain level (and then holds it as long as it's gated), and releases
- i.e. skips the delay-from-peak-to-sustain
- ADR
- basically ADSR without the sustain level being settable
- e.g. on the Yamaha GX1 [1]
- AD
- sometimes just a pulse (because no sustain)
- sometimes actually refers to ASD/ASR
- The difference between AD and AR, and ASD and ASR, is inherently fuzzy in practice
Some of these simpler ones also come from simple schematics that can do AD/AR, AD/ASR, or such.
More-complex-than-ADSR variants
Note that synths are not fully consistent about what these mean, so while the acronym is probably a good guide, check the manual for details.
- AHDSR, adding a fixed/configurable time to hold the max, before decaying to the sustain
- e.g. on the Korg MS-20
- and further combinations, like DAHDSR
- ADSHR, adding a fixed/configurable hold time after release
- e.g. on the Korg MS-20
- and further combinations, like
- DADSR Delay, Attack, Decay, Sustain, Release ()
- i.e. a small delay before the attack
- e.g. on the Prophet 8
- DAHDSR (where the first D is a delay before the attack, and H is a peak hold(verify))
- ADBSSR: attack, decay, slope, sustain, release (6 parameters controlling 5 stages)
- slope being slope up to sustain level (after the decay)
- e.g. on the Korg EX800
- Uses over ADSR is mainly sounds with an initial pulse (with short attack/decay times)
Envelopes are often explained in a "I want to go to max/sustain/min level in this amount of time", but that isn't necessarily how they are implemented.
Implementations are also frequently rate-based, e.g. analog ones where you essentially control the rate of charging.
Once we had digital envelope generators, it was easier to move beyond the trapezoid shapes of ADSR.
In digital synthesis, rate-and-level envelopes (like in the Casio CZ series, the DX7 and similar) are also a thing, which specify how much to add per interval and until what value - basically counters.
These may additionally vary in what new notes do when in what stage - sometimes from specific choices and sometimes from limitations.
This seems mostly because if you have a clock running this is simple (just add/subtract, and compare).
It's not the only (or most natural) way of doing it, though - e.g. counters often mean linear decays, which isn't the most natural. E.g. even the SID's digital envelope already approximates exponential decay with piecewise linear segments.
Consider DX7's Envelope Generator
- eight settings, four stages
- think of these as a level you want to reach, and how fast you want to reach them.
- 'how fast' in terms of slope, not time.
- Smaller slope means longer time (which is also turning the rate knob left is longer, counterintuitively)
- implementation is roughly "while not at level, add rate"
- you can make ADSR envelope with this, but also e.g. a quick pulse and a swell
- if you're playing with this on dexed, know that the plots are exhaggerated rather than accurate(verify)
- Roland Alpha Junos
- five stages
In software of the DAW kind there are even more arbitrary envelope shapes, just because we can.
http://en.wikiaudio.org/ADSR_envelope
http://synthmuseum.com/magazine/linexpo.html
Gates while you work
ADSR DIY
Envelopes and subtler expression
ADSR only takes a boolean gate input, being on while a gate is high. After all, it is an envelope generator's whole thing to make something stupidly simple into something expressive.
If you have a velocity sensitive pad that sends you how much pressure is on it (from a MIDI perspective, aftertouch all the time), this begs the question how this should be translated to envelope.
Directly makes slow release or fast attack your precisin problem, though, which you usually don't want.
So while velocity sensitivity sounds complex, but in a lot of cases you can pretty much gate it as before, and have the velocity control the sustain level.
Further features, and non-ADSR envelopes
Audio amplitude utilities
VU and/or peak LED
envelope follower notes
Sidechaining
Trigger/gate utilities
Gate delay
Gate in goes to gate out -- after some delay that is configurable.
Pot already goes a reasonable way. Possibly CV.
https://www.youtube.com/watch?v=lHZy4m9qWWA
Sequencers, rhythm (master or derived), and other triggerers
DIY: Baby 10 / Baby 8