oh, good q, thanks Kassel!

the TouchOSC layout is meant to be a full standalone alternative.
it’s got some nice shortcuts + unique gestures, designed to give expressive control over cheat codes to those who do not have access to grid or arc.

the TouchOSC interface became a priority when I was testing the MIDI control points:

  • the core “thing” about cheat codes is pretty much quickly creating and recalling micro-presets of a bunch of different parameters. that’s what the banks of pads are, you know?
  • but once you change “pads” with a MIDI slider, none of your other sliders represent the new parameters.

while controlling loop points with MIDI can definitely lead to fun situations, the full performance experience doesn’t have parity with using grid or arc. so, I wanted to build an entry point for folks who don’t have those tools, but maybe have an iPad handy (TouchOSC runs on iOS 5.1.1+, so you could use any generation iPad).

for now, I’ve built in barriers so you can’t use the TouchOSC layout and a grid at the same time – the redraw rates are too high and performance bogs down.

5 Likes

Thanks for the clarification, and its really cool of you to build a template that gives non-grid folks a chance to get at this script!

One thing that would be cool, would be a touchOSC template for only SOME of the things going on with Cheat Codes (maybe mainly just the arc controls since thats all that’s missing). I wish I had the chops to assist @okyeron on his grid/arc OSC implementation he’s been working on.

But hey, I’ve always wanted an arc and hope for work to be at the point to provide such prosperity to make it a reality, who knows!

Thanks again though, @dan_derks, amazing and inspiring work as always!

1 Like

just connected TouchOSC and it’s AMAZING. Congrats! Is there a tip jar somewhere?
Personally this is saving me a lot of work I was planning to do since I’m basing my performance around CC (did one yesterday on Instagram :slight_smile: ).

In the params, I feel OSC IP or OSC port are ambiguous - as they are the destination or outgoing addresses.

This also feels like a weird default to me - esp since my local network is 10.0.x.x
params:add_text("osc_IP", "OSC IP", "192.168.")

Works like magic tho! :pray:

1 Like

lol, yeah, i’ll clean up some of the residual code, but once you configure the TouchOSC settings on the iPad and send an OSC message to norns, those params will just auto populate. they’re pretty much there to help folks troubleshoot – if the params don’t reflect the numbers on TouchOSC, then that’s a clue that things need reconfigured in the app

1 Like

i feel you on this – the trouble isn’t in controlling parameters, but the redrawing and re-syncing when three grid Patterns are running. I was getting dropped grid packets and major slowdowns running Patterns, because the core cheat function was also trying to send all of those parameter changes to redisplay thru TouchOSC.

this led me to hardcode a flag to isolate the two interfaces from each other. but, writing it out, I could actually just break packet sends during Pattern playback, since that’s the only time it becomes problematic. that’d allow for folks to be able to, for example, make an iPhone layout with a buncha encoders to finetune things – which would just become unusable once Patterns are going.

@okyeron, super curious to see what you add to TouchOSC templates for Grid and Arc – i feel like the slowdowns are inevitable if we attempt the refresh rate of grid + arc, but it seems like you’re finding nice ways to stagger data + packets.

hope all’s well with everyone!

2 Likes

I must say, Lack of arc ability is by no means a deal breaker. It’s already extremely expressive without it. It’s hard not to always want to squeeze just a bit more out of the lemon. Don’t want to come off as greedy!!!

1 Like

I have some new updates (from the past few days) on this on my github. Still kinda laggy on arc stuff. I’m still somewhat at the mercy of how fast a particular script sends refresh updates. Can’t quite make the grid bits work properly with CC yet.

(I’m probably doing some super janky stuff highjacking grid globals, etc. :crazy_face: )

(or maybe the oscgrid not working because you’re doing some other magic with OSC messages and mine aren’t going through)

1 Like

Just tested the CreatCodes TouchOSC template on my iphone and yes it works, but the buttons are very very very small (on my iPhoneSE) :slight_smile:

2 Likes

the ipad TouchOSC layout can totally be adapted to iphone, yeah! just follow the naming of the ipad interface objects and it’ll all click in.

the main hope for supplying a unique interface (vs a direct 1:1 grid port) was to create a sort of template for folks to roll their own cheat codes interfaces. those hooks can be reused and adapted using any OSC platform/source.

use a webcam and Wekinator to jump between pads! use a Wiimote and Max to control rate! etc etc :slight_smile:

3 Likes

did you download the mac/win/linux app? that’s what you’ll use to send it through to your device

1 Like

THANK YOU for clarifying all of that for me!

1 Like

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