Ableton Live Amp on homemade drum loop

Tuff_beats

Just having a go with the new Amp plugin in Ableton Live, mostly for guitarist types, but some of the settings sound heavy on drums – couldn’t resist bunging some Space Echo in this as usual:

No Comments

Beginning CV/gate sequencing with the Arduino

Csqarduino_-_even_more_wires

I’ve been threatening to do this for ages, and since I gave up fixing my other CSQ-100 (after having got a blast of 240v up my arm), I’ve been having a go at creating a CV/gate sequencer with one of my Arduino boards.

The idea is to replicate what I most like about of the ancient Roland CSQ-100 sequencer – in that you can attach a CV/gate keyboard, play notes into it, and then it plays them out again when sent a trigger from an external source. It’s pretty much the same idea as the internal SH-101 and Pro-One sequencers. The CSQ-100 also does real-time recording, but I’ve never had much success with that. This is the one that works, plugged into an SH-5.

Csq-100

In my implementation, the synth (a slightly noisy MS20, in this case) CV and gate outs plug into analogue ins on the Arduino. When the Arduino boots up, it’s in record mode. Every time a key is pressed on the keyboard, the gate in goes low – the MS20 using a short trigger – and it takes a sample of the CV and stores it in an array. I’m averaging the voltage sampled over a few milliseconds, just in case. I’m also throwing away the first couple of results, because in the way I’ve got it set up, the analogue-to-digital converter seems to take a few goes to settle. This bit took a lot of swearing.

I can keep plugging away on the keyboard until it reaches my arbitrary limit of 32 steps.

When a switch is switched, it goes into play mode, and waits for a trigger, in this case from a TR-606 drum machine. The high tom trigger out from the 606 is wired to analogue in 0 configured as a digital in. When a trigger is received, an interrupt is generated, and on the next loop(), the Arduino sends a note voltage to the MS20 via a MCP4922 dual 12-bit DAC – I had some of these around after trying Mrbook’s MIDI Gakken SX-150 – and also a gate via a digital out.

So skip-to-the-end, here’s the MS20 (with a bit of noisy spring reverb and BBD delay) being sequenced by the Arduino – tuning is probably way off…

You can hear the filter being modulated in a regular way too – I added a pot on one of the analogue ins and used that to store another CV along with note CV.

While I was at it, I also wired in a pot for note length, and a switch for legato – here’s a demo of the legato feature:

Hoohah. The great thing is that it’s so much fun to play with – I can stab in a bunch of keys at vaguely random and something interesting usually pops out, it’s a happy-accident generating machine. (Except when I put a video camera on it, of course). Even if it’s not quite right, I can use the triggers on the 606 to rearrange the rhythm of the pattern. The nice thing about it too is that it naturally works with 1v/oct and hz/v control voltages because it’s not translating the voltage into a note value, as the CSQ-100 does, but this has the downsides of not allowing for transposing the pattern from an external keyboard and there being more information to store.

Since all then, it’s got rather worse/better:

Iphoto

I’ve haphazardly added more wires to it in an attempt to make it look really very technical – including an LED display for that definite you-won’t-get-me-through-Customs look, and single LEDs for play and record mode and the first beat of a bar. It also does pattern rotate, something I loved from the x0xb0x SokkOS. With a bit of fiddling I set up a toggle for the edit mode, flipping between insert, append and overwrite – the latter of which is great fun when it’s running, being able to play in notes and have them appear straightaway in a fixed length sequence.

Also I’ve bunged in a simple one pattern storage facility. I’m using the Atmega328 version of the Arduino, which means a massive 1k of built-in EEPROM storage. The slightly inefficient way I’m storing data only gives me the possibility of only storing 5 x 32-step patterns across power down. I could use an external EEPROM but I’m virtually out of pins – possibly with a bit of re-arranging I might just be able to. External EEPROM or not, this is still one pattern better than the -100s bigger brother, the CSQ-600. (Speaking of which, there’s a CSQ-600 on Ebay currently at – yelp – £230..)

I’ve not sorted the pattern change process yet, which is an interesting user interface problem in itself – I like the pattern chain facility on the x0xb0x, but it means lots more buttons. Which means even more wires.

Here’s a video demo of the thing in action.

I record four notes into it at the beginning, then kick it off. In the first bit I switch the pattern into reverse, and use the pattern rotate to alter the start point. Then I start recording notes into it as it plays – it stutters slightly – and use a switch to record a note with legato, which sounds pretty close to a slide, although it shouldn’t be. Also I’m recording control voltages for the filter by twiddling that silver knob as I record – should hear the effect of the VCF being modulated at about 2:15. And the bloody makeshift facepanel really wants to fall on the floor. At 2m22 it goes all farty ‘cos I load a saved pattern with a much lower filter setting.

There are a couple of problems – the gate output is only 5v, so I doubt it’ll trigger ancient Roland gear like the SH-5 and System 100 which need at least 10v, although I’ve had it triggering an SH-09 happily. I guess I could build a simple x2 amplifier circuit to boost it for those synths if it doesn’t work.

Because the CV range is only 0-5v, I’m rather limited when it comes to Hz/V synths, where the v oltage required for each further octave doubles. I get just over 2 octaves with my MS20 before it tops out at 5v. I could try halving the voltage before the ADC input and then doubling after the DAC output, but I think I’ll just be magnifying inaccuracies in my cheap DAC, which after I read Paul Schreiber’s DAC FAQ, now think probably isn’t worth it. I’ve not checked the tuning, I expect it’ll be out – a lookup table of voltages for notes could help here.

One thing I was pleased with – once I’d taken out a few errant delay() statements, timing seems ok – here’s a picture of the TR-606 trigger pulse at the top (which is 20ms long) and a click from my SH-101 at the bottom, envelope set to fastest possible attack and minimum everything else.

20100914-e7ice3785b6uamsbjuxnu

…so I’ve cleverly missed out the scale on this, but it’s not bad. Having said that, for some reason the MS20 always wants to trigger 7ms late, which has been driving me round the bend, but I’m guessing it’s something to do with the state of the trigger out. Here’s a picture of the timing problem – MS20 is on top, 606 hat on the bottom.

20100914-dk1ygf91w6ddeaag5nf14

Given that the SH-101 triggers so well from positive gate voltages, it might be worth leaving the gate out as a positive voltage gate and convert to a short trigger by using an NPN transistor, as outlined over at Doepfer. Seems a bit of a shame though.

At some stage I need to nail it down before it takes over my room. I’d really like to add extra trigger outs per note like on the Roland MC-4, a button for randomising the order of the entered notes, loading and saving to multiple patterns, pattern chaining, and DIN sync in as well as the existing trigger in. I’ve been trying to breadboard a 303-style glide but not had too much success so far – shame ‘cos I love that slide.

It’s really a testament to the design and community behind the Arduino that an electronics newbie like me can pick it up, and over a few weeks, build something really useful. Once the Arduino sketch is in some sort of usable state I’ll bung it up on Github or something.

6 Comments