Listen up, kid. I don’t need to know how you ended up acquiring not one but two Norns-class cyberdecks. But slingin’ two ‘decks without a proper setup is like waltzing into corpo HQ without a plan.
You’ve got the hardware, sure. It’s gonna take more than just showin’ off your chrome to be a legit Netrunner. Do the math: ya got two decks and one interface plug, yeah? That’s like tryin’ to ride a bike with one wheel. We need to link those bad boys up, turn 'em into a seamless unit with bidirectional comms. Welcome to the sordid world of M.I.D.I.
Now, I get it. Not everyone’s got the eddies for a next-gen 2host setup. Lucky for you, my fixer’s got a line on a ‘less-than-legitimate’ option. It’s a black-market mod, and yeah, might induce a touch of brain-burn here and there, but in this biz, risk is the name of the game. It’ll get the job done, it’s nanomachine-proof, and here’s the kicker—it’s free.
I’m talkin’ CyberMIDI: wireless transmission of M.I.D.I. between ‘decks. Give me a minute to jack in and upload the mod, and I’ll have your hardware singing in harmony. All I need in return is a little job from you. Consider it a favor among friends in the neon-soaked shadows. So, what’s the verdict, choom? You in?"
Requirements
2 Norns-class cyberdecks running update 201023 or later
Documentation
Install from the Maiden project manager (or ;install https://github.com/dstroud/cybermidi)
Enable the mod on both the sending and receiving units in SYSTEM>>MODS>>E3 (+ symbol) and restart.
Edit mod settings via SYSTEM>>MODS>>CYBERMIDI>>K3. Use E2 to navigate and E3 to change values. K3 refreshes LAN devices.
The LAN option shows other Norns on your subnet running CyberMIDI and Manual allows entering your own IP. You can loop MIDI back using localhost IP 127.0.1.1.
IP settings are applied immediately (watch out for hanging notes if you are sending MIDI) and persist on reboot.
Add the “virtual” MIDI port in SYSTEM>>DEVICES>>MIDI. Use this to both send and receive MIDI in your script.
This is an idea that came from @alanza in the Composing With Multiple Norns topic. I figured while I wait for the 2host restock this might hold me over. I’m not much of a coder and have barely tested it so use at your own risk-- and let me know if it works or not!
Misc to-do/roadmap stuff:
Norns’ MIDI clocking and CC PMAP functionality does not seem to work with the virtual MIDI interface. We can send and receive those messages but the system ignores them. I don’t know if this is intentional or an oversight but I’d appreciate it if anyone who knows what they are doing (i.e. not me) can take a look at the issue. You can sync with Link clock source, however.
Other MIDI functions should work but I’ve really only tested MIDI notes and CC so let me know if you find any issues.
I am here to say that I am going to install this simply because the description is so rad. And then I’m going to go reread the Shadowrun players guide.
I just posted an update that takes care of vport hotswapping and doesn’t require script launching for LAN discovery. I touched a lot of stuff so I’m sure I broke something- gotta run do family stuff tho.
@Gahlord Thank you for repping Shadowrun. That’s my true love but it seems Cyberpunk is the current zeitgeist so I copped some terms from that world haha.
@xmacex Totally safe and definitely doesn’t pipe MIDI to a rogue AI. But it does have the ability to send to any IP so if you do port forwarding (port 10111) I think we could make this happen. Maybe I should just do that for one of the Twitch streams and have everyone dump MIDI at me?
Aaaaa the madman actually did it! thank you greatly!
EDIT
Works like a charm between two nornses. I know this might not work, but technically could you connect it to a computer to control vsts in your DAW?
I’ve tried using MIDI network setup, basically going with a manual address on norns and computer, but without luck. I assume touchOSC might be able to help here?
My implementation is pretty rudimentary and based on the way that Norns constructs MIDI functions. So while someone could make a CyberMIDI plugin, I’m not sure it’s the best option (and making plugins is outside of my meager skillset).
The Norns virtual MIDI interface was originally created to support rtmidi which I believe can use more standard network MIDI protocols. There’s a good topic here on Lines that folks might want to look into if interested in reviving that work. FWIW, the only time I tried using Apple’s network MIDI it was unreliable and had unacceptable latency/timing. Been a few years so maybe things have improved.
A third option might be reworking CyberMIDI to work with something a bit more general-purpose like MidiOSC, but again we would need someone to make a plugin. I’m not sure this would be worth pursuing until RtMIDI has been more thoroughly investigated as an option.
got this installed on a norns and an XL, installation seemed to go ok, but after restarts the cybermidi pages only see themselves despite being on the same LAN. anything I might have missed?
It might be because I tried to get too clever with the UI. When you have LAN selected, you have to use E2 to highlight the IP address portion of that line. Then use E3 to scroll through any IPs on the network.
If that doesn’t work, let me know what Maiden outputs when you open the mod menu or press K3 (refresh LAN).
@edrapley What are you wanting to do with the TRS? CyberMIDI just passes info using the “virtual” port but doesn’t care about any physical ports.
Possibly related: I’m now wondering if something like Passthrough works with the virtual port which could allow for some cool stuff like having one Norns with a 2host to pass hardware MIDI to a second Norns via IP.
I don’t think Passthrough works with the virtual MIDI but by monkey-patching the MIDI event (I might be wrong).
I’ve used ttyMIDI to cook up a quick breadboard MIDI controller out of an Arduino Uno and get MIDI data from serial device into ALSA and the norns virtual MIDI device.
Yes that looks pretty much like the Arduino setup I mentioned above with owenosborn’s ttyMIDI, systemd and udev with the exception that I don’t think shieldXL uses USB and serial-over-USB for the uart device.
Oooohhhhh! I have a shieldXL and just haven’t gotten around to enabling the TRS MIDI, LOL. Didn’t realize it, too, used virtual.
Totally spitballing here but if there’s a conflict with multiple things trying to use the virtual port I bet we could find a way to manage this through MIDI channels. Like specify one channel (or a range) for CyberMIDI and the rest go to TRS.
selecting different IPs from the “lan menu” doesn’t see anything except 127.0.0.1. in maiden on the XL, entering the cybermidi menu or pressing K3 for the LAN search I get CyberMIDI: Pinged by and then its IP. still in XL maiden, I also get the pinged messages from norns, going into the menu or K3, so at least the XL can see both machines. none of these pings are visible for me in norns maiden, even though XL can see its pings, norns does not seem to see even its own pings.
on both boxes if I exit the cybermidi screen into the mod selection menu, it says table >> write: /home/we/dust/data/cybermidi/prefs.data
I do have the XL virtual midi enabled if that makes a difference to anything.
Thanks for reporting back- this is helpful in narrowing it down.
Sounds like the issue is most likely something with the Norns (although we can’t completely rule out a network issue). Here are a few more things to try and narrow it down:
Test on Norns after disabling any other mods and restarting (without any scripts running). At the very least I would expect Norns to report being pinged by itself when you open the mod menu- just like you saw with the XL. Could be some other mod or script is not playing nicely with others.
Since the XL responds to pings from Norns, but not the other way around, the issue seems to be specifically with Norns receiving OSC. On Norns, try using Manual IP and enter the XL’s IP address. Then try to send some MIDI from Norns>> XL using the “virtual” port. You won’t see any Maiden messages- just open a script like mx.synths/mx.samples on the XL and make sure the MIDI port param is set to use “virtual”.
If that works, maybe test the other way around. If the issue is only with Norns receiving messages, it could be something with your network configuration. Make sure you don’t have a router firewall blocking port 10111.