OSC'elot an OSC mapping module

Hello good patchers, I’ve taken @stoermelder 's MIDI-CAT and done a search and replace for MIDI to OSC. This is what came out.

There is an example OSC controller template in the presets folder. You will need to use Open Stage Control for it: https://openstagecontrol.ammd.net/ It’s free and let’s you have an OSC controller anywhere you have a browser-phone, pc, tablet etc.

For people who use TouchOSC and such please create some templates and add to this thread if possible to help others. Any issues please let me know, especially anyone using hardware OSC controls.



Please grab it here and let me know of any issues.


Nicely done!

1 Like

Thank you, very usefull.

With cvOSCcv, I made a patch that let me save values of sliders with the patch, by using “knobs” as storage.

Could you implement some storage function of values, I can’t figure out how to save values of objects with the templates in TouchOSC yet. It’s not optimal if you one has to dial in every knob everytime the OSC controller is connected with 0 vaules of it’s controls.

vcv and touchosc files OSC.zip.txt (9.4 KB)

Please allow .tosc on this forum.

1 Like

If I understand correctly, once you setup a patch and it’s OSC controls. When you reopen it, it populates it with the values of zero since the Controller has not been initialized? With OSC’elot, all the current values of mapped params are sent to the controller when you start the Sender. You can also use use the ‘Re-send OSC feedback’ option.

1 Like

I tried installing TouchOSC and using your template, unfortunately TouchOSC won’t start anymore on my PC. I did notice the address was something like /fader1, so it’ll get ignored when using with OSC’elot. You will see logging about it being ignored. You should update the addresses to something like /fader (1, value).

Alternatively try open stage, once you get the hang of it, its very powerful to create custom controllers. You can use it with midi too.


Yes - I just wrote hexler.net,the publisher of TouchOSC, about it.

It can use “/name index value” - but the index’es of the controls are hidden to the user - they are automagically assigned at designtime. I just deleted all faders i my template, and started over … the newly added fader is indexed “33” :frowning:

I’ll probably use Open Stage Control instead

Ah I see, maybe if you start a new template? I feel like it would allow customizing arguments and values. Anyway with my template you can easily edit to be any number faders/enc/buttons you want. If you can write some JS you can even script it so it shows exactly the number you have mapped.

Hopefully the more regular OSC users can share some cool control templates, whatever the software.

I like it.

1 Like

Sweet, you’re becoming an expert in no time. Now connect it to OSC’elot to see teh magicks


Awesome, you probably don’t need the Knobs in your patch anymore, but depends on what you’re trying to do. You can press “Shift+D” and click on another module to map that module without clearing the OSC assignments. The controller will update with the new values, once you save the mappings you can switch between modules using the prev and next buttons (Which you can also do from OSC)

I use the knobs to generate CV’s - uni / bi polar and mixers… all kinds of good stuff. It so great that your OSC’ilot is bidirectional, Now i can turn the knobs in vcv or on the OSC controller. With my previous method, the OSC controller locked the vcv object.

1 Like

Tutorial, make BCF2000 in Open Stage Control

1 Like

Excellent, also looks like he’s going to do a whole series

The latest build has an expander that has trig/cv outs. Should be in the library shortly.


FYI. Here’s the answer I got from Hexler regarding TouchOSC and the use of “index” in OSC messages.

Hexler support Q&A


I’m trying to make a template for a new VCVRack module: oscelot/Oscelot.md at master · The-Modular-Mind/oscelot · GitHub

It expects the format

OSC Messages must have an address ending with /fader
It must have two arguments, Id (Integer) and Value(Float between 0-1)
/fader, args: (1, 0.5573)

OSC Messages must have an address ending with /encoder
It must have two arguments, Id (Integer) and Delta Value(multiples of -1.0
or +1.0)
Encoders have default sensitivity set to 649
/encoder, args: (1, -1.0)

OSC Messages must have an address ending with /button It must have two arguments, Id (Integer) and Value(0.0 or 1.0) /button, args: (1, 1.0)

I find it impossible to see/control the “index” in the editor - used as argument in OSC.

If I make 10 sliders with name “fader” - they will have index 1 to 10 - if I delete 5-10 and make 5 new sliders, they will have index 11-15

I have to be able to set an unique index for each control. Possibly even be able to automatically re-index controls, from top left to bottom right.

Answer from support@hexler.net:

Index uses the objects index number as a value; it sounds like you want to be using Float or Integer depending on the specific message. More information on using different data types for arguments can be found here: Editor · Messages · OSC · TouchOSC | hexler.net

See the attached image for an example based on the Faders section mentioned in your email:


The Address is set to a constant of /fader . The first argument is a Constant set to 1 (assuming the ID of this fader would be 1). The second argument is a value set to x (which uses the fader’s value of x). This is a float scaled from 0-1, so when the fader is moved it will send a decimal value between 0 and 1.

Hopefully this clarifies some information - Index is generally used if you need to say have a slew of faders that just increase by a single CC number (so the first fader uses its index as the CC, which would be 1, the second fader would be 2, etc). When making custom messages you generally want to specifically designate some parameters, as in this case, so just make sure to read that documentation link above on the different data types you can use to assign in messages.

As a reference, the online documentation for TouchOSC can be found here: Introduction · TouchOSC | hexler.net

Hopefully this helps! Please let us know if you have any other questions or need clarification on any of the details mentioned here. We apologize for any inconvenience this has caused you, and thank you for your use and support of TouchOSC!

Great this should help other TouchOSC users too.

first let me say, that this module is very very nice - especially combined with open stage controller

sadly i’m still struggling a bit how to configure everything properly on open stage controller side i think: i have created two faders there and set address to “/fader” for both and preargs to “[1]” for the first and to “[2]” for the second, but i guess this is not correct as both seem to arrive as the same fader in oscelot - can you please give an example of how the settings should be in open stage control in such a case?

a lot of thanks in advance and best wishes - hexdump

Thanks for the kind words, have you tried the OpenStage controller I bundled with the module. You can find it in the presets folder. In your config the value should be a float between 0-1. For the osc arg types you should put ‘if’ (integer and float) for id and value

thanks for this hint - i did not know about this example open stage controller session - with that one it works :slight_smile: … will have to study it a bit, but i guess it was the missing “if” in my case.

btw. i’m maintaining a build of vcvrack for 32bit and 64bit arm systems and for the 64bit arm systems i had to add this patch to oscelot to make it not crash with an assert: oscelot: aarch64 is 64bit too ... · hexdump0815/vcvrack-dockerbuild-v1@140f6ac · GitHub - maybe you like to add it to the upstream code even if by default aarch64 is not really supported in vcvrack?

a lot of thanks once more and best wishes - hexdump

update: i just checked and using “[1]” and “[2]” for preArgs and “if” for typeArgs for both faders it now also works with my little test example - maybe it would be good to add a little info about those settings to the oscelot doc as well?

1 Like