[cheat codes 2] (rev 220524: LTS6.2)

Awesome thanks! I think I’ve got #1 down. However, I think I didn’t explain number 2 quite right: all the patterns are playing back correctly and looping the way i expect, but they’re not in sync with each other (and not in sync with the “1.3”, “1.4”, “2.1” etc in the top right on the “timing” page). I’d expect e.g. a1, b1, and c1 to all start together on “1.1”, then move to a2, b2, and c2 together on the next beat, etc.

A bit unrelated, but: the playback also isn’t “smooth”: there’s a slight volume dip as it transitions from one pad to the next, sounding a bit like a time-synced tremolo. I don’t have any envelopes on my pad’s levels or anything

hi @dan_derks I was dreaming of a Cellular Automata based pattern or any other evolving pattern…


ah yes, timing is synced to the 1/4 notes only, (far as i can tell). so when you make a random pattern, it’ll start in the next beat or two… dan has done amazing things to get it super tight and keep it simple. after making patterns i usually stop the pattern and restart. but this is part of the amazingness of cheat codes. you can get all patterns to start and sync solidly if you want to… but you can experiment in between the spaces too. offsetting things with each other, while still be time accurate… or not synced at all. it rules. i think there are plenty of things out there to loop and chop on beat… but to me cheat codes is an experimental beast… not just a 3 voice loop chopper. if you can make it do that… get it… but it might be a workaround type of thing?

1 Like

Hey hey,

I’ve been busy for a while but it is almost done. I’ll try to check today that everything is working as I want. There’s three encoder that controls the filter cutoff per bank that will work once Dan releases the new update, so I’ll keep it there anyway.


woahhh lots of new energy!! thanks for keeping the place warm overnight :slight_smile:

just to circle back on some of these great q’s:

on grid, ALT + the second pad of zilchmo row 4 will auto-chop

  • if a pad is pointed to a prerecorded clip or a Live segment at the full range (so, the start and end points of the Live recording are set to full duration): cheat codes will distribute all 16 pads to an even sixteen-part split of the source audio
    • so, any pads pointed to the full-8-second Live segment will autoslice to 0.5s slices (8 / 16)
  • if a pad is pointed to a Live segment with a truncated range (so, your segment’s start and end points are not the full duration available, but an N-beat division or something): cheat codes will distribute all 16 pads to an even sixteen-part split of the range of the Live segment
    • so, if I have a Live segment whose PARAMS > loops + buffers > rec loop enc resolution is set to 1 bar at 91bpm:
      • the Live segment will be 2.637s in duration
      • any pads pointed to this Live segment will auto-chop to multiples of 0.1648s (2.637 / 16)

two ways to do this that don’t involve co-opting random patterns at all:


  • for the bank which you want to auto-advance pads, set k and n equal to each other (try 16 for this experiment)
  • then hold K1 and use encoder 2 to change the mode from single to span
    • this will auto-advance the pads, 1 to 16, in a clocked loop
  • expanding from this: if you set k and n to not-16, like 7, press K3 to swing over to the r and +/- options
  • as you change +/-, the “start point” of the auto-advancement will increase or decrease, which is a great way to get windowed clock-synced loops of pad sequences
    • if you hold K1 when you’re on the +/- side of the screen, you can also set an auto-offset! this way, you can have the “start point” also auto-advance :slight_smile:


  • for the bank which you want to auto-advance pads, navigate to PARAMS > patterns + arps > arp x hold style and change it to additive
  • set the rate of the arp to 1/4 (use K3 on the arps page’s first setting, which is rate)
  • turn on the arp (from grid, it’s the first pad to the left of zilchmo 2, or to the right of the “pad loop” toggle)
  • hold pad 1 and press the arp button again to latch the arp in “hold” mode
  • release pad 1 + every subsequent pad press will be sequentially added to the pattern. try adding all 16 pads, just by tapping each one sequentially.
    • use E2 on the [arp] screen to navigate down to s and e and you can use K3 to adjust the start and end points of this arp
    • this is a really fun way to sequence pad advancement on the fly!

i’ll follow up with a quick overview of why your patterns weren’t starting at the same time (and how to get them to), but since these two features of cheat codes were built for exactly the purpose you’re describing (auto-advancing pads), i think they’re a better fit for your use case :sparkles:


Yeah, just better do it now.

Despite being a product developer, I made this layout thinking of what I’d like to use personally. To change things around to fit your performance and level of control desired is encouraged.

Unless I get more time in the future, I won’t update the iPhone layout for now. You may use this layout as guide for OSC messages and inspiration.

A few notes on PADS page:

  • Pattern recording Start and Stop doesn’t work through OSC. I’ll be probably implemented later on so I leave it as placeholder.
  • Filter cutoff will be supported with the next CC2 update. It works as an encoder and it’s pretty neat!
  • Random Pattern does work, to erase it press ALT + Stop.
  • ALT + Loop toggles loop on/off for all the pads in the bank.
  • ALT + Rate sets the rate for all the pads in the bank.
  • ALT + Pan sets the pan for all pads in the bank.
  • ALT + Level sets the level for all pards in the bank.
  • Push rec# records the buffer while is pressed, while L# toggles recording it on/off.
  • ALT + L# or push rec# erases the buffer
  • CHOP splits the pads evenly amongst the loop length

On DELAY page:

  • Reverb settings are Norns global parameters. Reverb being input softcut (sample engine) level (it doesn’t affect monitor in) and Reverb Time being mids time.
  • Note that the filter cutoff of LP and HP share control, you set their level independently.
  • Jump under OUT levels sets the level to 0 while pressed.
  • Jump under feedback sets the feedback to 0 while pressed (this is killer). It always returns to 100 after release, not the previous value.
  • The rate fader next to it has a continuous change from 0 to ½.
  • There’s no current way to address clocked and free time by OSC. It may change in the future with an interesting approach.

I’ll post any updates I make from now on, there’s still some space on Delay page.
Again, feel free to tweak things around.

Here’s the thing. Enjoy!

CC2_Tablet_1.0.touchosc (6.0 KB)


fantastic work, wow can’t wait to try


incredible work @CarlosUnch ! look forward to giving this a try this evening


This is pure gold!! Thanks for your passion, you saved me years of life <3


doh! sorry about the zilchmo misinformation! was definitely a “my kid won’t let us sleep, so i’ll do something” post haha. @CarlosUnch this template is beautiful.


I cant seem to find the filter’s parameters exposed for midi mapping. Is there something i am missing?

not there yet, it’s in the coming update :slight_smile:
just finished the last touches on the macros

did everything work out with the clocking? also, if you can share additional details about the latency question, i can try to provide guidance :gem:


I already have a grid, arc, and midifighter twister, but seeing this makes me want to get a tablet!


Haha I guess me trying to overcome not having any of that has turned the tables huh?

It’s nice each interface designed for CC has its role and do something that does better than the others. There’s definitely overlap, but much less than one would expect.


Thanks so much for this! ALT + auto-chop is great, altho reading the manual it’s not clear to me how it’s different from “1/16 length pads (bpm-synced)”?

Re: auto-advancement, the arp approach is way better imo than the euclid one. It allows quick swapping between auto-advancement and live re-working, all via the grid. Super fun!

This would still be great to hear, if you have the time! Right now I can get the arp “play heads” to align, but it takes a lot of tricky timing. A guaranteed way to do that quickly would be great.

The related bigger issue for me now is if I want to record e.g. rhodes into live buffer 1 (mapped to pad bank 1), bass into live buffer 2 (mapped to pad bank 2), and guitar into live buffer 3 (mapped to pad bank 3), then even if i get the arps to line up with some tricky timing, the record head and “play head” (aka arp position) aren’t lined up at all, so the instruments’ downbeats aren’t at all aligned. Like, I’ve done a live rhodes take to fill up buffer 1, and now I’m switched over to recording into buffer 2 while listening to the rhodes play back, it’s playing buffer 1 pad 1, so I hear that downbeat and play the bass that goes along with it, but unbeknownst to me the active record head for buffer 2 is like already 2 seconds into the buffer (more or less pad 3 or 4), so when bank 2 pad 1 comes back around it’s a total mess. How would I align the arp position with the record head?


@21echoes are you using the 1-shot record option, or the loop record option? 1-shot will only record a section of the live buffer, synced to bpm. And when it reaches the end of that section, it stops recording. So you can pre define a 1 bar, or 2 bar section of the live buffer to fill.

I was practicing with this last night. Get the live buffer set to the proper length for source material in 1-shot record mode, getting the source material in the buffer with the correct timing, Alt + the zilchmo gesture for auto-chop start/end, then Alt + the zilchmo gesture to chop to 16ths.

I like to set my first pad in each bank to just play the loop, then I mangle the rest.


I love the idea of auto-chopping everything, but leaving the first pad as the whole loop! That probably simplifies a lot of things, at the cost of not being able to play “just” the first beat. Set the first pad to “loop” playback too, so it just… is the sound on sound looper, and the other pads are there to chop & screw.

I must not be explaining the record head vs arp position issue well, though, because one shot vs loop record doesn’t make a difference. I already manually toggle on / off recording as needed, but those settings don’t guarantee that the “play head” and record head are on the same beat at the same time.


@Clashley1 + @21echoes, great info, thank you for the additional insight!

i wrote much of this before your posts, but it sat drafted, so apologies if anything doubles-back.

auto-chop: dependent on the audio clip length, automatically distributes the slices/pads evenly across the total time (when used with ALT+, otherwise just distributes that one pad at its x/16 division). affects start + end point position.

1/16th length: dependent on the system clock, automatically shortens the slices/pads to a 1/16th note’s length. affects end point position. i often use this before auto-chop, and then use the zilchmos gestures for doubling a loop length to get 1/8ths, 1/4ths, etc.

the arp function is just a way to play back your pads/slices, so it’s entirely dependent on the pad/slice positions. if those aren’t all aligned with the material, then the arps won’t be aligned.

if i’m still misunderstanding the issue here, let’s hop on a call – hmu! :slight_smile:

those extra performance details help – just to make sure i’ve got it:

  • you’re pointing each bank to each live buffer segment (bank a to segment 1, bank b to 2, 3 to 3)
  • you’re setting pad 1 of each bank to the full length of the incoming recorded audio
  • you play some audio in
  • pad 1 begins playing back the audio you recorded and you begin playing to it (after switching to a new live segment)
  • since the playhead of pad (which gives you a definite sense of location) and the record head are not locked to each other, you end up in a zone where you’re committing new audio that’s totally independent from the previously recorded segment

ultimately (and most critically for the situation), the three playheads and the single record head are decoupled in cheat codes by design. the only time when any play/record heads are linked is in [delay]. if it helps to share: the personal musical goal of the live recording components was to feed material on-demand as a reaction to needing new content to be pulled apart, rather than looping that material’s original performance.

i originally thought you were using the script in a cascading sort of situation, where the three banks are pointed to the same live buffer segment. this is how @zanderraymond seems to most often uses cheat codes – pad 1 of bank a will be playing back at 1x, pad 1 of bank b will be playing back at -0.5x, pad 1 of bank c will be playing back at 2x, all playing back the same live-recorded material with different rates + auralization :sparkles:

the basics of what you’re describing is what one-shot record mode was made to facilitate – it has three launch modes: next beat, next bar, and free. but it doesn’t loop. so perhaps it’d help to have launch modes for the looping recording, so that you can cue up a new looping recording and the record head will start in an expected place? and then you can simultaneously press pad 1 (which will have the long loop) to make sure that it’s playhead starts at the same time as the record head – lmk if this feels like it’d be a good solution?

in the coming update, i’ll also expose the # section of the [loops] page, where you can watch the playheads for all three banks + the live recording segment in one place.


just thought of that yesterday! Very nice to have those visualized in one place


I’m kinda using it as a live looper. Like what re:mix offers, but on norns. I like the first pad playing my whole live loop so that I can get my hands away from the guitar and onto the grid without dropping a beat. I can then overdub, or fill the next live segment, or start mangling to create new auditory content. I love how versatile cheat codes 2 is. It can be a mega delay, it can be a harmonizer, it’s an arpegiator, it’s a live looper, load prepped clips in and it’s your entire dj set. It’s magical.

So If I’m in 1-shot recording mode, I can’t ‘punch in’ and ‘punch out’ like I can in loop record mode? I assumed that’s what free was. But free was referring to the quantization of record head starting.

Oh, I had a random idea of cheat codes last night. What if Alt + alt + a zilchmo affected every bank at the same time? Probably more useful to me as a 64 user. But it would be cool to suddenly reverse everything and then reverse it back. Or mute everything at once

Here’s a beat … https://drive.google.com/file/d/1e_KyN-VCv12jSi8HaMJCbyHB0xZSBuHy/view?usp=drivesdk