Zynthian OSC CUIA over Open Stage Control - template

Hi all zynthianist,

I started learning the make template for Open Stage Control which sending OSC messageses.
I don’t know if I will be able to make a template for SooperLooper on Zynthian, but the first attempts are here in the form of basic CUIA commands.
Maybe this template will help those like me who have a encoderless Zynthian.


zynthianCUIA.json (110.8 KB)
P.S.: These three commands are missing from the template

"/CUIA/PRESET_FAVS"
"/CUIA/ZCTRL_TOUCH"
"/CUIA/LEARN"
6 Likes

Fantastic ! Thanks a lot @ToFF .

I’ve discovered OSC and its creator last year. But I haven’t tried it yet, it was a bit complicated for me.

For me too, i’m familiar with python simple scripting and html/css code, it’s all.

Jean help me when I was trying his loop192 looper. I had some issue convert midi signal to correct osc commands.

I wonder how many zynthianist use open stage control and OSC?

I have new version of template with Zynthian OSC CUIA. I was learning how to script for Open Stage Control, and I regretted not including the three missing commands. So here is the result.

zynthianCUIA_v2.json (120.2 KB)

I have prepared a template for the mixer as well, but currently the registration of the address from which the call came does not work in the test version.
I created a bug report about this

Before creating the masterpiece, i.e. the Superlooper template, I am now warming up on the template controlling the routing of controllers and synthesizers via BomeBox.

Stay tuned

7 Likes

Hallo to all zynthianist,

I prepared OSC template for zynthian mixer. Here is results:
mixer_zynthian.zip (3.6 KB)

  • download and unpack to selected place
  • in file mixer.js change adress on your zynthian - edit var zyn_host = '192.XXX.YYY.ZZZ'
  • run Open stage control server
  • i using this start command:
node ~/ProductionMusic/open-stage-control-1.17.0-node 
-s 192.XXX.YYY.ZZZ:1370
-l /home/patch/ProductionMusic/Zynthian_Mixer/mixer_zynthian.json
-c /home/patch/ProductionMusic/Zynthian_Mixer/mixer.js`
--osc-port 1370
-d 

where -s is zynthian address, -l path to file with tempate for mixer mixer_zynthian.json, which automatically will be open in browserr, -c path to custom module mixer.js, which starting listening of zynthian, and most important is --osc-port 1370 setting osc server to listening of zynthian.

or lunch application

There is sumarized OSC Commands for this template:

  • Numbering of chains are X (0…15) or 256 for main chain
  • /mixer/faderX float - Chain X fader level [0.0…1.0]
  • /mixer/balanceX float - Chain X balance value [-1.0…1.0]
  • /mixer/muteX integer - Chain X mute [0|1]
  • /mixer/soloX integer - Chain X solo [0|1]
  • /mixer/monoX integer - Chain X mono/stereo [0|1]
  • /mixer/dpmXa float - Chain X peak programme level A-leg (left) - Notification-only - display values in range [-60, 0]
  • /mixer/dpmXb float - Chain X peak programme level B-leg (right) - Notification-only - display values in range [-60, 0]
  • /mixer/dpmA float - Main peak programme level A-leg (left) - Notification-only - display values in range [-60, 0]
  • /mixer/dpmB, float- Main peak programme level B-leg (right) - Notification-only - display values in range [-60, 0]
  • /mixer/heartbeat - Null message used to keep client registration active *Send every 60s to receive notifications
4 Likes

The strips are numbered based on the chain’s MIDI channel. (This caught me out because I didn’t have MIDI channels 1 or 2 populated so had to adjust the third strip to change the first displayed strip.

Yes, the numbers of strips are fixed from 0 to 15 (and shows as 1 to 16), main strip has number 256.

I can imagine extending OSC with the commands:

  • whether a specific chain exists - for non-existent ones, the display would be suppressed
  • chain selection, turning it on in omni mode of zynthian as is working on stage version of mixer

This would be a good enhancement but I suggest waiting until we refactor the base code so that chains are not (necessarily) linked with MIDI channels.

I have now run this on a machine that can get the feedback and see some distortion of meters. I don’t know if it is intentional but a blue line at the top (peak hold?) wiggles and top of the green bars have a similar effect.

I haven’t been able to display the current volume value using a bar(or level) in OSC yet. A graph is used that gradually plots values over time and moves. By narrowing it, I give the impression that it is a bar, but in reality it is not. If I come across a better display I will make improvements. Or someone more experienced in Open Stage Control could advise.

I managed to find a few examples of how to make a bar view that uses a fader widget. So here is a version that is already comparable to the original Zynthian mixer UI. Please change mixer_zynthian.json file to the new:
mixer_zynthian.json (47.0 KB)

2 Likes

That looks much better - well done! Your next challenge is to show different coloured bars, e.g.

  • under -18dB = green
  • -18dB … -10dB = orange/yellow
  • over -10dB = red

challenge accepted :slight_smile:

1 Like

Challenge completed. Now bars change collor.

Last version of Mixer tempalte I loaded on GitHub - GitHub - ToFFmashines/Zynthian-OSC: Tempate for Open Stage Control with controll of Zynthian synt

Templates are available for CUIA, Mixer and joint Mixer+CUIA.

Download and edit as you like.

5 Likes

Can the Open Stage Control server run alongside Zynthian on the same Raspberry Pi 4?

Theoreticaly yes, but I didn’t tried it. I have its on my do list. In the first you must install node and make some script for start of OSC, maybe best will be daemon service.

In the last few days I have decided to continue what I promised.
The template for sooperlooper can now:

  • connect to sooperlooper in zynthian (or with its instance on another PC)
  • register global variables and receive information for example about the strength of the input and output signal.
  • I have created probably all the important buttons. I left out Save and Load, it is useless for remote access.

I will see how I can revive them, for example for pitch I did not find any mention in the OSC documentation of sooperlooper.

6 Likes

wow that looks just like sooperlooper hahaha

in my setup I have a little c++ file that controls the lights of the apc25, this was one of the alternatives I was checking out how to port that to maybe a zynthian control driver in python, might tackle that today

I really like this as an alternative cause a user with a tablet can just connect that for the time being…

I see open stage control opens over the network in a browser…, can one dump those layouts into touchosc for potiential wired access? I’ve done a few wireless controllers for loops and they get close to the real deal, but the latency jitters over bluetooth and wifi (interestingly enough cheap 2.4ghz dongle wireless game controllers and stuff have no latency jitter I can notice, have an snes style one and its amazing)

That’s the goal to create a Zynthian SooperLooper GUI working over the network using OSC. I have a dedicated raspberry pi with PatchBoxOS and 15’ touch screen for this. Of course you can also use a tablet. My Zynthian is encoderless, so an OSC template with a mixer and sooperlooper control makes life easier.

That’s beyond my skills… but some can do it… Supported plug & play MIDI controllers - ZynthianWiki
specialy Akai APC Key25 mk2 driver

exactly… But I still haven’t tried running nodejs with open stage control server directly on zynthian.

I have no experience with touchosc. The Open Stage Control template layout is in json format. I don’t know if there is a converter.

Personally, I prefer the wired solution. The Open Stage Control template can be supplemented with javascripts in custom-module, which would convert the midi signals from the controllers to OSC commands. Which is the solution I want to work on.

Example:

FCB1010 controller → RPi with Open Stage Control Server ↔ OSC signals over the network ↔ Zynthian

4 Likes