Super Janus

I’ve had two Super 6 Desktops sitting here for some time; my original intent with acquiring the second one was to use them simultaneously for drone composition work. However, connecting them together and controlling them is a bit of a kludge. I’ve been experimenting with coding in Claude for some things at work so I thought I’d have a go at making a program that links two Super 6 units together as if they were a Super Gemini (sort of…at least that’s the remit I gave to Claude). Here, after about five hours of prompting and multiple beta iterations, is what we’ve come up with.

Super Janus is a free, open-source browser application (Chrome/Edge) that confederates two UDO Super 6 synthesisers into a unified dual-engine instrument, inspired conceptually by the UDO Super Gemini and, more distantly, by Eliane Radigue’s compositional practice with the ARP 2500. It runs as a single HTML file (no installation, no dependencies) and communicates with both synthesisers simultaneously via the Web MIDI API.

The application handles MIDI routing between a keyboard input and both synthesisers, with seven play modes: Dual, Single, Split, One-Two, Cycle, Random, and Chaos (George, forgive my cheekiness taking aspects of both the Gemini and DMNO) controlling how incoming notes are distributed across the two units. A dedicated Panel Input port receives CC and NRPN data from whichever Super 6 you are using as a control surface, and mirrors selected parameters to the other unit in real time with optional pickup mode to prevent sudden jumps when the two synths are at different positions, and optional Hi-Res NRPN mode for 14-bit resolution on supported parameters. A Drone Setup section lets you initiate sustained notes across both units simultaneously, with support for just intonation tuning (7-limit) using per-channel pitch bend for independent interval tuning. Presets save the complete panel state plus Program Change numbers for both units, so recalling a session also recalls the correct patch on each synth automatically.

This is a prototype (v0.3.1) shared with the Super 6 community for feedback and further ideas. It is released under CC BY-NC-SA 4.0. One known limitation worth flagging, the Super 6 does not currently implement SysEx patch dump (the DUMP function in Global Settings is listed as “reserved for future use”), which means complete patch state cannot yet be captured programmatically. Patches must be saved manually on each synth. If UDO were to implement SysEx dump in a future firmware update, Super Janus could be updated to capture and recall complete instrument state in a single operation, which would significantly improve the workflow for anyone using two Super 6 units together (hint hint).

Right now this is basically a proof of concept; if there is some interest, I (or ‘we’, I’m still not sure how to refer to Claude as a collaborator in this) will port it over into a ‘real’ freestanding application. This would help with some of the MIDI communication issues I’ve had with the browser version as well as assist with adding automation. It was my intent to have many of the parameters to include very long automation functions so the user could set an start and end point over a given period of time for drone composition; for instance move the CC value of the filter from 30 to 90 over a period of 15 minutes. However, that became quite buggy in an HTML instance.

It’s not my intent to make a commercial product, just want to bring something to the community for creative use (also I can’t imagine there is a huge market of people that have two Super Sixes sitting about!). Please have a try and share any feedback you may have. I’ve attached both the HTML file as well as a basic manual of operations.

Download here via Dropbox

Also, here is a brief (well brief for a drone composition) clip I made this morning whilst testing this. Both synths are simply triggered by the Super Janus in a given key with some additional notes. All the parameters were just manually manipulated across the piece. It’s nothing especially fancy in concept as a program, just a little unifying element in between.