Custom Unit - Eight Singer - 8 step gate, pitch and CV sequencer

This started off in the Bump Scanner thread. I’ve made some tweaks and added some features. I think it’s starting to get kinda useful and developing it’s own quirky little personality, so I thought I’d give it a name and it’s own thread.

This is an 8 step sequencer with 3 outputs. Gate, pitch, and CV. Load it as a global chain.

Here is a video that covers how to use most of the features. One thing I was trying to show but not sure it came off in the video - you can go disable any of the outputs if you don’t need them to cut back on the CPU. E.g. if you wanted to just use this as a step CV sequencer and didn’t need gate and pitch, you can disable (or delete) those chains to give you some CPU back.

Eight Singer.lua (260.7 KB)

For those who were reading in the other thread, big changes are:

  • pitch CV sliders switched to V/O type controls - much easier to dial in the pitches
  • added second CV lane (linear faders)
  • added slew control to both pitch and CV
  • Added clock in and clock divider
  • Moved reset up to a top level control


All this needs is a way to shift the notes along a step at whatever rate (rotate them on a clock pulse), some randomisation and the ability to stop the randomisation and you would have a Turing Machine. My favourite of this kind of device is the Zorlon Canon mk ][ from The Harvestman - very similar in many ways!

I would be very impressed if you could somehow make this happen, I can’t think of a way to do it with the current units but would definitely make for a great Lua project!


Oh, just realised that the sample recorder could be used to ‘lock’ any sequences generated :smiley:

You always challenge me to go one step further, @anon83620728. :slight_smile:

Not a shift register, perhaps this is close enough. If you scroll to the end of the pitch section, there are now two more controls.

  • rnd amt (0-5) - Larger values = larger pitch variance.
  • rnd (trig) - fire this trigger to randomize the pitches to semitone quantized values. You can still tweak the individual pitches with their v/o sliders after randomizing.

Set rnd amt to 0 and trigger “rnd” to reset the randomizations to 0.

Also added a global transpose (xpose) control to the front of the pitch chain. Figured this is a good modulation point. This stuff added a little bit of CPU (really battling it with this, as it is definitely the kind of CU you want to have plenty left over for audio units and effects) but not terrible.

Eight Singer 1-1.lua (298.8 KB)


Hehe brilliant :smiley:

Definitely close enough, seems it’s just missing the morphing aspect of the TM, which sometimes is amazing,but a lot of the time I find it kinda frustrating, so this is probably better!!

1 Like

Feels like a nice add, so far. Cool to just sit here and hit random until a nice melody comes out. Wish I could do the same for gates and CVs but I fear it’s going to comsume too much CPU. This + evil twin is running right about 70%. Any way to overclock my 301? :slight_smile:


This is just plain awesome!!!


Excellent! Many thanks Joe (and Kel for the challenge for Joe to go one step further :grin:)


I know this is an old topic, but I’m excited to try this out. I was trying to think up how I can develop a Turing machine of sorts myself, but had no idea how to “lock” the loop. You went about this was completely different way!


…and sadly it’s not possible since it was pre-0.4.08 :frowning:
I should have known just by the date! Ah well.

Anyone know good options for a Turing machine that can “lock” in using something post 0.4? I have no problem generating random notes to a defined scale, but I can’t keep it once catch something I like…

I mean it’s not really a “turing machine” unless you’re using a shift register but the various loopers will record CV. Maybe just stick a dub looper after your random CV generation? Punch in when you want to add new randomness. Clock the reset with some division of your clock and quantize punching in to your clock with AND logic.

That’s a good idea! Thanks!

Have you tried renaming the file extension to .unit?