Drum Ops

Edit: these were accepted and merged. They will feature in the mainline teletype firmware when there is a new point release.

Hi everyone! I’d love to share a new set of Teletype OPs I’ve been working on. I’m sharing to gauge interest and to seek feedback before going through necessary steps to open a PR. I’m quite happy for these to stay on my own branch, but I’d also like to give back to this great community if you think there’s a place for them in the master firmware. The changes are currently sat on a branch.

They’re a set of Drum Ops, loosely related to ER and NR. They function in largely the same way but operate differently. When the functions are used together they give you the power of a souped up MI Grids with different (and more) patterns and rhythmic possibilities.

Audio Demo

I’m very happy with the overall effect. Here’s a clip of me manipulating the helpers in pretty much the most basic way possible. I’m just switching the patterns for each drum periodically.

The OPs

NB: They probably don’t stick to teletype op naming conventions closely enough right now but I’m willing to do the work to get them into shape if there’s a desire for me to do so.

DR.P - Drum Pattern Helper

prototype = DR.P b p s

b is the drum bank (0-4), p is the pattern (0-215) and step is the step number (0-15), returns 0 or 1

The drum helper uses preset drum patterns to give 16-step gate patterns. Gates wrap after step 16.

There are five banks of preset drum patterns:

Bank 0 is a mostly random set of gates increasing in density at higher numbered patterns, where pattern 0 is empty, and pattern 215 is 1s.
Bank 1 is bass drum patterns.
Bank 2 is snare drum patterns.
Bank 3 is closed hi-hats.
Bank 4 is open hi-hits and in some cases cymbals.

Bank 1-4 patterns are related to each other (bank 1 pattern 1’s bass drum pattern fits bank 2 pattern 1’s snare drum pattern).

The patterns are from Paul Wenzel’s “Pocket Operations” book: https://shittyrecording.studio/ (Yes, I typed them by hand. Yes, it took ages. @pwenzel I hope you don’t mind - some money was donated to Tree Trust for the usage).

DR.V - Velocity Helper

prototype = DR.V p s

p is the pattern (0-9). s is the step (0-15)"

The velocity helper gives velocity values (0-16383) at steps. The values are intended to be used for drum hit velocities. There are 16 steps, which wrap around.

DR.T - Drum Tresillo Rhythm Helper

prototype = DR.T b p q l s

b is the drum bank (0-4), p is first pattern (0-215), q is the second pattern (0-215) and l is length (1-64), step is the step number (0-length-1), returns 0 or 1

The Tresillo helper uses the preset drum patterns described in the drum pattern help function in a 3, 3, 2 rhythmic formation. In the tresillo, pattern 1 will be repeated twice for a number of steps determined by the overall length of the pattern. A pattern of length 8 will play the first three steps of your selected pattern 1 twice, and the first two steps of pattern 2 once. A pattern length of 16 will play the first six steps of selected pattern 1 twice, and the first four steps of pattern 2 once. And so on. The max length is 64. Length will be rounded down to the nearest multiple of 8. The step number wraps at the given length.

Explanation of the audio demo above

Pam’s is triggering scripts 7 and 8 with a little bit of swing.

In script 8, separate faders are assigned to change each preset pattern for Bass Drum, Snare, and Closed/Open Hi-Hats. A Verona DRM1 is triggered via I2M but any eurorack module could be used using triggers as usual. Velocity helpers with different patterns are applied to the snare and hi hits.


In script 7, the pseudo-random bank of triggers are being fed through the tresillo function to trigger the clap. Two faders have been set to change the preset for each part of the tresillo. A third velocity helper is applied to this.


In the audio clip I’m just manipulating the faders, changing the patterns. I haven’t yet experimented with probability, logic, switching patterns programmatically, and all the other things teletype would allow.

Thanks for reading to the end! Feedback welcome.


I love this! I think this would be a great addition to the Teletype language.

I haven’t been scripting much on my Teletype in the past couple years, so I’m not super up-to-date on naming conventions, but maybe one bit of feedback is that D as a prefix feels like it would relate to the variable D – maybe DR or something else would be clearer?


Super cool! Going to give it a try when I can. If I just wanted to step through a pattern, I’d increment a counter, look up the step, and if it’s a 1 I send a trigger? In the pic it looked like A is set to 0 each time in the first line.

1 Like

In the pic it looked like A is set to 0 each time in the first line.

Sorry - that’s probably my hastily written teletype code causing confusion. In script 8 A is assigned the value of O (the variable O, which auto increments when accessed - it looks a lot like the number 0, I agree). Basically triggering script 8 progresses the step by auto incrementing O and assigning to A for both script 7 and 8 to use as the step value in the Drum Ops.

1 Like

thank you for sharing the hex! i was just going to ask about it :slight_smile: looking forward to playing with it tomorrow :partying_face:

1 Like

I’ve had some great feedback. I’ve implemented the more urgent items.

  • Step numbers are now zero indexed (0-15), in line with ER and NR.
  • Bank 0 now has 215 patterns of pseudo randomness, bringing the pattern size in line with the other banks.
  • The velocity helper now gives values at the full 14-bit teletype range, assuming CV outs to be the default use-case. They can be scaled to midi cc values by using the scale op or dividing by 129.
  • Op names are now DR.T, DR.P, DR.V

teletype.hex (778.9 KB). I’ve given it a go on the simulator and a quick try on my teletype and it seems ok.

Last edit:

Thanks all - I think the above hex is pretty much good to go. Please let me know if you find any issues (or if you’re just having fun!!), or there’s any further feedback. I’ve created a PR here.


$ 5
A SCL 0 16383 0 215 IIQ 9
B SCL 0 16383 0 215 IIQ 10
C SCL 0 16383 0 215 IIQ 11
D SCL 0 16383 0 215 IIQ 12

IF DR.P 1 A X: $ 1
IF DR.P 2 B X: $ 2
IF DR.P 3 C X: $ 3
IF DR.P 4 D X: $ 4

Scripts 1-4 trigger drums

Fun OPs! I was using teletouch sliders (IIQ 9-12) to select patterns. It seemed like banks 3 and 4 had blank spots for patterns. I’d pull the slider down and there sometimes wouldn’t be a pattern playing out. Did you put in all the patterns sequentially as they’re listed in the Pocket Operations PDF? :slight_smile:


Haha that sounds great. Nice

Yes, they’re sequential so you can link the related patterns across banks easily. It does mean there are blank spots though, which is a drawback. A mechanism to exclude the blank patterns would be helpful I expect.

Ahhh I see! I’ll scale banks 3 and 4 to a select range next time to fine tune my sliders. That should solve the problem. Makes sense now that I look through the PDF because many of the patterns don’t have open hat trigs. Cheers

Damn what’s that massive bass drum sound that comes in around 1 minute in?!

all sounds were drumcrow, the bass sound was a triangle wave with the frequency envelope hitting the bitcrusher as well iirc <3


Oh my – I was not aware of Drum Crow at all… this is a game changer :sweat_smile:

1 Like

Currently having an immense amount of fun using conditional trigs on an Elektron machine to sometimes switch patterns on specific steps. This could easily be achieved only on the TT of course.

For example - shuffling the hi-hat pattern so that on steps 0&1, 4&5, 8&9, 12&13 it plays one bank 3 pattern, and on steps 2&3, 6&7, 10&11, 14&15 it has a 50% chance of playing a different pattern on those steps. The velocity helper keeps everything tied together into one shuffling groove.


This is really cool!
Just saw your post now – congratulations and thank you for your contribution. Looking forward to have this in the main TT firmware.


Had a blast tonight with these new ops.
some audio
some video