Sunday, 29 December 2013

It now has a stereo delay

There's separate left and right feedback amounts and left and right delays, and a LPF in the write path into the delay line so things can get controllably muddier as the feedbacks bounce around. Which sounds pretty great, and is virtually zero cycles. After the delay is the mellotron's reverb unit, which is a few cycles too many for my liking, but heck, it needs a reverb unit to give it some space.

If after all this I can get a reliable 6 note polyphony out of it on the Pi I'll be happy (although I really, really want 8 ...), as a stereo delay and a reverb with 6 notes will make a quite brilliant guitar synth. On which subject my office is filling up fast with guitar-shaped MIDI controllers, so I'm looking forward to pushing those into it to see how playable it is.

After some quick listening tests today via the timeless magic of 'Fox on the Run' I can say that it is not quite as deglitched as I would like - I occasionally heard clicks on note on events. Clicks are the bane of my life, at least on this project. And the mellotron had its clicky moments as well. Also it can definitely be persuaded to alias. The evil little sod. I put in *so* much work into it, to try to get the damn thing to not alias, and this is how it pays me back. The git. But on the plus side, the hardsync works and sounds good if you are sensible with the relative range of the oscillators - I found that shifting OSCB up by a minor third and hardsyncing it sounded pretty neat. The 'PIANAforte knob' (a.k.a 'Phil's 35p version of Brute Factor') is effective at making it sound ugly and overcooked, and once I remembered the difference between FINE and COARSE pitch control I managed to induce some lovely detuning and movement via an LFO, and it all sounded pretty sweet, if I say so myself.

Re. the difference between COARSE and FINE pitch modifiers - I shall write this all down AGAIN. I do need to remember this, because I keep getting it wrong ...

There are mod matrix outputs for FINEA, FINEB, COARSEA and COARSEB. FINE values are in the range -1 to +1 and yield a semitone of down and up bend at these limits. COARSE are different, they are explicitly multiplicative, and are clamped for safety into the range 0.5 to 2.0. So if you want a coarse change of 1 semitone up, you need to get this mod output to drive a value of 1.05946 ... and to induce a perfect Pythagorean fifth of uplift in OSCB, you or I need to set its COARSEB to 1.5. This is easily done by setting its mod equation to be ABC+DE, with arguments 1,1,1,0.5 and 1 to yield 1*1*1 + 0.5*1. Magic, eh? And then on top of that, a small wobble in pitch driven by an LFO can be generated by setting FINEB to +-1/9th semitone via 0.33 * 0.33 * LFO1 + 0*0 - remember, signed -1 to +1 rather than multiplicative. The final multiply (which is pitchwheel * fine * coarse * feet) is sorted out within the guts of the mod matrix.


  1. Here's another tweak I stuck in today. I'm finding that the cutoff / resonant frequency of the filter is always in the wrong place, octave-wise. Sticking the cutoff frequency at the fundamental eliminates all those lovely harmonics, they just get filtered out, particularly aggressively as it's a 4th order filter. So I have modified the mod matrix so that the frequency the filter thinks I am playing is based on an oscillator setup of 8 feet. So, if I set OSCA to be at 8 feet, the resonance is at the fundamental. But if instead I set it to 32 feet, then the resonant peak is 2 octaves above the fundamental, and the harmonics can escape the filter and sound great at the same time as the filter adds its resonant magic. So down in the bass notes I get squelch and bite and sizzle.

    I don't know if this is novel or not, but I'm sticking with it as it means I can get the filter to sound good without having to use up a precious temp in the mod matrix to store FREQA * 4.

  2. I do think the feedback path in the stereo delay needs a high-pass filter to kill anything below around 100 Hz, it can get boomy as those thing accumulate. Although I'm wary of all these filters, the cycle counts are going to stack up.