the global clock + new Pattern control + “holy hell thank you @Galapagoose for all the help and guidance and work on refactoring (2,021 deletions!!)” update
Requirements
norns (200424 or later)
grid strongly encouraged, not required
arc strongly encouraged, not required
TouchOSC for tablets or phones (iOS or Android) strongly encouraged, not required
NEW: PARAMS > ‘1-shot sync’ allows 1-shot buffer recording to sync to the global clock, to capture clean quantized recordings. Options include ‘next beat’, ‘next bar’, and ‘free’ (no clock sync).
If set to ‘next beat’ or ‘next bar’, a running 1-shot recording will ignore additional triggers until it has reached the buffer window’s end-point.
NEW: PARAMS > ‘rec loop encoder resolution’ will auto-align the live buffer window to the specified resolution and will clamp encoders to add, subtract, or shift at multiples of that resolution. Options include ‘0.1’ and ‘0.01’ (standard), as well as tempo-aware ‘1/16’, ‘1/8’, ‘1/4’, ‘1/2’ and ‘1 bar’. To get odd divisions or lengths greater than 1 bar, use encoders on the [loops] page (while the live buffer is highlighted) to add/subtract/move the loop window incrementally.
NEW: PARAMS > ‘random rec probability’ can be set to randomly toggle recording into the selected section of the live buffer.
CHANGE: PARAMS > ‘live buffer max’ adjustments will automatically enforce a ‘global pitch offset’ to match.
auto-slice
NEW: ‘auto-slice bank’ feature will slice the current live buffer window across all of a bank’s pads. To perform the action, press grid-ALT + the first key in the row underneath the bank you wish to auto-slice the live buffer into.
NEW: ‘auto-adjust buffer’ feature will adjust the live buffer’s window to match the window of the currently selected pad in a bank. To perform the action, press grid-ALT + the third key in the row underneath the bank whose pad you wish the live buffer to mirror.
new default state
CHANGE: when loading a fresh cheat codes session, live buffer will not be automatically engaged/recording.
CHANGE: when loading a fresh cheat codes session, pads will be set to 1-shot (previously, set to loop).
etc
FIXED: if a collections-saved grid Pattern included a pad that was raised by a fifth, the Pattern would stop playing when it hit that pad.
…
1.3: released April 26, 2020
global clock
NEW: clocking is handled by the norns global clock, enabling Ableton Link as a clock source
CHANGE: all four rec modes are available, regardless of clock source
CHANGE: [timing] screen no longer features clk — use PARAMETERS > CLOCK to adjust clocking
IMPROVED: tighter clock-synced gestures
[timing]
NEW: two pages per Pattern! use K2 to access new controls.
NEW: rand pat with control over how rates/pitch are distributed (p. 13)
NEW: pat start and pat end to adjust Pattern loop points (p. 13)
NEW: gridless control over random Patterns • K3 + rand pat selected: random Pattern generated
K1 on a P[x] screen: pause playing Pattern [x]
K1 + K3 on a P[x] screen: clear current Pattern [x]
CHANGE: [timing] screen no longer features clk — use PARAMETERS > CLOCK to adjust clocking
IMPROVED: visual indicator next to each P[x] to show whether Pattern [x] is playing, paused, or clear
IMPROVED: if Pattern [x] is playing, step number will appear next to each P[x]:
[loops]
CHANGE: if there’s headway in the buffer, record buffer window movements (E1) now jump the length of the current window. previously, the window would slide incrementally — this makes sense for playback buffers, but clean windows for recording are more helpful.
cheat codes is available in the maiden project manager as cheat_codes (commit 08b7aff). nb. do not rename the cheat_codes folder! it must have an underscore.
Don’t see it? Please refresh using the refresh button next to the community header.
Lovely! Refactoring
I might try and borrow some of the filter code for a mod of mlr. Is it scalable to 6 voices(haven’t had the time to look at the code yet)?
oh, i’d say hold off on the filters — those haven’t been refactored yet and it’s a weird lil network of forced slewing and opaque handlers.
there are some big softcut changes coming that will bake all of that into the actual module that’ll make all the lua-layer stuff super straightforward!
totally — currently, you have 1x, 0.5x, and 0.25x secretly available thru the live buffer length parameter under ‘loops and buffers’. you get more time by slowing down the rate
that can be used now to add pitchy things. i will scope out adding more wobbles in the future, but you can also add this to the code in a local version if u don’t want to wait for my design decisions. it’s just manipulating voice 1.
thanks ben! super stoked to hear what you’re making
thank you for the push to explore pattern wrangling
thanks to @Prnts for the request! oo yeah, forgot to mention that random will also auto-level pads to make sure wide rate spans don’t create a bunch of volume inconsistency.
@dan_derks I finally took some time to read the very helpful manual and play with Cheat Codes yesterday, and it’s amazing. Really, really appreciate all the work you’ve put into making it both playable – “intuitive” in a sense – and mind-bending. I’ve already used it to record part of a collaborative track I’m working on.
that said… there’s something weird going on with the 12 action on the 4th Zilchmo row on all banks (randomize start point). Even though it does appear to move the start point on the loops screen, the change doesn’t take effect immediately like it does with the 34 action (the play head continues looping from wherever the start point was before, until you trigger the current pad again), and the grid LEDs get stuck until you hit another Zilchmo key. Here’s the error I get in Maiden:
lua: /home/we/dust/code/cheat_codes/cheat_codes.lua:1337: attempt to index a nil value (local 'pad')
stack traceback:
/home/we/dust/code/cheat_codes/cheat_codes.lua:1337: in global 'cheat'
/home/we/dust/code/cheat_codes/lib/zilchmos.lua:245: in local 'sc_action'
/home/we/dust/code/cheat_codes/lib/zilchmos.lua:39: in field 'init'
/home/we/dust/code/cheat_codes/cheat_codes.lua:2090: in global 'zilchmo'
/home/we/dust/code/cheat_codes/cheat_codes.lua:824: in field 'event'
/home/we/norns/lua/core/metro.lua:169: in function </home/we/norns/lua/core/metro.lua:166>
Back here after spending few hours playing with this wonderful instrument… it took me a bit to wrap my head around it… but God! This is inspiring… so many thanks for it!
I’m using it with touchosc on android… just barely scratching the surface but it appears that when I switch pads to quickly, I here an annoying glitchy sound… is this something that I can get rid of in the setting? Or is it inherent to the fact that randomized loops on a busy track recorded in the buffer most of the time fall on a “non zero” waveform location?