All the new features look great!! Is there an updated touch osc template included or in the works?

1 Like

Hey Dan
I’m continually amazed by your work with Cheat Codes :yellow_heart:

First hour of testing and I’m getting totally lost with the ARP + Delay - Wow this is deep!!

Not running into problems so far - will report if I find anything

A snippet with arps, clocked delay and momentary button gestures :headphones:

5 Likes

Couldn’t stop by yesterday so just finished with the demo now.

It’s really impressive how CC can be approached in so many different ways now, there’s a CC for all and it doesn’t have to be the same.
I don’t know how much of CC 2 will be open for OSC (I’ll help with the layouts) but I am convinced now to get a Grid with the addition of the delay layout, so many possibilities. I love the shimmery bitcrush effect.

Thank you once again Dan for the amazing work!

So I’m building up my second Norns…

2 Likes

wowowow, really appreciate all the quick + positive engagement!! @ypxkap submitted a super-helpful crash report which led to some crucial changes that should heighten the overall “feel free to go absolutely nuts without worrying about system hangs” threshold :slight_smile:

noticed a few more bugs and wishlist items this morning, which are now logged.

re: OSC, really hoping to expose the hooks for the new features, but will likely have to be a point-release behind 2.0 – there is a ton of baked in MIDI support, though, including controls specific to OP-Z. details to follow! (@CarlosUnch, would love to work together on TouchOSC templates!)

super thankful for everyone’s the kindness + energy. holy cow, hans…that is such a gorgeous capture, thank you so much for sharing it! i’m really stoked on how quickly you embraced the new delay controls :revolving_hearts:

9 Likes

I thought that may be the case with OSC. Looks like I’ll need a grid to buy! But I do have an opz. I will certainly put cc through it’s paces when those OP-Z details are released!

1 Like

setting up op-z

we’ll need to make some adjustments to OP-Z’s MIDI settings, so grab a screen and navigate to the OP-Z’s MIDI SETUP menus:

for globals, make only the following active:

  • MIDI IN ENABLE
  • MIDI OUT ENABLE
  • CLOCK IN ENABLE
  • CLOCK OUT ENABLE

then, you’ll want to choose three tracks to control the three banks of cheat codes. how you set that up will depend on your end-goals, but make sure you take note of the midi channels for each track. if you’ve never edited the MIDI channel assignments for the tracks on your OP-Z, they’re likely set up as 1-16 – double check in the app, though!

depending on your goals, you may also want to disable the OP-Z feature where changing tracks make a little “preview” sound of the instrument. if you connect to OP-Z using disk mode, there’s a config > general.json file you can edit. change "disable track preview" to true !

plug your op-z into norns using the USB-C charge cable. you should see OP-Z in your SYSTEM > DEVICES > MIDI list. please take note of which port it’s on (1/2/3/4).

setting up cheat codes 2

in cc2’s PARAMS, go to MIDI setup :

  • enable MIDI control? yes
  • MIDI control device whatever port your OP-Z is on
  • enable MIDI echo? yes, this allows the encoders on OP-Z to be used like arc!

from there, you’ll want to set the bank MIDI channels to match the tracks from the OP-Z. they’re defaulted to 1/2/3, which on a factory-set OP-Z is the first, second, and third tracks. leave the pad MIDI base at 53.

start

if everything’s set up correctly, you should be see OP-Z in the top right corner of the cheat codes main menu screen.

on the OP-Z, press the +/- buttons until you see the “5” light up – this means you’re in the right octave and that “note 53” will be the very first key on the keyboard.

head over to the [loops] screen to try it out!

on the OP-Z, the 16 keys up to the button marked “7” are the sixteen pads of cheat codes. pressing them makes the loop window move.

you might not know, but if you press+hold key1 on norns while you’re on [loops], you’ll access a secondary edit screen which lets you re-assign pads to samples or live input. press button “7” on OP-Z to jump to pad 16, which changes all the pads in a bank – this means you can quickly assign all the pads in a bank to the same clip:

image

encoders

OP-Z’s onboard encoders are mapped to some of the same functions as arc.

1: start point
2: end point
3: filter cutoff
4: level

if you have enable MIDI echo set to “yes”, then every key press should be changing the brightness of the LEDs on OP-Z’s four encoders. their values are being adjusted to the values of the selected pad.

mod key

the very last button on OP-Z’s keyboard acts as a modifier. if you hold it while pressing other buttons on the keyboard, it’ll change parameters instead of triggering notes.

looking at the top keys of the OP-Z keyboard (which are conveniently numbered), these will change parameters for all the pads in the bank…

1: halve playback rate
2: reverse playback rate
3: double playback rate

4: toggle pad looping on/off
5: toggle recording on/off (or trigger recording if in 1-shot mode)

6: random pad start point
7: random pad window (distance between start and end points remain constant, but move )
8: random pad end point

9: slice all pads to 1/16ths of the recording buffer’s length
0: clear the live audio between the recording buffer’s start/end points

each key left-diagonally under the top keys perform the same functions, but they adjust only the currently selected pad.

so you can think of the numbered keys as global modifiers, and the key diagonally under the numbered keys as local modifiers, eg:

 1 2 3 -- global
. . .  -- local 

where next?

feel free to use any of the OP-Z’s onboard sequencing and pattern recording and all that – the MIDI FXs do some incredibly cool things to cheat codes.

11 Likes

Hi,

eager to line up as a beta tester I tried to install cheat codes on my Fates:

  • got the code from Github,
  • backuped dust/code/cheat_codes and
  • copied the new cheat codes code into it;
  • kept the stuff under dust/data/cheat_codes, later deleted that for another try and
  • did several reboots.

Unfortunately I can’t start cheat codes because I always get an error: init

Full maiden message

script load: /home/we/dust/code/cheat_codes/cheat_codes.lua

cleanup failed with error: /home/we/dust/code/cheat_codes/cheat_codes.lua:4595: attempt to concatenate a nil value (local ‘coll’)

script clear

ERROR: paramset cannot nest GROUPs
ERROR: paramset cannot nest GROUPs
ERROR: paramset cannot nest GROUPs
ERROR: paramset cannot nest GROUPs
ERROR: paramset cannot nest GROUPs
ERROR (i2c/hp) failed to write
including /home/we/dust/code/cheat_codes/lib/cc_pattern_time.lua
including /home/we/dust/code/cheat_codes/lib/help_menus.lua
including /home/we/dust/code/cheat_codes/lib/main_menu.lua
including /home/we/dust/code/cheat_codes/lib/encoder_actions.lua
including /home/we/dust/code/cheat_codes/lib/arc_actions.lua
including /home/we/dust/code/cheat_codes/lib/zilchmos.lua
including /home/we/dust/code/cheat_codes/lib/start_up.lua
including /home/we/dust/code/cheat_codes/lib/grid_actions.lua
including /home/we/dust/code/cheat_codes/lib/easing.lua
including /home/we/dust/code/cheat_codes/lib/midicheat.lua
including /home/we/dust/code/cheat_codes/lib/arp_actions.lua
including /home/we/dust/code/cheat_codes/lib/rnd_actions.lua
including /home/we/dust/code/cheat_codes/lib/cc_musicutil.lua
including /home/we/dust/code/cheat_codes/lib/delay.lua
including /home/we/dust/code/cheat_codes/lib/euclid.lua
pset >> write: /home/we/dust/data/system.pset

script run

reading PMAP /home/we/dust/data/cheat_codes/cheat_codes.pmap
m.read: /home/we/dust/data/cheat_codes/cheat_codes.pmap not read.
Engine.register_commands; count: 0
___ engine commands ___
___ polls ___
amp_in_l
amp_in_r
amp_out_l
amp_out_r
cpu_avg
cpu_peak
pitch_in_l
pitch_in_r

script init

ERROR: paramset cannot nest GROUPs
pset >> read: /home/we/dust/data/cheat_codes/cheat_codes-01.pset
pset :: /home/we/dust/data/cheat_codes/cheat_codes-01.pset not read.
ERROR (i2c/hp) failed to write

SCRIPT ERROR: init

/home/we/dust/code/cheat_codes/lib/start_up.lua:372: attempt to call a nil value (field ‘def’)
stack traceback:
/home/we/norns/lua/core/norns.lua:136: in field ‘def’
/home/we/dust/code/cheat_codes/lib/start_up.lua:372: in field ‘init’
/home/we/dust/code/cheat_codes/cheat_codes.lua:912: in global ‘init’
/home/we/norns/lua/core/script.lua:105: in function ‘core/script.init’
[C]: in function ‘xpcall’
/home/we/norns/lua/core/norns.lua:137: in field ‘try’
/home/we/norns/lua/core/engine.lua:91: in function </home/we/norns/lua/core/engine.lua:89>

Did I mess up write permissions with copying files manually? Any other ideas? I’d be grateful for a hint.

hey hey! just looks like your fates isn’t running 200712 which features a few PARAMS features which cheat codes utilizes. updating should solve it, but lmk :slight_smile:

Hey, hey. Always amazed about your quick and friendly response…
Actually I am on 200712. Just double checked.

2 Likes

Barely scratching the surface, but loving it so far. Had held off diving into CC for a while and at some point I decided to just wait for the latest. Enjoying the videos.

Anyone running a 256 grid? With the multiple pages seems like this script would be a prime candidate to benefit from a large grid.

3 Likes

weird! the errors you posted are PARAMS-specific (/home/we/norns/lua/core/norns.lua:136: in field ‘def’). maybe something’s up with the file tree?

i’d say:

  • delete dust/code/cheat_codes + dust/data/cheat_codes
  • reboot
  • rename your github-downloaded folder cheat_codes_2
  • place that in dust/code
  • run the beta from cheat_codes_2

if that fails, then maybe others have ideas? the release will be distributed through maiden, so there won’t be trouble when things are out of beta. there should be no conflicts with Fates – something else must be up…let me know how it goes!

1 Like

No luck with that. As far as I see …

...same message from maiden

script load: /home/we/dust/code/cheat_codes_2/cheat_codes.lua

cleanup failed with error: /home/we/dust/code/cheat_codes_2/cheat_codes.lua:4595: attempt to concatenate a nil value (local ‘coll’)

script clear

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR (i2c/hp) failed to write

including /home/we/dust/code/cheat_codes_2/lib/cc_pattern_time.lua

including /home/we/dust/code/cheat_codes_2/lib/help_menus.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/midicheat.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

pset >> write: /home/we/dust/data/system.pset

script run

reading PMAP /home/we/dust/data/cheat_codes_2/cheat_codes/cheat_codes.pmap

m.read: /home/we/dust/data/cheat_codes_2/cheat_codes/cheat_codes.pmap not read.

Engine.register_commands; count: 0

___ engine commands ___

___ polls ___

amp_in_l

amp_in_r

amp_out_l

amp_out_r

cpu_avg

cpu_peak

pitch_in_l

pitch_in_r

script init

ERROR: paramset cannot nest GROUPs

pset >> read: /home/we/dust/data/cheat_codes_2/cheat_codes/cheat_codes-01.pset

pset :: /home/we/dust/data/cheat_codes_2/cheat_codes/cheat_codes-01.pset not read.

ERROR (i2c/hp) failed to write

SCRIPT ERROR: init

/home/we/dust/code/cheat_codes_2/lib/start_up.lua:372: attempt to call a nil value (field ‘def’)

stack traceback:

/home/we/norns/lua/core/norns.lua:136: in field ‘def’

/home/we/dust/code/cheat_codes_2/lib/start_up.lua:372: in field ‘init’

/home/we/dust/code/cheat_codes_2/cheat_codes.lua:912: in global ‘init’

/home/we/norns/lua/core/script.lua:105: in function ‘core/script.init’

[C]: in function ‘xpcall’

/home/we/norns/lua/core/norns.lua:137: in field ‘try’

/home/we/norns/lua/core/engine.lua:91: in function </home/we/norns/lua/core/engine.lua:89>

Any other Fates owner where the beta version initializes? (By the way: Other apps still work.) Well … otherwise I’ll wait for the maiden library version. (But I definitely envy those who are able to attend the sneak preview!)

hmm. we’ve got three errors:

  • one in the cleanup which i’ve never seen and doesn’t seem to affect continuing the load
  • a bunch saying that GROUPs can’t be nested, but i’m also not seeing that error on my device and it doesn’t seem to affect the script running
  • the SCRIPT ERROR: init points to issues with a param method that was introduced with 200712

if you want to further test, try loading this into a blank script and running it on its own:

function init()

params:add{
  type='control',
  id='stuff',
  name='stuff',
  controlspec=controlspec.def{
    min=0.00,
    max=30.0,
    warp='lin',
    step=0.0001,
    default=1,
    quantum=0.0001,
    wrap=false,
  },
}
end

that exact structure seems to be causing the failure in your report. lmk!

Yes, as far as I see I can confirm that. I put your snippet into studies/test.lua:

maiden reports:

# script load: /home/we/dust/code/studies/test.lua
# cleanup
# script clear
ERROR (i2c/hp) failed to write
### initializing data folder
pset >> write: /home/we/dust/data/system.pset
# script run
>> reading PMAP /home/we/dust/data/studies/test/test.pmap
m.read: /home/we/dust/data/studies/test/test.pmap not read.
Engine.register_commands; count: 0
___ engine commands ___
___ polls ___
amp_in_l
amp_in_r
amp_out_l
amp_out_r
cpu_avg
cpu_peak
pitch_in_l
pitch_in_r
# script init
### SCRIPT ERROR: init
/home/we/dust/code/studies/test.lua:7: attempt to call a nil value (field ‘def’)
stack traceback:
/home/we/norns/lua/core/norns.lua:136: in field ‘def’
/home/we/dust/code/studies/test.lua:7: in global ‘init’
/home/we/norns/lua/core/script.lua:105: in function ‘core/script.init’
[C]: in function ‘xpcall’
/home/we/norns/lua/core/norns.lua:137: in field ‘try’
/home/we/norns/lua/core/engine.lua:91: in function </home/we/norns/lua/core/engine.lua:89>

1 Like

awesome thanks for confirming!

poking around the Fates repo, it seems the controlspec.lua file is out of date (compared to the june 30th update). i can report this over to the Fates thread, now that we have a repro case :slight_smile:

3 Likes

Great. Thanks a lot.

1 Like

Just trying out the new version of the beta. One thing I noticed that the shortcut to selecting the live/clips (holding k1 when in loops) doesn’t seem to be working.
Also for some reason I’m not getting any audio output. (Only tried with several samples, not with live input). I’m on stock norns

ah, that function has been replaced! k1+k3 on loops page to switch to the alt page where you can assign clips to the banks (remember: pad 16 sets all in the bank!), k1+k2 on the loops page to start/stop looping playback :slight_smile:

this was changed so that k1+encoder on loops page = fine control over loop points

That was epic, maybe one suggestion that I imagine would enhance the random mode: a simple random over level would be amazing imo. thanks for CC2 can’t wait to try it out.

Perfect! Thanks.
Also what I found is when you program and hold arps from the delay grid page you cannot deselect notes with alt, like you can on the main page.