Hi @dan_derks I’ve been blown away by how musical this is and how beautiful sounds just seem to happen. Its amazing how far this script has come and I’ve been loving this script since it first dropped. It really is way beyond what I imagined it could be. Thank you and well done.
I have not found any issues that aren’t user error…
But a question - I didn’t find the answer above … what does the bank auto-resizing (ie the mapping of a sample under 32 seconds across the 16 bank pads) mean for live buffers? As an initial thought it would be great if, say, the first pass recording into a clear buffer set the buffer length and then that was auto mapped to the 16 pads assuming it didn’t exceed the max time.
Has this been addressed and I missed it?

1 Like

thanks so much for the kind words + sincere energy, joe – it’s super meaningful :slight_smile:

what you described is pretty much how the auto-chop works (though yet to be documented):

  • auto-chop is based on which buffer a pad is assigned, so the calculations will be most transparent when all the pads are pointed to the same buffer
  • if using the clip buffer, then the auto-chop button will center the pad at x/16ths of the duration of the sample (where x is the pad ID), eg. pad 5 will trigger the audio at 5/16ths sample’s length
  • if using the live buffer, then the auto-chop button will center the pad at x/16ths of the current live buffer’s loop points (where x is the pad ID), eg. if the live buffer is set to a 4.9 second loop then pad 5 will trigger the audio from 0.975s to 1.219s

your post definitely made concrete a good feature request tho: to be able to set the live buffer length based on a keypress, in conjunction with one-shot recording mode :slight_smile:

hope this helps! the docs will make it all clearer with images, as well. soon. soooooon.

3 Likes

Perfect thanks a lot Dan

1 Like

Hi @dan_derks,

I’m following up on the prospect you mentioned a week or so ago about a possible /| Attack envelope being added. It is seriously the only thing I could think of for CC2 that is missing.

On using external Midi controllers, will there be CC’s that are already mapped to each function then a list of those to program say a midi fighter twister with or will there be a learn function? The implementation of the OPZ is amazing but waiting for an Arc so in the mean time I wanted to use the MFT in a similar manner.

And finally I was wondering from last week " if you ever have time I’d love to hear you talk more about softcut, what you love about it and why. A twitch stream would be brilliant. I ask because I’m guessing I’m not the only one that’s super curious and as I embark on learning the Lua language it would be wonderful to know more about what’s under the hood from someone who speaks so enthusiastically about it".

Huge huge respect for all your efforts and replys!
Thank you so much!

1 Like

hey paul! apologies, i didn’t mean to come across as ignoring your message – i’m just playing a few things close to the chest at the moment :wink:

that said:

this + more :slight_smile:

i’ll have a section of the docs that lay it all out, but if it’s easy to configure MFT’s channels + CC’s, here’s the default mapping for cheat codes:
in PARAMS > MIDI setup:

  • enable MIDI control
  • choose your controlling device port
  • I think MFT has midi echo (eg. if it receives a value, it changes leds to match)? if so, enable MIDI echo
  • set your channels on the MFT (cheat codes is pre-mapped to 1/2/3 for banks a,b,c)

cc1: start point
cc2: end point
cc3: filter
cc4: level

i appreciate the kind words and thoughtfulness in this request :slight_smile:
i’ll keep it in mind! i really do mean it when i say that cheat codes is essentially an opinionated user interface to program softcut. softcut allows improvisations in code. it is also a mischievous interpreter that adds its own spin to what you understand from what’s said. it just…idk…it’s raw material, the digital resource that makes norns particularly special to me.

if you’re going to explore Lua, you can’t do better than brian’s softcut studies – i’m sure after some time, you’ll be waxing poetic too :sparkles:

3 Likes

@dan_derks Huge thank you for those answers! Have a gorgeous weekend!

1 Like

Hey Dan! I’ve been loving the beta. Just had a question;

If I’m linking the norns/CC to Ableton link, is there a way to set the counter to sync up with the counter on Live? If not, could we have a Easy, on timing screen reset function? This way I can time my distro pattern starts to my loops in Ableton and on external gear.

Also, this script has become my go to tool for create rhythmic texture backing to drum loops. The delay function just rules so hard.

2 Likes

hey y’all!

Live’s global launch quantization actually controls this syncing – if it’s set to 1 Bar (in 4/4), then Live’s transport will line up exactly with the counter on the cheat codes [timing] screen. if 1 Bar isn’t how you want your clips to launch, then you can adjust those to your desired value in the Clip View’s Launch properties:

distro patterns should automatically sync up with the 1 of the next bar and last for as long as you specify on the [timing] page.

resetting the Link clock isn’t currently possible, on norns in general. you’ll notice that pressing the reset button in PARAMS > CLOCK prints link reset not supported.

if there’s any case for having that reset button surfaced on the [timing] page for non-Link needs, lmk, but I think the stuff up above should help a ton :slight_smile:

stoked to hear your tuuuuuuunes !!

3 Likes

progress report:

  • tons of improvements/fixes tackled in the last few days
  • new beta build imminent for the testers (thanks so so much for the help so far!)
  • final/public release pushed back to early september, because docs need doin’
  • started doin’ docs with @tyleretters’s help

a bit of testing audio (delays looping captured audio and pads fading in with the new rising envelopes):

rising envelopes still clicky when cutting off the level, will soften a bit but it has a nice vibe still :slight_smile:

thanks for the patience and positivity, everyone. super appreciated :sparkles:

19 Likes

ohhh wow! those envelopes sound ace! cant wait to test drive the new beta. yusssss

2 Likes

beta 3 hotfix posted

UI improvements

continuing the work discussed in #10:

  • [loops] page now is navigable with e1
  • k3 on any lane to swap b/w loop points, rate + slew, and buffer management (buffer + offset)
  • k1 + k3 on any bank lane to toggle looping on/off for that pad
  • k1 + k3 on live buffer to toggle rec on/off
  • k1 + e1 on loop play to move window
  • k1 + e1 on loop edit to change bank
  • k1 + e1 on live buffer edit to change live buffer

levels improvements

global level

  • introduced a global level for each bank, which allows entire banks to be faded in/out without destroying their individual pad’s level settings
  • k1 hold on [levels] page will display global level
  • k1 + e1/2/3 on global level will change global level
  • grid alt + zilchmo 2 affects global level (zilchmo 2 w/o grid alt affects pad level)

envelopes

addresses #13

  • introduced two new envelope shapes: rising and rise/fall
  • introduced an envelope loop action which loops the current envelope shape
  • changed the floor of envelope timing to 50ms (0.05s)
  • k3 on [loops] screen navigates:
    • levels
    • envelope shape (use e1/2/3 to choose between falling, rising, rise/fall)
    • envelope loop (use e1/2/3 to enable or disable)
    • envelope time (use e1/2/3 to dial in)
      • nb: on rise/fall, envelope time describes each segment, so minimum is 100ms total rise/fall journey)

collections

addresses #3

collections system totally overhauled. no backwards compatibility with cheat codes 1 collections, which is worthwhile because there are so many changes which would require re-working old collections anyway. these revisions add tons of improvements, including:

  • custom-named collections
  • overwrite option w/protective timer to cancel overwrite
  • delete option w/protective timer to cancel delete
  • local backups of deleted collections for future restoration
  • super-clear folder structure in dust/data/cheat_codes2/[collection name]/

arc improvements

encoder 4

addresses #2

  • encoder 4 acts as a meta-selector for which arc param is displayed across the three other encoders
  • this allows for gridless arc param switching, making arc + midi controller as viable a setup as arc + grid
  • grid shortcuts can still be used to set individual encoders to specific params

force sensitivity

  • loop window, start, and end points are sensitive to how much force is applied in a rotation
  • more severe turns when long samples are loaded allows larger jumps, so you can scroll through a 32 second sample in one rotation
  • minute adjustments retain previous fine-grain behavior

general fixes

addresses #12 + #15, as well as other general trouble

FIXED (at least, what I can specifically remember :sweat_smile:) :

  • arc + norns encoders were not tuned correctly for variable-sized clips
  • zlichmo gestures weren’t tuned correctly for variable-sized clips
  • arc + norns encoders respond to alt.locks
  • arc + norns encoders respect envelopes
  • delays respect envelopes
  • delay wobble is now “fifth up” at all rates
  • triangle envelope can be restarted if killed before release finishes
17 Likes

Sweet envelopes :hugs:

and custom collection names is great for organizing work!

:star:

1 Like

@dan_derks The new envelopes are dreamy!! No bugs yet.

The only thing I couldn’t get to work is the midi echo with the midi fighter twister. You were correct in your assumption that indeed the MFT can receive values I checked with their support manager. He said “The Twister does indeed listen back to the same CC for MIDI Out so say you have the top left encoder on bank 1 mapped (CC0 Ch.1), if the device can send Midi Out to that control it should work just fine” I suppose the question is does Cheat Codes 2 send the same CC for midi out?

No rush in answering, I know you are busy and this is an esoteric issue.

Be well,
P

1 Like

The /\ envelope is adding some very nice humanization and feel. soooo good!

1 Like

glad the envelopes are vibing with folks – i’ve enjoyed using them a lot, much thanks all for suggesting the exploration!

it does, yeah. are you having success using the MFT to control cheat codes?

if so, want to try this test script to see if something else is getting crossed?

test-mft
midi_dev = {}
for j = 1,4 do
  midi_dev[j] = midi.connect(j)
end

function init()
  params:add_option("midi_control_device", "MIDI control device",{"port 1", "port 2", "port 3", "port 4"},1)
  params:set_action("midi_control_device", function(x) m = midi.connect(x) end)
  params:add_option("midi_echo_enabled", "enable MIDI echo?", {"no","yes"},2)
  params:add_number("bank_1_midi_channel", "bank (a) pad channel:",1,16,1)
end

function midi_redraw(target)
  local random_val = util.round(util.linlin(1,8,0,127,math.random(1,9)))
  midi_dev[params:get("midi_control_device")]:cc(target,random_val,params:get("bank_1_midi_channel"))
end
  • drop that into a blank script in maiden
  • select which port your control device is connected to
  • in maiden’s REPL, type and execute midi_redraw(1) and you should see CC1’s encoder LED change value
  • execute midi_redraw(2) for CC2, etc etc
  • each midi_redraw(*number*) generates a random value between 1 and 9 which scales to 1 to 127, so go crazy!

lmk how that goes?

1 Like

Just started playing with the beta… YOOO THE NEW DELAY :heart_eyes:

2 Likes

image

5 Likes

thank you so much for the global level control!!

2 Likes

@dan_derks yes, the MFT is working great with Cheat Codes (except for the echo). I just left on a surf trip this afternoon but I will run this when I get back on Thursday and let you know the results.

1 Like

omg ive never felt such visceral “i want to go to there” like this. have a blast, this’ll be here when u get back :slight_smile: