Jabrudian Missing Link Wireless OSC<>MIDI Translator

Started by ForestCat, July 05, 2013, 07:36:31 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ForestCat

I saw a lot of activity here re: the Missing Link a year ago, but not much recently.  It also appears pretty quiet on their forum. What I'm wondering is this:  Have any of you used the Missing Link enough to have formed any conclusion re: it's dependability/stability/reliability for use in live performance?  I started with it a year ago when I wanted to use Lemur to  try to fill in some of the gaping holes in the GR-55 feature set.  I got a fair bit into it, and hit a roadblock w/ a bug in in the MIDI in to osc implementation which I was told "the programmer" would contact me about, but after repeated inquiries & no joy I abandoned it.  I also experienced a fair amount of communication loss, network disconnects, etc, but I'm not sure if the unit itself was to blame.  I'm at a point where I'm considering  revisiting it, but I wanted to hear some of your experiences before I throw too much time at something that may not be ready for prime time.
Thanks.


mbenigni

Hi ForestCat.  I use one pretty extensively - I put it inside my GR55 chassis and it's on whenever the GR55 is on, responding to SysEx etc from TouchOSC on an iPad.  However, communication is not bi-directional - it's strictly from TouchOSC to the GR55 MIDI IN.  So if there's a bug with the Missing Link's MIDI In, I would not have encountered it.  I was also talking with Jabrudien (a representative named Hans was on this forum for a while) pretty frequently back in 2011, hoping to get bi-directional SysEx working.  (We may even be talking about the same bug/ limitation here.)  But I stopped getting feedback, ran out of time myself, and just kind of let it go.

I've never had communication loss, but I have had some network disconnect experiences.  Specifically, there was one rehearsal where the drummer brought his MacBook along, and whenever he powered it up, my iPad would lose track of the Missing Link as a WiFi host.  One thing I meant to try (and never got around to) was securing the Missing Link with a WEP or WPA code.  (There are instructions on how to do this on the Jabrudien site.)  Not sure whether this would help, but it seems like it would be a good idea prior to performance in public regardless.  I've gigged with the Missing Link a couple of times and had no problems, but 99% of my playing happens in the safety of my own home these days.  :)

I'm guessing Lemur is transferring a lot more data back and forth to the ML than TouchOSC does, so this isn't a perfect comparison.  And then there's the fact that I'm not using the ML's MIDI in at all.  But FWIW, mine does what it does reliably, excepting that one incident with the MacBook conflict.

ForestCat

Thanks, I appreciate the feedback.  We may be talking about the same thing re: network disconnect/communication loss, I just used the wrong term.  That's what was happening here if I recall.  re: midi in/osc, the issue is that lemur has a fixed osc port#, not changeable (stupid), and I was unable to set the ML to transmit in that port#,  other port#'s yes, just not 8000 (or whatever it was), verified by an osc monitor. It was really screwy.  So there was no way to  send MIDI in from ML to lemur.

But it's good to hear that yours has been stable, even w/o MIDI in.

Elantric

#3
http://wifimidi.com/

The Missing Link OSC/MIDI Translator is a standalone hardware device which contains its own WiFi radio, and translates specially-coded OSC messages sent from your mobile device or computer into standard MIDI messages to control synthesizers, drum machines, mixers, digital audio workstations, or anything which responds to MIDI commands. It does this with low latency, high flexibility and configurability, and without the need for a computer anywhere in the control chain. Multiple wireless OSC devices may connect simultaneously to The Missing Link, making collaboration easy.


Hans, (the Inventor) posted info on the first version here
https://www.vguitarforums.com/smf/index.php?topic=3205.msg20874#msg20874

And Marc Benigni (mbenigni) created a TouchOSC Remote control for GR-55 and mounted the "missing Link bare board inside his GR-55 - for ipad wireless remote control




Details here:
Marc Benigni's GR-55 TouchOSC Navigator for iPad
https://www.vguitarforums.com/smf/index.php?topic=6501.msg42883#msg42883

Elantric

#4
The Jabrudian Missing Link Wireless OSC to MIDI converter hardware unit is necessary to translate "OSC" to "MIDI"  - MIDI is required for the GR-55 to understand the commands.
The sad news is that as of Oct 2014 - the Jabrudian Missing Link Wireless OSC to MIDI converter is no longer being manufactured
https://www.facebook.com/WifiMidi
QuoteDear Missing Link friends and fans, please note that the Missing Link is no longer being produced, and there are no plans to revive it.

This has been the case for some time, I apologize for not being more active.

Best of luck with all of your musical and other projects, and thank you for all of your support.

Yours,
-Hans Lindauer

In the recent years - TouchOSC has added MIDI control to TouchOSC - but there are other IOS control platforms ( MIDI Designer, TB MIDI Stuff, Lemur) which may be better suited to remain 100% MIDI - many include Bi-Directional MIDI communication now -   

Elantric

#5
The Jabrudian Missing Link is now out of production
contact us at missinglinkmidi@gmail.com
https://www.facebook.com/WifiMidi


But here are archived reference pages  - thanks to Web.Archive.org

http://web.archive.org/web/20111210201021/http://wifimidi.com/setup

And see attached for a ZIP file with Missing Link TouchOSC Templates and  PDF manual


======

The Missing Link OSC/MIDI Translator is a standalone hardware device which contains its own WiFi radio, and translates specially-coded OSC messages sent from your mobile device or computer into standard MIDI messages to control synthesizers, drum machines, mixers, digital audio workstations, or anything which responds to MIDI commands. It does this with low latency, high flexibility and configurability, and without the need for a computer anywhere in the control chain. Multiple wireless OSC devices may connect simultaneously to The Missing Link, making collaboration easy.



Specifications:

802.11b WiFi
- adhoc or infrastructure modes
- open, WEP, WPA or WPA2 security

OSC via wireless UDP
- OSC to MIDI
- MIDI to OSC
- accepts multiple simultaneous connections

MIDI
- MIDI IN/OUT (standard DIN-5)
- configurable internal routing with soft MERGE/THRU
- all MIDI commands fully supported, including SYSEX, NRPN
- class-compliant USB MIDI IN/OUT *coming soon via a free, downloadable update

POWER
- 9V-12V DC, tip +/-, >=250mA
- or via USB

PHYSICAL
- 3.3" x 2.2" x 1.6"


(The computer is optional)

ROUTING_MIDI


ROUTING_OSC


ROUTING_USB



MIDI Message Generator ( this link works)
http://web.archive.org/web/20110902093230/http://wifimidi.com/midi-message-generator/



Setup Instructions

Note: Although other apps will work, we recommend TouchOSC to handle the OSC duties on your mobile device. It's what we use here at Jabrudian Industries, and what we've done our testing with so we know it works well.

Note also that TouchOSC for Android does not yet allow for custom OSC messages. Your OSC app must allow custom OSC messages, and must also output its values in the 0-1.0 range (floating point), with slash ("/") delimiters. Those last two requirements should be pretty standard.

Mobile Device Network Setup:

- Power up your Missing Link. You can use either a 2.1mm DC wall wart (tip + or - is OK) or USB.
- The LED will turn red. Wait a few seconds, and the LED will turn green when the WiFi network is ready.
- Go to the SETTINGS on your mobile device. Under the Wi-Fi heading, where it says "Choose a Network..." you should see "MissingLink"
- Click on the blue ">" arrow next to MissingLink
- Under IP Address, press the button to set it to "Static"
- Set the IP Address to "192.168.1.69"
- Set the Subnet Mask to "255.255.255.0"
- Leave Auto-Join, Router, DNS, and Search Domains blank, and leave HTTP Proxy Off
- Go back to the Wi-Fi Networks and choose the MissingLink as your network. Your device should connect to it.


TouchOSC Setup / Template Loading

- Under Settings > Wi-Fi Networks, re-connect to your regular network which is connected to the internet.
- Install the TouchOSC app onto your handheld device from the App Store: TouchOSC on iTunes
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288120394&mt=8%22

- Open TouchOSC, and press the ">" arrow under Network settings at the top of the first page
- Set Host to 192.168.1.100
- Set Port (outgoing) to 12344
- Set Port (incoming) to 12345


- Download the MissingLink iPad TouchOSC quickstart template or MissingLink iPhone/iPod Touch TouchOSC quickstart template to your personal computer
( * Note: See attached below for a ZIP file with Missing Link TouchOSC Templates and  PDF manual )
- Connect your device to your computer using the dock connector USB cable and open iTunes
- Click on your device name in the left-hand column, and then click on the Apps tab
- At the bottom, you'll see TouchOSC under File Sharing
- Click Add... and browse to the MissingLink.touchosc (or MissingLinkiPad.touchosc) template to add it to your device

Test the Missing Link:

- Go back to Settings > Wi-Fi Networks on your device, and re-connect to the Missing Link Network
- Open TouchOSC, choose the Missing Link layout, and select "Done" at the upper-right corner
- Touch a controller in TouchOSC. You should see the LED blink
- Connect the MIDI OUT port of the Missing Link to the MIDI IN port on a keyboard or other MIDI device which responds to NOTE ON/OFF and/or CONTINUOUS CONTROLLER messages
- The keyboard on the KEYBOARD page should sound notes around middle C on MIDI channel 1, and the pitch bend and mod sliders should also register
- The sliders on the second page should send CC data on MIDI channel 1, as indicated
- If these aren't working, please check to make sure you followed all of the above instructions correctly, and that your target MIDI device is set to MIDI channel 1

Now you should be all set up! Repeat these steps for all wireless OSC devices you wish to use with the Missing Link, but each one should use a unique last digit on the static IP address. Like 192.168.1.70 or 192.168.1.68 (but not 192.168.1.100). More than one device may be connected at once, but be careful that they're not trying to send confusing MIDI data to your instrument(s) or things might get weird.

IMPORTANT: If you are going to be performing live with the Missing Link, be sure to turn Notifications OFF. If you're going to be using an iPhone, you should ALSO 1) turn ON Airplane Mode, and then 2) turn ON Wifi. Otherwise, somebody will probably call or text you during your show, or post to your facebook, etc. and it will make us both look bad.



Sample Messages:

/midi/0x90 60 x - Note on, channel 1, note 60 (middle C), velocity will be 127 on press, zero (note off) on release when used with a momentary push button

/midi/0xbf 1 x - Control change, channel 16, controller 1, value will be determined by the slider or rotary's value, range 0-127

/midi/0xc2 x(0..15) - Program change, channel 3, program number determined by slider or rotary, range 0-15

/midi/0x96 60 x 0x96 67 x 0x96 76 x 0x96 83 x 0x96 90 x - Multiple note-on messages (a chord), channel 6, notes 60, 67, 76, 83, 90, notes off when button released

/midi/0x96 60 x 67 x 76 x 83 x 90 x - Same as above (using running status)

/midi/0x96 60 x(0..100) 67 x(0..96) 76 x(0..92) 83 x(0..88) 90 x(0..84) - Same as above, but with different velocities for each note-on

/midi/0xb0 22 99 - Control change, channel 1, value 99 - with no variable, it only sends on a button press, but not on release

/midi/0xb0 25 x(0..100) 26 y(0..63) - Control changes, channel 1, each axis has its own range - for an x/y pad

/midi/0xf0 0x43 0x10 0x00 124 x(0..99) 0xf7 - This is a SYSEX message to control the OP1 oscillator fine tuning on a Yamaha DX7

/midi/button/0xfa/0xfc - This will send a start on press and a stop on release if using a momentary button, or for a toggle button it will send a start on the first press (button on)and stop on the second press (button off)

/midi/z/0x90 60 100/0xb0 25 x(0..100) 0xb0 27 y(0..35)/0x90 60 0 - This sends a note-on, channel 60, velocity 100 on press, CC#s 25 & 27 with individual ranges according to x/y position while dragging, and velocity=0 (note-off) on release - used with an x/y pad

ForestCat

Steve, you want to make this the "official" ML thread, where folks can post/find their experiences/knowledge, etc.  Once I have a cohesive body of notes, I'll post them here, if that's cool.

Elantric

QuoteSteve, you want to make this the "official" ML thread, where folks can post/find their experiences/knowledge, etc.  Once I have a cohesive body of notes, I'll post them here, if that's cool.

Yes please do!

mbenigni

I didn't realize the Jabrudian website was already down.  Bummer.

Somewhere hanging off that website was a little addendum describing a way to flash the ML so that its WiFi node would have a corresponding WEP/WPA password.  I can't seem to find it on that archive site.  Does this ring a bell for anyone else?

(I've had problems a couple of time where someone in the room would boot a laptop or whatever, and my iPad would disconnect from the ML.  It never occurred in public, but I always meant to follow up with password encoding to see if it improved stability.)

Elantric

QuoteSomewhere hanging off that website was a little addendum describing a way to flash the ML so that its WiFi node would have a corresponding WEP/WPA password.  I can't seem to find it on that archive site.  Does this ring a bell for anyone else?

News to me

Only reference to firmware update I see is here
https://www.facebook.com/WifiMidi

The Missing Link
January 18, 2012 ·
Testing out a new firmware revision which should take care of the TouchOSC crashes people have experienced with MIDI>OSC when the ML receives system common MIDI messages at its MIDI IN port. So far, so good. It should also allow Lemur to receive MIDI>OSC, which will open up many possibilities.
If you're interested in beta testing, please send a message to missinglinkmidi@gmail.com, and I'll reply with the new firmware and install instructions.

ForestCat

#10
I'll aggregate/annotate this stuff later.  For now:

Some of the config commands(note that the format for targetPort (and probably others...) is incorrect.  I'll document it when I've got all the info):
https://docs.google.com/spreadsheet/ccc?key=0AqxK2F33J-XZdFpqYm04Sm9PcVhhWE5RUUtUWXhpMnc&usp=sharing#gid=0

The MIDI<--->OSC converter from the old site:
http://www.xmlizer.net/hansLindauer/midiapp.html

The last non-beta firmware source code:
https://github.com/bzztbomb/MissingLinkFirmware
QuoteIntro

This is the bootloader and firmware for the AVR chip used with The Missing Link (http://wifimidi.com/). It is Copyright 2011 Jabrudian Industries LLC.

License

This code is licensed under GPL 3, see COPYING for more information.

Getting the code onto the device

See bootloader/README for more details on compiling and using the bootloader. There is a Makefile setup for use with avrdude and a AVRMKII ISP programmer in bootloader/avr_code. The target is program.

To compile/burn the main firmware, first make sure that the uploader program under bootloader/uploader has been compiled. Then go to the MissingLink directory and type make program.

General overview

The AVR chip communicates to two other modules. One is a WIFI module and the other is an USB MIDI module. The WIFI module is controlled via SPI. The USB MIDI module is controlled via I2C. OSC packets are received via UDP and processed by the uIP/WiShield TCP/IP stack and code in udpapp.cpp. This is then fed to the OSC library (http://recotana.com). From here the message is dispatched to the code that responds to it (MissingLink.cpp). For a normal OSC->MIDI message, handleTouchOSCMidi (HandleMidi.cpp) is called and uses code from Parse.cpp to parse the OSC address and send data to MIDI. For MIDI input, the avrmidi library (http://www.x37v.info) is used to parse incoming midi and routed out to the appropiate destination. Finally, I2C support is provided by the twi/arduino library and user code is at the bottom of HandleMidi.cpp. (More to come here..)

Elantric

Forrestcat

Excellent  - thanks for sharing these links-  many of these I never knew existed !
QuoteI'll aggregate/annotate this stuff later.  For now:

Some of the config commands(note that the format for targetPort (and probably others...) is incorrect.  I'll document it when I've got all the info):
https://docs.google.com/spreadsheet/ccc?key=0AqxK2F33J-XZdFpqYm04Sm9PcVhhWE5RUUtUWXhpMnc&usp=sharing#gid=0

The MIDI<--->OSC converter from the old site:
http://www.xmlizer.net/hansLindauer/midiapp.html

The last non-beta firmware source code:
https://github.com/bzztbomb/MissingLinkFirmware

mbenigni

Quote/config/security   Set wireless security (0 = open, 1 = WEP, 2 = WPA, 3 = WPA2)   /config/security 0   
/config/wep1   Set WEP1 key (only one supported right now)   /config/wep1 0x00 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xaa 0xbb 0xcc   on iPhone: 00112233445566778899aabbcc, must be EXACTLY 13 bytes = 26 digits
/config/wpa   Set WPA security passphrase   /config/wpa 'MySecretPassword' 0   

That's what I was looking for.  At one point Jabrudian posted these config strings along with some detailed instructions for WiFi security set up.

Elantric

#13
asb2m10 wrote>

Since I find the TouchOSC navigator quite useful, I've decided to write my own "missing link" for the Raspberry Pi : https://github.com/asb2m10/PiLink

It is quite basic for now but all of the TouchOSC panels are now functional without the need of an external computer ;)

What is cool is that the GR-55 USB midi interface on Linux is detected out of the box so no need for an external midi interface, simply plug your GR-55 USB to the Raspberry Pi. I had to add an usbwifi interface (20$) to make it truly wireless with my setup though...


Thanks for sharing your efforts with us here!

====
https://github.com/asb2m10/PiLink
PiLink - OSC to midi for the Raspberry Pi
PiLink is a simple python script that enable to route OSC messages to midi. It has been designed to be run headless on a Raspberry Pi to avoid to setup a computer between a device that sends OSC messages (like a iPad running TouchOSC) and a midi instrument.

PiLink tries to mimick some of the functionalities of the "defunc" Missing Link device.

Upon startup, the script will wait until /dev/midi1 is available. To stop the script simply send CTRL-C. If it is running at startup, simply kill it via SSH.

Installation

Copy the script to /home/pi
Set the script to executable: $ chmod +a+x /home/pi/pilink.py
In /etc/rc.local, add this line /home/pi/pilink.py
Configuration

Most of the configuration is done directly in the script :

MIDI_DEV : change this to the configured midi device (usally /dev/midi1)
UDP_PORT : the port that pilink listen for OSC messages

ForestCat

Really happy to see someone working on this. Hmmm...  wonder what kind of undertaking it would be to get the DIN-MIDI to OSC w/ SysEx implemented/working properly on this?  I got stalled dead on the Missing Link a few months ago after finally getting past the lemur/ML OSC port issue, only to discover that the DIN to OSC functionality is broken, even for non-sysex midi data.  That was a dealbreaker for me, unfortunately.

asb2m10

Quote from: ForestCat on May 06, 2015, 08:11:02 AM
Really happy to see someone working on this. Hmmm...  wonder what kind of undertaking it would be to get the DIN-MIDI to OSC w/ SysEx implemented/working properly on this?  I got stalled dead on the Missing Link a few months ago after finally getting past the lemur/ML OSC port issue, only to discover that the DIN to OSC functionality is broken, even for non-sysex midi data.  That was a dealbreaker for me, unfortunately.

That should be *some what* easy. I need a "reference implementation"; e.g. something that I can test what my code is doing and what the target software should be doing. Once I've got that setup, it should be a quick weekend hacking :D So, I need a TouchOSC or Lemur patch that is expecting a OSC+sysex message and with that I can manage thing up. Anything GR-55 would be a bonus since I own the device.

ForestCat

Would the lemur osc message format be the same for your device as the Missing Link?  I have Missing Link/GR55 templates that use GR55 Exp pedal CC data transmitted from its MIDI out port, change it to another CC and send it back to the GR55 to control a different parameter.  It "works", except that the Missing Link is throwing away most of the cc data if you move the pedal faster than a slow crawl...

asb2m10

mmmm... just send me the template and the "expected" behaviour for the GR-55 and I'll that as a test case for the next version of PiLink... I would be very surprised that Linux (Raspberry Pi OS) drops events if they are received too fast.  :)

admin

#18

ForestCat

#19
Sorry for the delay.  Missed the notification somehow.  OK, here's the simplest case:

GR-55 MIDI Out to Missing Link MIDI In
GR-55 EXP Pedal transmitting CC14
iPod Touch 3rd Gen running Lemur, connected to Missing Link WiFi network
Missing Link configured via TouchOSC template to route MIDI In to OSC

Load the attached Lemur template.  Moving the GR-55 Exp pedal should move the Lemur fader on the iDevice.  On mine, if I move the pedal slowly, the Lemur fader tracks faithfully.  As I sweep the pedal back & forth faster, eventually the Lemur fader gets glitchy.  That's why it's useless to me.  If you can make your Raspberry project accept DIN MIDI and faithfully translate that into OSC that Lemur will follow, that would be a Godsend.  I wasn't able to do anything with the Missing Link and DIN MIDI Sysex, since that is TOTALLY broken on the Missing Link.

I really appreciate your interest in this :-)

Elantric

#20
My 2 cents -

MIDI CC# will be a course 7 bit value, and may prove to be jumpy
http://www.midi.org/techspecs/midimessages.php

Other gear often uses 14bit NRPN Sysex for their wah-wah, as this yields smoother  / precise control , but requires high bandwidth

http://en.wikipedia.org/wiki/NRPN
NRPN stands for "Non-Registered Parameter Number" and is part of the MIDI specification for control of electronic musical instruments. NRPNs allow for manufacturer-specific or instrument-specific MIDI controllers that are not part of the basic MIDI standard.

Unlike other MIDI controllers (such as velocity, modulation, volume, etc.), NRPNs require more than one piece of controller data to be sent. First, controller 99 - NRPN Most Significant Byte (MSB) - followed by 98 - NRPN Least Significant Byte (LSB) sent as a pair specify the parameter to be changed. Controller 6 then sets the value of the parameter in question. Controller 38 may optionally then be sent as a fine adjustment to the value set by controller 6.

This fine adjustment is part of the conventional MIDI controller specification, where any of the first 32 controls can be optionally paired with a control offset 32 higher. This is the rare 14-bit Continuous Controller feature of the MIDI specification, and NRPNs simply take advantage of that existing option in the same way to offer 16,384 possible values instead of only 128.

NRPNs allow for MIDI control of a vastly greater number of parameters than the basic 121 set out in the basic MIDI standard.

ForestCat

OK, not "jumpy", or "glitchy".  Broken. You move the pedal to value 127, the Lemur fader stops dead at some arbitrary value like maybe 50, because the Missing Link can't buffer the data.  I am well familiar w/ the granularity of 7 bit vs 12, 16, etc.  This is not that.

ForestCat

I'm a little desperate (gig tonight) hope someone can guide me out of this corner I've painted myself into.  Anyone know a foolproof reset procedure for the Missing Link?  Today I tried to change the ML to infrastructure mode via the TouchOSC config template, in order to be able to have the laptop Lemur editor, the ML, and the iTouch work "interactively" with each other.  Rebooted, red LED, unresponsive.

I've tried:

reset button, powered
reset button, while powering
attempt to reflash, via USB, error that "Missing Link MIDI port is an output" (paraphrased)

Tried power via USB and adapter.

I have a gig with the thing tonight.  Desperate.  Any thoughts?

Elantric

#23
Painful!

I'll try to contract Hans Lindauer ( the Missing Link Inventor / co developer)

Bulk of known public info is here
https://github.com/bzztbomb/MissingLinkFirmware
  -
Check your PM Inbox

ForestCat

Elantric, here's an update:  I was able to flash the firmware using a PC w/ NO OTHER MIDI S/W or H/W (read: no "extra" MIDI ports...), however, the status LED is still red.  Thinking that flashing somehow preserves some option settings?  Gonna see if I can force feed it SysEx config strings via MIDI-Ox, etc, if the ports are responsive...

Thanks for looking into it.  So much for getting any practice in for tonight w/ my "new" pedalboard, lol.  I ought to know better :-)