You need the touchosc editor application (On your regular computer) and then use the sync feature. Then you add the template from the iOS TouchOSC app.

Docs here: https://hexler.net/docs/touchosc

1 Like

Hi, midi pad rate is it supposed to work per pad or per bank? I change pad ie from 1.1 to 1.2 and when I try to change the rate the selected pad does not feedback its value so there are jumps. Thanks :slight_smile:

1 Like

this is a bit of a red herring. the rate is per pad and is being fed back to the parameters – you can verify this by opening the manual control params and monitoring as you change pads – but your experience is generally the trouble I’m describing here:

your MIDI controller isn’t updating the rate-mapped slider position in accordance with the rate when you change pads – so moving your rate-mapped slider on a new pad will cause the MIDI controller to report the slider’s current position and the rate will jump to that position. OSC gets around this problem – cheat codes will report the state of the current rate and the OSC interface will update, so that changes are added to the shared value.

1 Like

Thanks, that means I’d have to create an osc layout?

no problem!

can you share a bit more about your ideal?

if you’re looking to control cheat codes without a grid or arc, the TouchOSC layout i included with yesterday’s update would be a good place to start.

if you are using cheat codes with a grid/arc but want unique control over a particular parameter (maybe you want a slider to adjust rate rather than the three-finger press), i’d say just scavenge the TouchOSC interface. the naming convention for each parameter can be found by highlighting an object and looking to the left sidebar menu for the appropriate OSC name and arguments (range).

for example, here’s the 0.125 rate for bank 1, exploded out into (a) the button which sends the command and (b) the LED that receives feedback from cheat codes to highlight when the rate of a pad is 0.125:

(a) the button sends /rate_1 to identify that it is affecting the rate of a pad in bank 1 (the others would be /rate_2 and rate_3) and an argument of 7 to let cheat codes know to choose the seventh rate in the rate parameter list (-4,-2,-1,-0.5,-0.25,-0.125,0.125,0.25,0.5,1,2,4)

so, if i want to tell the current pad of bank 2 to be -1x rate, I would need to send /rate_2 an argument of 3 (because -1 is the third option in the parameter list).

(b) the LED for that rate button is coded similarly. its name is /rate_1_7 and it accepts arguments of 0 (off) to 1 (on).

so, if the current pad in bank 3 is 1x rate (the 10th rate in our parameter list), cheat codes is already set up to send /rate_3_10 an argument of 1 to turn the LED for 1x on (cheat codes will also send all the other /rate_3_X LEDs an argument of 0 to turn off).


abstracted example:

controlling the rate of the currently selected pad in bank Y

  • send norns /rate_Y X, where X is the ID/position of the rate you want in this list: (-4,-2,-1,-0.5,-0.25,-0.125, 0.125,0.25,0.5,1,2,4)
    • eg. /rate_1 3 will give the current pad in bank 1 a -1x rate
    • eg. /rate_2 12 will give the current pad in bank 2 a 2x rate

hope this helps, happy to assist you with making your own interface! just let me know :slight_smile:

4 Likes

That’s great! I’ll let you know. Many many thanks!

1 Like

So I’ve been customizing a TouchOSC version for iPhone Plus sizes (736x414). I don’t know what size are the newer iPhones but it fits perfectly my iPhone 8 Plus.

Since the screen is smaller than the iPad I made two pages called LOOPS

and PADS

In PADS I duplicated some useful commands with the remaining space, they should be more accesible here than in the LOOPS page, specially the rate controls. Not hard to press but yeah, that’s my limit.
Note that “loop pad” toggle is just found on the PADS page. I left it out of LOOPS since is not important for me but added it later so you guys have same control as the iPad version.

Also note that pad selection is horizontal, it’s not like turning the iPad sideways.

It should be bug free but let me know if there’s something broken.

Stay safe!

cheat_codes_iPhonePlus.touchosc (4.2 KB)

15 Likes

WOAH THIS LOOKS GREAT! exactly what I hoped folks would do. thank you for sharing and I’m excited to try it out!!

4 Likes

Really happy to make a contribution! :smiley:

I stayed with the same color code so It’s consistent between devices.
Also the two devices can be used at the same time, the only things I noted is that the loop start and end position doesn’t update between devices AND the toggles neither. In this case you reverse one loop on iPhone and in the iPad is still showing forward, by then pressing reverse on iPad it turns forward, so it’s confusing.

For push buttons and loop windows works neat with two.

Edit: you only get loop window visual feedback in one device, even when using it in the other.

Double trouble edit: Would be GREAT if random window could trigger longer loops. They are kind of small always, I don’t know the boundaries and bias of random here, I guess it’s something harder to tweak but doable.

1 Like

yo @dan_derks
just loaded up CC and am getting set up to explore. really looking forward to making sounds with this lovely instrument. thank you so much!

had an idea - not that you need more feature suggestions :stuck_out_tongue:

re: crow output. clk & pads are suuuuch a good idea!! what if there was a third option?

PAD (singular).
the second value could be a number (1-16). then we could set just one pad per group to be a trigger output. this idea came to me because i’m so excited to integrate the pattern rec/play system with some modular bits - but anticipate not wanting to have a trigger output on every pad press, as i will still be using those groups for CC sample fun.

edit: or maybe the existing PADS option just has a second value that can be all as the first option, then increments 1-16

3 Likes

works great on a smaller iphone! wowowow, excellent work :revolving_hearts:

re: two TouchOSC devices at once, the script is only sending value updates to whatever the last OSC source was. this can be tweaked down the line, but this feels workable for now.

re: random window triggering longer loops, you’d just want to edit the /pad_loop_rand_ control at line 1609 in the main script to replace these lines:

      bank[i][bank[i].id].start_point = (math.random(10,75)/10)+(8*(bank[i][bank[i].id].clip-1))
      bank[i][bank[i].id].end_point = bank[i][bank[i].id].start_point + (math.random(1,15)/10)

with these:

      bank[i][bank[i].id].start_point = (math.random(10,40)/10)+(8*(bank[i][bank[i].id].clip-1))
      bank[i][bank[i].id].end_point = bank[i][bank[i].id].start_point + (math.random(30,50)/10)

this should get you loops that are 2-4 seconds long.

2 Likes

totally! what about on a per-pad basis – so you can just say “hey, I want these couple of pads to trigger pulses out of crow and the rest to not”

so stoked you’re digging in!! please keep sharing ideas!

3 Likes

well, sure! that would be rad, too :smiley: i was thinking that because you only have one physical trigger output that only one pad would be needed - but your idea is more flexible and allows for fun stacked events.

1 Like

Just spitballing here, but a volts option would be super crazy. Using the arc to set voltage output would basically turn it in to cycles from ansible mashed together with someone like Rene

2 Likes

Alright, another suggestion I’d like to see, sorry Dan. Reverb send per buffer, or even per pad.

I’d like to have an overall reverb on with little decay, but when I want to use a rhythmic sample with very snappy sounds I want it dry.

there’s some new stuff brewing for crow that’ll help make an idea I had possible where loops and playhead position would be mapped to scales for volt output. so the loops would create subsets of a defined scale and the playhead position would basically move the index (up or down, depending on rate direction). so a pad that’s running at 4x on a small loop would actually be a voltage trill. wild futures ahead, y’all. :slight_smile:

not possible, unfortunately. softcut’s voices are summed to a single level_cut_rev(value), so you can’t say “this one softcut voice should get reverb while this one doesn’t.” it’s all or nothing.

BUT I almost forgot that I had planned to expose the individual pad delay sends. I’ll bundle that into the next update :slight_smile:

5 Likes

This sounds like a crazy interesting addition!

I’ve found these boundaries work better for me:

bank[i][bank[i].id].start_point = (math.random(10,30)/10)+(8*(bank[i][bank[i].id].clip-1))
bank[i][bank[i].id].end_point = bank[i][bank[i].id].start_point + (math.random(10,60)/10)

This way I get loops as short as 1 second and as large as 6 seconds.
If I’d use one shoot buffers I’d priorice starting point randomness, like the original values, but since I’m all about looping I priorice length randomness.

Thanks again Dan!

3 Likes

awesome! this personalization of code is exactly what norns is built to facilitate. thanks for asking about tuning the function and i’m excited to hear what you make! :slight_smile:

2 Likes

Hi there, I was trying to get this working with an ad hoc connection (Norns wirelessly tethered to the personal hotspot of my iPhone) rather than via a router. My iPhone seems to detect Norns (it shows up in TouchOSC, yet Cheat Codes does not respond to this template/vice versa.

All software is up to date and nothing else is plugged into my Fates. Can you help me get this going? Not sure if it’s something I need to address in the Cheat Codes OSC Setup page or in TouchOSC on my phone. Thanks!