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

@beepboop seems to have made a lib (midigrid) that providing an abstraction layer so that various grid-like MIDI controllers could be supported with the standard norns grid APIs.

That’s the most straightforward way to support this I guess.

More details/discussion in the alternative grids thread.

1 Like

i guess i’m curious what’s missing? currently, every pad can be called up via MIDI or OSC and there are a number of zilchmo functions accessible through both. there’s also a Midi Fighter Twister template that’s a fully playable interface with LED feedback. the grid interface is just one form of control – i typically use the Max for Live device (to call up pads) and the Midi Fighter Twister (to adjust parameters) these days :sparkles:

you can also map MIDI CC’s through the parameters menu to get full control of the delay performance gestures. i’ll be re-adding the manual control parameters as well, as discussed above, so that’ll definitely help :rainbow:

all to say, you should currently be able to plug in any piece of hardware that sends MIDI over USB and have access to a bunch of control over cheat codes (certain Launchpads do this, right? please lmk if you’re not able to plug one in and jam). you can even record these MIDI patterns with the [timing] menu, same as grid. happy to address anything that’s missing, though! the goal of cheat codes 2 is to provide numerous access points to these ideas. please let me know if you run into any specific troubles or need additional parameters opened :slight_smile:

maybe getting these set up + using them would be a good video session?

here are the relevant pages from the docs:


Hi Dan, my fault, I wasn’t aware about this documentation (maybe this part is new and I tried CC before). I was able to use awesome TouchOSC template by @okyeron but it’s not working everywhere due to some proprietary coding in grid support.
However, I will try what you posted, obviously a video session would be good!
I have also to test using what @eigen writes about midigrid… to me (but I’m not in the mind who creates script) it would be a plus to have native (i.e. “choose the hardware to be used and I switch libraries internally”) support of hw other than grid.
It’s not your fault, but it’s more than usual to find lots of scripts that works ONLY by grid (i.e. one of the norns killer app, TAKT) and this is a pity (to me).
Thanks anyway and sure I’ll try interfacing Launchpad/other midi myself.

Thanks! …see my answer to Dan below.

Would it be totally wack to allow for envelope duration to sync to bpm divisions? Was thinking about this now that you can sync bpm from a pad’s loop duration.


@dan_derks, this is all simply amazing. Cheers to everyone involved!

If anyone is looking to have a printed copy of the manual, here is a printer-friendly inverted pdf. I printed it double sided with 2 pages per sheet to put in a binder and it worked out great. CC2_Inverted.pdf (6.2 MB)


Veering ever so slightly off topic to mention that these are apparently on sale right now.


just in case confirmation helps embolden, this is how cheat codes 2 works – when you flip on the MIDI control, the script actively changes modes (eg. the pattern recording + arps look for MIDI notes from the source specified). if you connect a Midi Fighter Twister and boot the script, the script will auto-configure all settings to match. there’s on-screen feedback to confirm the connected hardware, as well :slight_smile:

additional thoughts on script design

what you bring up is really interesting, though, and it’s a necessary accommodation for commercial products (eg. nearly all industry-standard connections are facilitated by norns) – but scripts are community expressions, built from a contributor’s needs and further shaped by their ability/availability to accommodate community feedback. adding full support for additional hardware requires reimagining performance gestures for interfaces that the contributor might not need or even have access to.

from a design perspective, the grid is such an open canvas that it often deeply inspires how the script functions – cheat codes 1 began as “i want to play this type of interface: vertical orientation, three 4x4 banks of pads, right-angle multi-finger area)” + “i want it to be able to make these sounds (@brin’s loose leaf ).”

this seems true of many grid-centric scripts – the 128 becomes such a deep component of the script’s DNA. adding new methods of control can require re-design of the fundamental interactions. i’m really glad i spent the time adding these to cheat codes 2, but i also think it’s a tough proposition for folks with limited resources to make what are functionally different versions of their scripts for each of these paradigms.

one of the central goals of norns is to allow folks to collaborate on code, to modify + remix, to customize small snippets to play a role in a larger collection of tools. what i’ve learned is that building scripts as collections of functions allows people to roll their own controls – but when we get to the scope of scripts like Takt / cheat codes / arcologies / etc, where you’re looking at full composition environments, it becomes very hard to do this (esp. for novice-yet-spirited folks like myself).

all to say, i do feel that there are a lot of opportunities for monome to help facilitate examples for easy integration of additional hardware in the scripting process. Midi Fighter Twister, for example, is a really solid stand-in for arc control, but it took me a while to wrap my head around how to integrate it into the script. the parameters menu is a really good place to focus some brainstorming – https://github.com/monome/norns/issues/1248. thank you for the dialogue!

this could be cool! i’ll add it to the backlog :gem:

@hypnosapien, thank you!! this is super rad and really helpful :fire:


(I’m pretty sure that this have been covered before. If so, feel free to remit me to the posts discussing that, please.) Could someone tell me how to link CC with Ableton Live? Which are the possibilities? Which is the master and which the slave? Can audio flow in any direction (CC --> Ableton, Ableton --> CC)? Is there any additional hardware required?

1 Like

hi hi!

you have two clock options:

  • wireless clock syncing using Link (bi-directional sync that does not have a leader/follower)
  • standard clock syncing using a MIDI interface capable of handling two hosts

using a MIDI interface just for Live + CC2 clocking is my least favorite option because Link is so much more flexible and is wireless. if using a MIDI interface, though, norns lets you choose which is leader and which is follower – see more info here. to set norns as a follower, set the clock source to MIDI – to set it as a leader, keep the source internal and set midi out to the device you’d like norns to lead. (also, just a friendly note that master/slave terminology is no longer used in this community and has been replaced by leader/follower :slight_smile: )

CC2 doesn’t really care too much about your clock source – it’ll perform the exact same regardless of whether you’re using the internal clock, Link, or MIDI (or crow!) it just automatically adjusts to whatever your clock is and everything follows (arps, rnd’s, euclid, distro pattern recording, delay timebases, etc).

you have two control data options:

  • wireless Live -> CC2 control using the Max for Live device (no communication from CC2 back to Live, no extra hardware needed)
  • standard MIDI control using a MIDI interface capable of handling two hosts (if you turn on MIDI echo in the params, you can get some weird fun stuff from CC2 back to Live, but generally this is Live -> CC2)

only one audio option for realtime audio shuttling between CC2 + Live:

  • audio is the same as with any norns script – you need an audio interface in order to run norns outputs into Live, though you can just use a Hosa stereo cable to run Live’s outputs into norns via your computer’s headphone jack :slight_smile:

if you have any specific “how do i wire things up to do ___?” questions, i’m happy to help guide! :sparkles:


I’d say another option for audio is to record to tape and then transfer the tape into Ableton. It’s not exactly flowing into Ableton but you would save on not needing an audio interface. This would remove the need of syncing clocks too. But I work mainly without a beat so don’t listen to my advice. :partying_face:


wow the MFT integration is so good! no arc here so this is a bit of a revelation as far as opening up the capabilities of cc2 (and is already giving me ideas for other script uses/customizations).

1 Like

daydreaming about crow functionality, it would be super sweet if a pad could be assigned to output a trigger/gate to different crow outputs. is that per chance what crow_pad_execute is involved with?


Thanks for the info, Dan! Amazing app and great support!

I tried the wireless option but it didn’t work because I didn’t know that I have to use the Max for Live device. This afternoon I’m goint to try it again.

Just one question more: so isn’t possible to send back audio from CC2 to Live? I’m thinking in the possibility of sending back three tracks -one per CC2 bank- to Live…

1 Like

Thanks for the info! Do you know if it would be possible to record three tracks separately -one per bank- to tape?

Only way to multi track is to hard pan the banks. But you would only get L/R so two banks works.


hi everybody! first of all thanks again so much @dan_derks for your amazing work, cc is my fav script ever :slight_smile:

I’m experiencing some strange behavior using arc to play live with loop windows:
as soon as I turn the encoder, the lit window leds on arc become one and the encoder doesn’t seem to have anny effect. is anybody else experiencing this issue? is there something incredibly simple that I’m missing?


I updated the script this morning. this happens on every clip and every arc encoder.

1 Like

happy to help!

the wireless clock option via Link? or the wireless control option?

the Max for Live device is only required if you want wireless control over cheat codes 2, where notes generated in Live trigger pads.

if you simply want the clock to match:

  • get your computer + norns on the same WIFI network
  • toggle Link on in Live
  • on norns, go to params > CLOCK and set the source to link
  • on Live, you should see this:

    which means norns + Live are communicating clock positions to each other
  • back on norns, you should see that your tempo and Live’s BPM match
  • you can also verify that on the [timing] screen, the counter is pulsing at the exact same rate as Live

otherwise, for control, you need to use the Max for Live device. if you’re using the M4L device, I also recommend using Link, to keep cheat codes 2’s delay in time :slight_smile:

just echoing this – there is no other way to separate the bank audio into discrete audio tracks

that’s exactly right – are things not working as expected? a connected crow should immediately start spitting out triggers with every pad press (bank A -> out 1, etc). if you put a bank into ‘focus hold’ mode, you’ll see a bright LED to the left of the 3rd zilchmo – that’s a toggle for crow pulse on/off per pad :bird:

known bug, apologies for the delay with a fix, but i’m bundling up the 64 grid layout and the alternate [loops] screen as part of the update. should be out today! :sparkles:


Thanks Dan! You’re amazing <3

1 Like

this gave me an idea. got a teletype last week and triggering scripts with pad outs via crow could really integrate cc2 with my eurorack. hmmmm :flashlight:

1 Like