1 ghost bug report and 1 question on panning.

Ghostly delay bug. I was tooling around more with the delays this morning and after a while it seemed to be getting some serious left channel dominace action going on. I tried to make sure I was using symmetrical delay settings as well and nothing seemed to change the left channel drift. I selected another app and loaded it then went back into CC and it was working as expected again. Wish I had more info and I will certainly report back if I find anything else.

Question In regardes to panning. When I pan hard left or right via zzz I’m getting an inverse pan. Same thing happens when I nudge. It is also the case when I go into the Pan settings and manually pan via the encoder. Am I the only one getting this or is this intended behavior?

hey hey!

lmk what you can repro w/r/t that delay snag :slight_smile:

not seeing this on my side – just to confirm, hard panning is L: [x][-][-] and R: [-][-][x] on the third zilchmo row. [x][x][x] is random pan, [x][-][x] is inverse.

when you’re panning with the encoder, are you saying what looks left is actually coming out right? are you using headphones or line output? what does the LEVELS monitor in the norns system menu report?

OH, also, @CarlosUnch ftw! that might be it :slight_smile:

1 Like

If you have a Norns Shield from the first run, R and L are swapped on hardware. There’s a sw fix.

2 Likes

This maybe it! I’ll look for the update! Sweet

Yeah I do have a shield! So that is more than likely it for the panning issue! Yisss.

I’m on vacation until the 14 so I plan on putting some serious time into cc and arcologies until then. Ill repo what I can for sure if it happens again. Thanks for the quick response!

1 Like

shield fix instructions here (this happens with all scripts, no?): DIY: norns shield

1 Like

Thanks for the link! And to be honest I’m trying to think of any other app I have even fools with the panning lol. I’ll investigate

It does. I’ve been to lazy to fix it, may do it now :slight_smile:

2 Likes

oh my GLOB that was such an easy fix!

I am pretty much a hacker now right? :wink:

Unknown

3 Likes

Dan,

I grabbed my cup of coffee and hopped downstairs to my studio this morning in eager anticipation of your response. Wow, I am so humbled and happy to hear your words. The Kerouac line floored me for two reasons.

  1. Fond memories of a very pivotal time in my life. Many moons ago I had the honor/privilege to work around and document a few of his contemporaries (Ginsberg, Ferlinghetti and Anne Waldman who founded the Jack Kerouac School of Disembodied Poetics). Kerouac is one of my favorite authors who inspired me to change the course of my entire life!
  2. I had a very similar feeling of disembodiment trying to trace the function calls and organization (This is why I mentioned Waldman above).

The @tyleretters article is a superb example of what I was wondering (thanks for writing that Tyler).

Thank you for including this line it’s really vulnerable to admit and I so appreciate it. I’m trying to learn from what paths others have walked. There have been a couple of super helpful suggestions from @andrew and @kasselvania on where to start (thank you both)! I believe their sentiment to be that, swimming in the big beautiful ocean of Cheat Codes 2 is going to be overwhelming. And I couldn’t agree more. It’s why I started there. Being overwhelmed is exactly what gets me excited to learn something. That said, If you and this community weren’t so wonderfully helpful I would not have been so eager to dive in. I am very grateful to say the least.

Learning to code efficiently as possible from the start makes all the sense in the world to me. But how do you do that as a new coder? Well that’s where I bring back your reference to Kerouac (and my experience with his contemporaries). I learned all those years ago that getting together and discussing your process will help others avoid roadblocks and expand their creativity. To play off of your words, I’m trying to “get it done” while keeping an eye on what “right” looks like.

So, the before and after comparison of the Zilchmo code alone is a goldmine. I certainly don’t understand all of it but it is easy to see your journey and how others have helped you get there. I especially love the exercise @Galapagoose had you do. That is the mindset I’m hoping to instill from the beginning. I know it won’t work this way but at least it gives me a north star to aim for!

Again, MANY Thanks!

6 Likes

Yup that branch did it!

A heads up to anyone else trying this with the Midi Fighter Twister, The MFT can flash it’s indicator LED’s at different rates (super cool if you want to have a visual for a delay rate effect etc). But it does so by default on Midi Channel 3 (which is bank 3 for cheat codes). That means that when pressing a cell on the grid, the midi echo will send back a value to update the ring of LED’s around a knob AND it will also start flashing the colored indicator below the knob at a rate found in the MFT manual. This only occurs on ch3 and though I have not done it yet, you can change the rate behaviors receiving channel on the MFT with their utility.

Whoops - I misunderstood the MFT manual. You can only change the global channel you can NOT change which channel it receives its control of LED animations. That is fixed to channel 3! But you can change the bank midi channels in Cheat Codes (I used ch 9) to avoid the conflict.

1 Like

this is a bit of an obsession (/distraction) point for me & has kind of dominated my projects this year

if you like reading code wrms might be an interesting alternative to the style used in cheat codes. the entire script is hierarchically organized into a single table, with interface / screen drawing components (lib/wrms_ui.lua) split up from the sound & functionally relevant stuff (wrms.lua).

the cost/reward of all that is building a library flexible enough to interpret that organized structure, rather than maintaining lots of global variables & their relationships to each other (which point straight at the thing you need in the moment)

(OOP)

4 Likes

Ok wrms and OOP just blew the doors off my head. Taking deep breaths now. The deep end sure is DEEP!!!

Thank you for showing me this. I am a sponge and soaking all this in is my job right now. I didn’t realize that there are code “styles”. If I understand correctly wrms is an OOP style. Then what would you call the style of Cheat Codes? This is so helpful to btw!

1 Like

i’ve been attempting to build the newest bits as close to Functional Programming as I can get with my current skillset. or, Desperate and Determined, depending on where in the code you’re looking :wink:

1 Like

@Quasi i’m going to be giving a talk for babycastles in the next couple weeks about the process of getting ideas out of your head and into reality. i’ll shoot you a link to that if you’re interested. it is a very messy and - if you do it right - fun experience! also check out the arcologies launch stream for some more visuals about how that came to be.

4 Likes

I also recommend the Maps streams for functional programming music madness. this one opened a lot of doors for me:

2 Likes

@tyleretters Yes please send me a link I’d love to listen to that!!

2 Likes

btw, @DuellingAnts helped uncover that if you don’t re-load the beta between loading collections, tasks like rnd generators (and honestly probably some of the other clock things) don’t get reset and some of the last collection’s stuff will continue running in the background. it’s known, it’s just last on the list. but the list is getting shorter!! :sweat_smile:

1 Like

beta 4

delay improvements

UI

overall, improved [delays] menu nav:

  • E1: switch between L and R
  • E2: navigate
  • E3: change value of selected parameter
  • K3: toggle between menu headers + parameters
  • K1: if the on-screen “feedback” param is selected, K1 hold time is 0.01 and 0% feedback immediately jumps to 100% / > 0% feedback immediately drops to 0% while held, allowing performative delay cuts
    • @CarlosUnch, this is the “quick on/off” function the grid uses that felt right at home on the norns hardware, lmk how this feels! i am still working on a “L+R” control screen which will allow you to do this to both

new grid feature

added grid controls for reverse delay @ (3,3) and (6,3) (@MatthewAshmore, great call!!)


found the mult lane buttons outside of the rate keys.

(DOPE, yes, they are there but not documented cuz there are no docs yet, but glad you found them!)


MIDI touchups

FIXED:

  • midi echo now works when used with grid (@Quasi , thank you for the testing and additional details!)
  • midi mapping now accurately adjusts parameters in manual control PARAMS menu
  • renamed “MIDI setup” to “MIDI keyboard setup” in PARAMS
  • standalone midicheat.lua file (housekeeping note)

general UI improvements

norns

  • reduced K1 hold time to 0.1s globally (@CarlosUnch, so super glad you asked about this!!)
  • longer-named collections now resize font when loading (@DuellingAnts sent me a collection that had a reasonable number of characters and it looked weird when loading :slight_smile: )

grid

  • zilchmos used to run on metros, it was weird. this also meant that you couldn’t execute two of the same row at the same time across banks. now, you can!
  • added recorded_zilch_zero(bank) to turn off rad-sauce-recorded zilchmos (housekeeping note)
  • WIP: began translating all LED levels to 4-step and grayscale, selectable in PARAMS > GRID > LED style (not yet completed)

@Quasi, still super floored by your story!! thank you for your generosity of positivity, tales, and time :revolving_hearts: super curious what came of the documenting you did at the school?? would love to see any material you can share!! a half-decade back when i thought internet handles were important, i landed on jai lai bookie, a misspelling from my edition of Naked Lunch that felt like it fit.

8 Likes

AMAZING! Love it. The navigation between L and R is much much more fluid now. L+R will be welcomed :slight_smile:

There’s an odd behavior though, once you use the jump with K1, normal values other than 0 or 100% can’t be set with the encoder, only for the jump. […] still playing over this and for some reason is back to normal. I’ll update about this once I find a reproducible pattern.

I see an advantage over the grid here, you can do smooth fade outs of the delay feedback with the encoder. Not that someone with the grid doesn’t have encoders :wink:

The thing I’m missing now it’s a more controllable send as well, but I don’t see an easy way to implement it with three banks and two channels. 16n it is, that take us to…

Would be possible to map two or more parameters with one CC#? I want to control all (a,b,c,in) L sends with one fader and another for R. MIDI learn now overwrites previous mappings.

It feels so much better now, thanks!

Random param: semitone offset still has a ghost param at th bottom under scale.