It’s one of the modules I use a lot, so I thought it was about time to get rid of the prototypes I have in my rack and build one that looks more like the real deal. I’ve taken all good things from the first 2 versions, ditched all the bad stuff and add some new stuff. That’s a lot of stuff.
In short, It’s a percussion sound generator, with a focus on metallic sounding percussion. Cymbals, hihats, tin cans, gongs, cowbells, … you name it, it’ll do it. It doesn’t really stop there, it’s able to create quite some unique sounding percussion elements, as well as some interesting drone textures. So it’s quite a versatile thing to have in your rack.
So, how does it work. The basic sound properties are generated by 4 square oscillators going through a logic XOR gate, combined with a noise generator and external inputs. The whole lot goes through a filter to shape the frequency properties and then through a voltage controlled amplifier – still following? I’ve drawn up a little schema to clarify the whole lot a bit.
4, very simple, square oscillators provide the basis for the sound generation. Instead of just mixing them, they are combined through a logical XOR operator. All 4 combined this gives a very harmonically rich waveform with a distinct metallic sound to it. Think in the direction of a ring modulator, but times 4. It’s not a novel idea, the famous Roland TR808 for example uses this exact same technique for its renowned cowbell sound, and where would the world be without it.
While the 808 had fixed frequency square oscillators, the ones here are user adjustable. All four can be tuned between 200Hz and up to about 16kHz after which they stop working, which is at once a great way of disabling them. Instead of complicating the design and interface by making them CV controllable I opted for an external input into the whole XOR mixing thing. That way you can still get the ‘dialling through the AM band’ sound if you like, without the need of more complex oscillator circuits. There is very little real advantage of CV controlling the oscillators as you’ll notice when playing around with them, an external input offers way more possibilities in a simpler way.
Besides the whole XOR story, there’s also a simple noise oscillator present and an external audio input. Nothing fancy there, but for cymbals and the like, a little noise can do wonders.
We have 2 stages here. A VCF, followed by a VCA. The VCF is nearly identical to the VCF-3 and offers HP, BP and LP modes simultaneously. You can mix and match those in any combination, so All-pass and Notch filters are possible as well. A band-pass filter is a good way to do more tin-can kind of sounds while the high-pass is the go to for hihats and cymbals. Low-pass comes in handy for gongs or more experimental sounds. You can even get a sort of ‘kick drum’ out of it.
The VCA is just.. well a VCA. A single decay control allows to set the decay time (with 2 modes, short & long). An AS3360 IC is used for the VCA because It conveniently packages 2 VCA’s in a single chip.
This is the part where most of the development time went too. Having a great hihat sound is one thing, but having it beating out 16th notes straight without intonation is just boring (unless you’re Kraftwerk, in that case it’s ok). Most drum machines have an accent function to solve this, but I wanted to take it up a notch, and since I’m the one developing the module, there is nothing to stop me.
Foremost there is decay time modulation. It’ll allows you to modulate the decay time via an external input such as an LFO. It’s done by controlling the drainage of the timing capacitor through a transistor used as a variable resistor. As a side effect, this linearises the decay time. Luckily our VCA can be also used in exponential mode to counteract this. Generally, you want a linear control signal into an exponential VCA, and the other way around. Or so I am told. So, now we have the open/closed hihat sound mostly covered.
Next up is a volume control. I wanted a way to enable some sort of control over the volume. However, this proved trickier as originally anticipated. Basically a very good case of ‘easier said than done’. We want to emulate the ‘drummer’ hitting the hihats with a different force. If we would just use the external CV as a volume control, the volume would change mid note, which isn’t how percussion works at all. You hit it with a certain force, and that’s it. To solve this, the incoming CV signal goes through a sample and hold circuit which samples the incoming CV signal when the note is triggered and holds on to that. This will keep the volume steady until the next trigger.
A little bit of scaling and offsetting later and the signal is ready to be used to scale the VCA control. I choose to use the 2nd part of the AS3360 to scale the control signal for the first part of the AS3360 instead of pushing the signal through 2 different VCA’s. Seems logical to me to do it that way taken sound quality into account, but since we’re dealing with noise and basically what can be described as digital noise I guess it matters little.
To make the velocity thing useful I implemented it in such a way that it allows one to use +5V to -5V signals. Where positive voltages amplify from the base-line and negative voltage lower the actual output volume. This will allow you to use LFO’s and other bipolar signals to vary note velocity.
Thirdly, there is CV control to the filter. An external input which reacts basically how you’d expect it to react and a modulation control which can go positive or negative. The modulation control uses a separate decay circuit from the main decay as it’s intended to emulate the ‘hit’, so it’s shorter with proportion to the main decay. I know, that’s a lot of extra components, but otherwise it turned out not to be very useful, and if it works correctly it makes a ton of difference in the range of sounds you can get out of this module.
It’s a very dense board with lots of components. I wouldn’t recommend this build for beginners. You need at least be confident in your soldering skills, you certainly need to be able to correctly identify components and know about their orientation when it matters, such as for diodes, Leds, capacitors, etc… A scope — even a cheap one from Ali Express will do — and a multi-meter are both necessary tools when it comes to trouble shooting your build. Then again, it’s all through hole so perfectly doable without any specialised tools. I also included info on the silk-screen on the back at some handy measuring points.
- The useful range for the decay potentiometer, especially in the short decay mode, is at the right side of the potentiometer. If you like the response to be more spread out, you can change the taper of the potentiometer by adding a 4.7k resistor between pin 2 & 3 of the decay potentiometer.
- The noise level might change depending on the characteristics of Q1 ( those modern day transistors are too damn good). If you find the noise level is too low to your taste you can raise the value of R19 ( currently at 1.5k ) to something like 10K to 15K. If you can, use a scope to check the level at the indicated spot on the PCB ( U5 pin 1 ), you can raise the value as long as you don’t see clipping occur in the signal. If you have a noise level that’s too high, lower R19 to 1K.
- Changing Q1 is also possible as a way to change noise characteristics (level and frequency content). Any NPN transistor can be used although a lot of current day transistors won’t generate enough noise to be useful. But if you have some different types lying around it can be fun to experiment with different transistors and see how the noise level and frequency content changes accordingly.
- All diodes are standard 1N4148 diodes.
Going over the deep end…
In the whole write-up above I hardly went into the specifics of the circuit. I plan to rectify this here for the more technically inclined and for whomever want to tinker with the design. So some interesting tid-bits about the circuit follow below:
The 4 main oscillators are as simple as it gets. A timing Capacitor (C) a resistor (R) and an opamp are all it takes. You’ll notice that at the high end of the frequency range things fall apart and the oscillator stops working properly, causing it to output DC at a certain point. The DC is no problem since we’re XOR-ing the output. as far as the XOR-output goes, the oscillator can be thought of as inactive, which suits our needs perfectly as it gives us a way to disable individual oscillators without having the need for dedicated ‘mute’ buttons.
Why this happens would take more math than I’m willing to, or capable of producing, but that’s not the point. It boils down that the slew rate of the TL074 and the time it takes to charge and discharge the timing capacitor becomes longer as the cycle length of the square wave, which is at 16kHz a speedy 0,0625ms. And lucky us, the whole thing craps out right where we want it too, at the top end of the hearing range.
The whole XOR thing is pretty simple, but it’s an interesting logical gate. 2 identical inputs (being it low or high) generate a low state and whenever there is a difference between both inputs, it generates a high state. A single CD4070 gives us 4 XOR operators. Osc A and osc B get XORed together, then C&D and the output of both get mixed in the 3the logic gate and the 4th is used to add in the external input. The nice thing about XOR is that it doesn’t really matter in which order the whole process goes, the output is associative, so the order of operations doesn’t matter. Math hu, weird things.
The external input is fed through a very crude comparator before entering the XOR mixer (or better called, the miXor) so it’s basically turned into a sort of square wave. I don’t think it’s really needed to make a square wave out of it, but some sort of buffer was needed and this was as simple as it gets. It makes for an adequate input for the XOR mixer and can, in a pinch, serve as a distortion module.
The noise generator is simple enough. A single transistor left floating will create some noise, which in turn gets amplified, a lot. In this case that’s done with 2 opamps to provide enough gain and some caps for filtering. Now it doesn’t take a genius to know you don’t need the best transistors for this, in fact, you need pretty crappy noisy ones. I’ve used a BC550 because it’s noisy, is easily available and I have tons of them around, but you can put in whatever you want. Different transistors will give slightly different noise sounds. It’s rumoured that the distinctive 808 noise generator used for it’s hi-hats had a production flaw which is responsible for the noise shape, hence Roland couldn’t re-make the 808 as non-flawed transistors gave a different, less pleasing noise sound. I don’t know if any of that is true, but changing the transistor does change the noise frequency content, so it can be a good occasion to pull out the box with old transistors and try out a few different ones.
The input stage got pretty complex due to the performance features of the module. There are a few tid-bits of note here. The decay time gets voltage controlled by using Q? as a variable resistor through which the timing capacitors (C? or C?) drain. As you’ll surely notice if you took a look at the schematics is that this is done twice. Once to control the Decay and once for the Frequency cutoff modulation. The reason for this is that using the decay CV didn’t had the usefulness I wanted. A shorter curve is far better in emulating the initial ‘hit’ of a percussive sound. Hence the circuit got duplicated. There are certainly other ways to do this, but it works just fine.
The velocity control is kind of a weird one as well. It’s designed to take +5 to -5 V. signals, where negative ones make the output go quieter, while positive ones make it go louder. So when nothing is connected to the jack, all is normal. A simple, yet effective sample and hold circuit samples the input of the velocity CV when a trigger occurs. I’ve done this this way to emulate more naturally how volume changes in percussion happen. That is, never mid note.
The output from the decay gets scaled by one of the AS3360 VCA’s according to velocity control’s input. The scaling VCA get’s it’s control signal from the sample & hold. Now the AS3360 wants a signal of 0 to 2V as its controller input so, some scaling is done to offset the signal by roughly 1,25V and prevent it from going too low or too high to not kill the only expensive IC in this build. I’ve tried doing this without utilising weird resistor values or trim pots. So obviously it won’t be ‘exactly right’, but throughout the testing phase it worked well enough for me. A slight synced LFO can really add a lot of feel.
That’s all folks
I think I’ve covered most of the interesting things, if you want some clarifications on anything else, just drop me a mail.