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


Hi Dan,

thanks for the quick reply - that indeed solved my quantization problems! I’ve encountered other bugs, that might have contributed to the problems! It took me forever to figure them out but I think I got it:

  1. setting pad length to min/max is buggy for live buffers 2&3 when max length is reduced and focus is on them: go to live buffer 2 and set max length from 8s to 7s; go to pad bank a and set to live buffer 2; make sure that focus of the live buffer is on live buffer 2 (e.g. press 3/16 on the grid); set length of pad A1 to min and max; min will now be -2s and maximum +5s; now set focus of the live buffer elswhere (e.g. press 2/16 on the grid); set length of pad A1 to min and max again; min will now be 0s again and maximum +8s (works the same for live buffer 3, but not for live buffer 1)

  2. setting pad length to max is buggy for live buffers 2&3 when max length is reduced: go to live buffers 2 and set max length from 8s to 7s; go to pad bank a and set to live buffer 2; make sure that focus of the live buffer is not on live buffer 2 (otherwise we’ll encounter the above bug again); set length of pad A1 to max; maximum will still be +8s instead of +7s; (works the same for live buffer 2, but not for live buffer 1)

Two other bugs I’ve noticed:
3) When switching from max buffer length of 8s to 16s or 32s, the time display for pads a-c keeps a 0s-8s range instead of increasing it to 32s (however, only a visual and not a functional problem)
4) When setting the step counter of the pattern seq to >1, resetting the pattern will not reset the step counter to 1 but to some arbitrary other step (is sometimes resolved when starting transport from Link)
5) Edit (another one I think I’ve found): When engaging the arp while on the arp page, the arp reverts to additive mode indepent of what’s set up in the arp parameters

Hope you have a similar quick fix for the above bugs - that would really make my day! :slight_smile:

hey hey! glad to hear the above tweak fixed that up — the other ones are a bit more involved (super thank you for the detailed repro steps!) and i’m on the road until tuesday, so no quick fixes at the moment. i’ll ping back when a patch is posted tho :slight_smile:

edit: @sir-vector, it sounds like you’re jumping in and connecting with the script really well! stoked to hear some of yr sounds when you’re able to integrate the script into your flow!!


Nice, thanks! Also I’m super stoked for CC3 - pad quantizing and SOS looping sounds amazing.
Also, would love to share some sounds once I’m more adept with the CC2 script/workflow.

hey dan!
finally built myself a shield, and soooo excited to finally play around with cheat codes!
but i’m running into a strange issue, i want to use an apc mini with midigrid.
cc2 works if the apc mini isn’t plugged in, but when i start the script with the controller plugged in, i get the message “error: load fail”.
this is what happens below the surface:

# script load: /home/we/dust/code/cheat_codes_2/cheat_codes_2.lua
# cleanup
# script clear
including /home/we/dust/code/midigrid/lib/midigrid.lua
including /home/we/dust/code/midigrid/lib/vgrid.lua
including /home/we/dust/code/midigrid/lib/supported_devices.lua
including /home/we/dust/code/cheat_codes_2/lib/cc_pattern_time.lua
including /home/we/dust/code/cheat_codes_2/lib/main_menu.lua
including /home/we/dust/code/cheat_codes_2/lib/encoder_actions.lua
including /home/we/dust/code/cheat_codes_2/lib/arc_actions.lua
including /home/we/dust/code/cheat_codes_2/lib/zilchmos.lua
including /home/we/dust/code/cheat_codes_2/lib/start_up.lua
including /home/we/dust/code/cheat_codes_2/lib/grid_actions.lua
including /home/we/dust/code/cheat_codes_2/lib/easing.lua
including /home/we/dust/code/cheat_codes_2/lib/arp_actions.lua
including /home/we/dust/code/cheat_codes_2/lib/rnd_actions.lua
including /home/we/dust/code/cheat_codes_2/lib/cc_musicutil.lua
including /home/we/dust/code/cheat_codes_2/lib/delay.lua
including /home/we/dust/code/cheat_codes_2/lib/euclid.lua
including /home/we/dust/code/cheat_codes_2/lib/midicheat.lua
including /home/we/dust/code/cheat_codes_2/lib/macros.lua
including /home/we/dust/code/cheat_codes_2/lib/transport.lua
including /home/we/dust/code/cheat_codes_2/lib/speed_dial.lua
Default 64 layout init
vgrid init with layout: 64
2	 core midi devices
Scanning for supported midigrid devices:
virtual	 -- Not supported
apc_mini	 -- Supported
2	apc_mini
Loading midi device type:apc_mini on midi port 2
including /home/we/dust/code/midigrid/lib/devices/apc_mini.lua
### SCRIPT ERROR: load fail
/home/we/dust/code/midigrid/lib/devices/apc_mini.lua:18: unexpected symbol near '='
stack traceback:
	/home/we/norns/lua/core/norns.lua:144: in function </home/we/norns/lua/core/norns.lua:144>
	[C]: in function 'dofile'
	/home/we/norns/lua/core/startup.lua:43: in function 'include'
	/home/we/dust/code/midigrid/lib/midigrid.lua:106: in field '_load_midi_devices'
	/home/we/dust/code/midigrid/lib/midigrid.lua:56: in field 'connect'
	/home/we/dust/code/cheat_codes_2/cheat_codes_2.lua:4128: in main chunk
	[C]: in function 'dofile'
	/home/we/norns/lua/core/script.lua:186: in function </home/we/norns/lua/core/script.lua:186>
	[C]: in function 'xpcall'
	/home/we/norns/lua/core/norns.lua:145: in field 'try'
	/home/we/norns/lua/core/script.lua:186: in function 'core/script.load'
	/home/we/norns/lua/core/menu/preview.lua:23: in function 'core/menu/preview.key'
	/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>
# script clear
/home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected)
stack traceback:
	[C]: in function 'coroutine.resume'
	/home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume'
/home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected)
stack traceback:
	[C]: in function 'coroutine.resume'
	/home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume'

norns is updated, i already reinstalled cc2 and midigrid, but no success.
would appreciate any help! :slightly_smiling_face:

edit: i already toggled “midigrid” to “yes” in the PARAM section

hi hi!

weird, this is pretty much the only step that should be needed, which just sets the grid redraw bounds to 64 and the leds to 4-stage.

since there isn’t any real connectivity magic behind the scenes beyond that, i guess i’d start with changing the value for varibrightness and seeing if that’s conflicting with the apc? so boot the script without the apc, then change that setting, reboot the script with the apc?

just as an assurance, does your apc work with other scripts?

just in case : @JaggedNZ — any of these midigrid errors ringing a bell?

@dan_derks anything off the top of your head that would prevent me from using this script to change HID to midi cc? I’ve got two USB foot switches that send HID events that I’m trying to use to trigger patterns / something in CC2

first, thanks for your help! :slight_smile:

do you mean changing the LED style in the PARAM section from “4 step” to “varibright” or “greyscale”? i tried that, same error. :confused:

haven’t checked the apc with other scripts, but i know that it works with ableton. can you suggest me any script i can easily check if the apc works?

Sorry, this is an issue with midigrid, looks like there is a bug in the apc mini device code.
I’m not sure when I’ll get a chance to look at this, but if you have any coding skills it might be a simple fix in the apc mini device file.

It might be a typo, or it might not have been “upgraded” correctly during the last big overhaul. I don’t have an apc mini to test with.


no problem, thanks for your reply!
unfortunately i have zero coding skills, and won’t be able to find the error myself. let me know if you get a chance to look into this sometime, i am happy to test things for you with my apc mini.

1 Like

Thanks for the tip, sounds incredible :+1:

As a PS…

I’ve tried similar settings on rnd , but can not get the arp to work. I using a Norns with grid and synced via wifi to Ableton (set to link) . Im a bit of a novice with Norns, but can get the main features in CC2 working but there are so many parameters I struggling with the more detailed sound control. But with this forum and quite a bit of practice , I think I’m slowly getting the hang of this awesome little unit. Any tips or help would be greatly appreciated.


hi hi! hope all’s well :slight_smile:

you mean the arp won’t engage? that happens if the transport is not on (the lil metronome icon on the main screen). press and hold k2 and press k3 to start it!

if you’re looking for cc2 learning resources, there’s about 2 hours of walkthrough video and pdfs at Learn monome norns - Music Hackspace

lmk if i can help with anything else!

1 Like

Thanks Dan, i think ill get both the CC2 courses and hopefully ill be a bit more clued up after that.

1 Like

rev 210714: long term support (phase 2)

requires norns update 210706+

small fixes (thank you @sir-vector for the thorough reporting + repro cases!!) which improve some of the live recording + zilchmo techniques. this update also builds on @CarlosUnch 's fantastic TouchOSC contributions to parallel the previously-grid-only functionality for pattern recording + arps.

TouchOSC stuff

requires this updated TouchOSC template (for TouchOSC mk1)

  • you can now use pattern recording + arps via TouchOSC!
  • patterns:
    • press ‘pat’ to begin recording a pattern (both loose and bars modes work!)
    • play a pattern with the pads
    • press ‘pat’ to loop the recording
    • while looping, press ‘pat’ to stop it / while stopped, press ‘pat’ to play it
    • ‘ALT’ + ‘pat’ to clear the pattern
  • arps:
    • press ‘arp’ to arm the arpeggiator
    • hold some pads
    • press ‘arp’ while pads are held to latch them
    • while arpin’, press ‘arp’ to stop arpin’ / while stopped, press ‘arp’ to restart the arp pattern you stopped
    • ‘ALT’ + ‘arp’ to clear the arp pattern
  • added “TouchOSC echo” parameter to toggle on sending start / end, level, pan and loop data back to TouchOSC

loop stuff

  • removed accidental loop offset which would, over time, nudge a continuous loop out of time with a metronome
  • fixed min/max zilchmo bug for live buffers
  • improved live rec buffer erase accuracy
  • better indication of time for pads assigned to 16 or 32 second live loops

nav stuff

  • K3 on [arp] page now behaves as expected
    • press K3 to engage arp (... illuminates for engaged arp)
    • hold pads
    • press K3 while pads are held to latch 'em
    • press K3 while the arp plays to pause it
    • hold K2 and press K3 to clear the arp and disengage it


  • more immediate internal clock transport start
  • improved the main screen metronome graphic to tick left on 1 + 3, right on 2 + 4

sorry, just rounding back – this seems like an HID-to-MIDI-note script, but the bones could be co-opted to execute callbacks for any of the mappable control parameters. check out keyboard | monome/docs and midi | monome/docs for further details + lemme know if i can help with further guidance!

Thank you so much Dan. You just made my day with this. Cannot wait to fire this up tonight


Wow. Amazing update. Looking forward to giving it a spin


Thanks a lot @dan_derks!


Ahhh this is perfect. No need to change to encoders now :slight_smile:
ARPs on OSC was unexpected too! Thank you so much for giving love to OSC, Dan.



I successfully MIDI mapped my Deluge using the OPZ Midi template. Good :grinning:.
It’s there a way to map a few more controls?.
I would like to map Pattern start from the Timing page (now I start/stop patterns pressing K1 in the Timing page), so I could press one midi note to start Pattern1, another midi note to start Pattern2,…How can I do it?

I have been trying to do it in EDIT - Parameters - Mappable controls, but I was not able to MIDI Map anything.

@dan_derks Hey! I’m just going through the Music Hackspace workshop again, trying to get a bit more info to stick to my slippery brain. In the “collections” menu (in the workshop) there’s an option to “save new collection”, but on my shield it just says “save” and when I hit K3 nothing seems to happen…

1 Like