GR-55 - Marc Benigni's GR-55 TouchOSC Navigator for iPad

Started by MCK, February 17, 2011, 03:05:24 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

MCK

That USB to barrel jack short cable is nifty and it would more than likely also power up the Missing Link using the USB host port on the GR55. This would mean the USB port on Missing Link would not be occupied. Any link for that little cable as a separate item?


MCK

Thanks. I think I will still go with the splice on the power supply option to keep the USB door closed & tidy and also allow the use of a thumbdrive.


MCK

Yup. This is exactly what I had in mind. Thanks for digging that up. Most appreciated.

PS. Why not stock a few of those and offer it on your shopping cart? I'm sure more than one of your future Missing Link customers might want one and this way they can save on shipping etc. Just a thought.

mbenigni

#55
Hans, Elantric, thanks for the specifics re: that power supply!

QuoteThat USB to barrel jack short cable is nifty and it would more than likely also power up the Missing Link using the USB host port on the GR55.

Oops, I did not take that to be a barrel jack input at all, but rather a USB port, and so I ordered this:

USB 2.0, Cable 7.5in A Male To B Male
http://www.amazon.com/gp/product/B000ZCYK0O

Did I just waste $10?  (Yes, shipping more than doubled the price!)

Have to stop being so impetuous.  Could have waited to test with one of the bzillion 6' USB cables laying around the house, first.

armatronix

A regular USB A-B cable will work fine for powering the ML from a USB-A port.

mbenigni

Cool, thanks. That's what I'd assumed from MCK's response earlier.

Elantric

MCK

Probably a good idea to look at the Axe-FX Control Ipad app for ideas:


MCK

Looks very nice & polished. I thought I saw a mouse pointer every now & then so I am wondering if this is a remote desktop into the Mac/PC type app. Either way its a purpose built custom app much the same way as Gumtowns editor for Mac & PC. Unless we find a way to recompile Gumtown's great work on IOS or reprogram the whole thing using an IOS development tool we will not get the same quality with TouchOSC but I'm confident we can get close enough to get the needs covered.

mbenigni


MCK

Wow! That was quick! I did not get any chance to do anything this weekend but I want you to be able to to see what I have so far so here goes. Current TouchOSC template attached here...

mbenigni

Thanks a million, MCK.  I've already got your template working.  Pretty cool!  And thanks again to Hans - I can't believe how fast he got this unit shipped!

I'm going to throw together another really simple template right now, that simply sends CC 1-8 on a safe MIDI channel, so I can experiment with routing these to GR55 assigns.  That should give me an immediate sense of potential applications without needing to do any research right away.

One immediate question:  what made you choose Touch OSC over MIDI Touch.  I see that MIDI Touch is a bit more expensive, but being able to design layouts directly on the iPad seems like a massive advantage over Touch OSC.  Does MIDI Touch not support CoreMIDI, or is it in some other way incompatible with Missing Link??

mbenigni

#63
11:15PM and I'm starting to feel a little stupd...  Built my first layout, uploaded it to the iPad, can see the Missing Link light flashing, but nothing doing on the GR55.  Frustrating.   :(

Bottom line is I am completely flummoxed by all of this OSC business. I'm a PC/MIDI guy and these are new tricks.  I don't really understand why I can't select the MIDI tab for a control in the TouchOSC editor and indicate CC number and expect that to work.  I think I'm also pretty confused by the configuration requirements regarding OSC vs. CoreMIDI.  I had expected to be using CoreMIDI, but by all appearances the app is configured (per directions on the Missing Link website) to use OSC.  So I'm probably sending OSC information that doesn't make any sense to the GR55 at MIDI in?

There are a couple of links to TouchOSC templates on the Missing Link website, but they appear to be corrupted; they're just .zip files including index.xml files and nothing more.  This is a shame because they would have at least provided examples of simple CC message controls in OSC format.

So I guess two questions:  why is OSC a requirement here, and (assuming it is) how do I encode a simple fader to send MIDI CC 1, CH 1 1-127 via OSC (an example to begin with)?

Throwing in the towel for tonight...

Galvonot

Mbenigni, I feel your pain.  When I looked at iPad control for the GR,  both apps seemed good. (and indeed, are). I decided to not try wifi communication. I'm pretty good at making things like that work, but it introduced a layer of complexity not needed for now, as well as being a bit daunting. The camera connection kit going via a USB midi interface direct into the GR-55 suited my needs.

So I ended using Midi Touch.  Being able to test a layout right away without having to load it from the computer is a big bonus while tweaking, troubleshooting and scaling the various controls.  Although the actual graphic editing a touchOSC layout on the computer really is easier.  With a scheme mentioned on this board, using Midi Yoke and Sysex to capture and view the system exclusive strings and entering them into Midi Touch I've been able to get things working pretty quickly. Though my interface is far, far from done.

I'm also focusing on just the things I need to tweak in performance, not creating an iPad version of Gumtowns frankly amazing application. And I am sticking to guitar for now as well.

Later I plan to connect via wifi just because it is cool to do. But when I do I'll have a good, working layout. I'll likely use a netbook or an old Mac laptop and connect via USB at that point.

Thanks to all, especially MCK, for keeping attention on this project. Ultimately, many will benefit.







Quote from: mbenigni on August 15, 2011, 08:18:43 PM
11:15PM and I'm starting to feel a little stupd...  Built my first layout, uploaded it to the iPad, can see the Missing Link light flashing, but nothing doing on the GR55.  Frustrating.   :(

Bottom line is I am completely flummoxed by all of this OSC business. I'm a PC/MIDI guy and these are new tricks.  I don't really understand why I can't select the MIDI tab for a control in the TouchOSC editor and indicate CC number and expect that to work.  I think I'm also pretty confused by the configuration requirements regarding OSC vs. CoreMIDI.  I had expected to be using CoreMIDI, but by all appearances the app is configured (per directions on the Missing Link website) to use OSC.  So I'm probably sending OSC information that doesn't make any sense to the GR55 at MIDI in?

There are a couple of links to TouchOSC templates on the Missing Link website, but they appear to be corrupted; they're just .zip files including index.xml files and nothing more.  This is a shame because they would have at least provided examples of simple CC message controls in OSC format.

So I guess two questions:  why is OSC a requirement here, and (assuming it is) how do I encode a simple fader to send MIDI CC 1, CH 1 1-127 via OSC (an example to begin with)?

Throwing in the towel for tonight...

mbenigni

QuoteThe camera connection kit going via a USB midi interface direct into the GR-55 suited my needs... So I ended using Midi Touch.
Thanks for the feedback, Galvonot.  We're all in this together.   :)

Your comments lead me back to my first question (for whomever can provide an answer) - can MIDI Touch be used with wireless CoreMIDI (e.g. Missing Link) or is there some limitation there?

Beyond that, I think I have a learning curve to get started with - beginning with, "What exactly is OSC?" 

mbenigni

#66
QuoteThe 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...
OK, so I think I glossed over this most obvious and important point (which is also the first thing stated in the video at the beginning of this thread.)  So this really answers several of my questions: the ML requires OSC as it's input via WiFi, and will then decode and send whatever MIDI is embedded.

So it looks like Touch OSC is the best app for this configuration, which is fine - it's bought and paid for.

So I think that just leaves questions about OSC syntax for a few simple MIDI constructs, e.g. (in order of importance) CC messages, Note ON/OFF, Program Change.  (I see SysEx in MCK's post on the previous page.)  Is their a reference somewhere on line, or can someone paste in a couple of examples here?  I would be eternally grateful.   :)

Elantric

#67
QuoteIs their a reference somewhere on line, or can someone paste in a couple of examples here?  I would be eternally grateful.   :)
Post questions and get answers for the Missing Link at this URL link:

http://wifimidi.com/discussion-forum/

http://wifimidi.com/phpBB3/viewtopic.php?f=4&t=5

The Missing Link will translate your custom OSC messages into MIDI.

Most of the common MIDI messages can be specified by using the Midi Message Generator on the website: http://wifimidi.com/midi-message-generator/ That's a very good place to start.

To assign a message to an interface element, in the TouchOSC editor click on the element and to the left of the editor window un-check where it says:

OSC: [ ] auto

Then type your custom message into the OSC message box right below it, like so:


Leave the Value Range from 0 to 1.

Here's a sampling of the types of messages that can be translated:

/midi/0xb0 20 100

o no variables - outputs the MIDI bytes directly, ignores any OSC value(s)
o bytes may be hexadecimal or integer, hex bytes are signified by the prefix 0x##
o these get sent on press only
o appropriate for button objects
o longer strings of multiple MIDI commands may also be sent, as desired


/midi/0xb0 25 x

o single variable (x)
o if no range is specified, full MIDI range (0..127) is assumed (always leave OSC range 0 to 1.0, floating point)
o scaled integer value of rotary or slider will be substituted for x
o appropriate for sliders or rotaries, and also will work for buttons or x-y pads if desired


/midi/0xb0 25 x(64..100) 26 x(12..76) 27 x(89..127)

o single variable used multiple times with multiple ranges declared
o the OSC value will be scaled according to the range declared (this example message uses running status, per the MIDI standard)
o different ranges may be specified for each variable call (or none for default behavior)


/midi/0xb0 25 x(64..100) 26 y(0..63)

o multiple variables with multiple ranges declared
o only appropriate for x-y pads


/midi/z/0x90 60 127/0xb0 25 x 0xb0 27 y/0x90 60 0

o use with "Send z messages" option enabled to detect touch and release on variable objects
o for sending separate messages on press, drag, and release: /midi/z/<touch>/<drag>/<release>
o leave message space blank if no action is desired, but the slash should remain: /midi/z//<drag>/<release>
o leave messages blank if no action is desired
o appropriate for sliders, rotaries, or x-y pads


/midi/button/0xfa/0xfc

o similar to /midi/z/, but this one allows buttons to have separate actions for touch and release
o /midi/button/<touch>/<release>
o can send on only touch OR release (if one is left blank)
o only appropriate for button objects


Quick MIDI Reference:
(replace # with hex channel number)

Note Off:
0x8# <note number> <velocity>

Note On:
0x9# <note number> <velocity>

Poly Pressure:
0xa# <note number> <value>

Control Change:
0xb# <controller number> <value>

Program Change:
0xc# <program number>

Channel Pressure:
0xd# <value>

Pitch Bend:
0xe# 0 <amount>
* hi-res pitch bend is not implemented at this time

System Exclusive:
0xf0 <data> 0xF7

Time Code:
0xf1 <data>

Song Position:
0xf2 0 <position>
* hi-res song position is not implemented at this time

Song Select:
0xf3 <song number>

Tune Request:
0xf6

Clock Tick:
0xf8

Start:
0xfa

Continue:
0xfb

Stop:
0xfc

System Reset:
0xff

Status byte hexadecimal channel # lookup table:
0x_0 = channel 1
0x_1 = channel 2
0x_2 = channel 3
0x_3 = channel 4
0x_4 = channel 5
0x_5 = channel 6
0x_6 = channel 7
0x_7 = channel 8
0x_8 = channel 9
0x_9 = channel 10
0x_a = channel 11
0x_b = channel 12
0x_c = channel 13
0x_d = channel 14
0x_e = channel 15
0x_f = channel 16

Brent Flash

Quote from: mbenigni on August 15, 2011, 08:18:43 PM
11:15PM and I'm starting to feel a little stupd...  Built my first layout, uploaded it to the iPad, can see the Missing Link light flashing, but nothing doing on the GR55.  Frustrating.   :(
Just a reminder, the GR-55 does not automatically respond to CC#, PC, MIDI data. You have to tell it to respond by turning on some things and assigning CCs to target others. Not like a keyboard that just does it by default.

MCK

Sorry for being late to respond. Exactly what Brent said above. For now I am using just SysEx and I grab them from Gumtown's excellent editor. Just turn on Debug, have a camera handy and point it to your screen while clicking away whichever control you want to learn SysEx for. The actual SysEx sent by editor to the GR55 will be briefly shown on your screen (PC/Mac) so shoot the photo. Move to next control... When you're done capturing what you're interested in then move to MidiTouch or TouchOSC and recreate the controls.

The section of TouchOSC manual posted below by Elantric is key to getting going with SysEx. Variables are very powerful too and as you will see in my example hex variables work very well. You just need to pay attention to the ranges.

Galvanot, great to hear you're making progress. If you can post some screenshots of your design here I can try to duplicate the TouchOSC version and see how it goes.

Regarding TouchOSC vs MidiTouch, I too like the edit on iPad option better over the edit on Mac and load to iPad option. To do each change on iPad I also need to change the Wifi from Missing Link to my home wifi and then back which gets cumbersome after a short while. Still the Missing Link option is what works for me so I'm happy to cope with the extra burden. Feature set wise I am not sure which one wins over the other. Didn't have a chance to compare yet. 

mbenigni

#70
Thanks for all the feedback.  Elantric, that post will be immensely helpful when I get home tonight.  Unfortunately the MIDI Message Generator is crashing my browser, but that's alright; I think I can make do with the information presented above.

Brent, MCK, yes - I was aware that the assigns would need to be enabled and set to receive on CC 1-8.  That was the whole idea behind this template, to provide simple CC messages that could be readily assigned to different parameters on a patch by patch basis.  This seems like the simplest way to use TouchOSC, though it will be of limited use, since the state of those assigns won't be saved after navigating between patches.  (That, and 8 assigns will run out pretty quickly!)

I think the heart of the problem last night was that I began by sending MIDI directly to the Missing Link, as opposed to OSC.  Then, when I realized OSC was a requirement, I simply didn't know the syntax to send a CC message.  I'll try again in a couple of hours, with "/midi/0xb0 1 x" (priceless!) and then move on to capturing some sysex from Floorboard.

Still very excite about this, despite last night's setback. :)

P.S.  We've been dancing around the answer and pretty definitely implying it, but just for the record: MIDITouch absolutely can not be used to send OSC to the Missing Link?

MCK

Its a labor of love thats for sure. Keep your chin up. We'll get there!

Elantric

#72
QuoteMIDITouch absolutely can not be used to send OSC to the Missing Link?
Correct.

The MidiTouch Forum is here:
http://iosmidi.com/forum/
Many USB MIDI interfaces support Core Audio and work with the Apple Ipad Camera Kit to provide a straight 5 pin DIN MIDI I/O HARD WIRED connection to the GR-55.

http://iosmidi.com/devices/
Some tips on getting devices to work:

    Try multiple times. Sometimes devices don't work the first time, unplug them and re-connect them to try again a few times.
    Use a USB Hub. For some reason some devices only work via a USB Hub. This can also be used to power devices, and connect multiple devices to one iPad, and they will work simultaneously
    Charge your iPad. If your iPad is low on charge it may say that your device is 'not compatible', when in fact it is.
    Look for a 'generic driver' setting. It's currently not possible to install drivers on the iPad, and likely never will be. So your device must be class compliant. Some devices have a setting for an 'advanced' driver, if your device has this setting turn it off. Most EDIROL products have this setting on by default and can be made to work by changing it – refer to the manual.
    Check for firmware updates. Some Novation controllers/keyboards can have their firmware (software) updated and will work with the new version.  Note: I have a received a note that apparently this only applies to the the Remote Audio, LE or SL series, and not the 25/37 models.

If you have a device that you have tested that isn't on either list below, or if it's on the wrong list, please leave a comment, email us at devices @ iosmidi.com or use out contact form so we can keep this list accurate!
Devices that work:

    Akai EWI USB
    Akai LPD8
    Akai APC-40 (via powered USB hub)
    Akai LPK25 (has power issues for some users)
    Akai MPK49 & MPK61 (via powered USB hub)
    Akai RPM3 (audio only)
    Akai Synthstation (works via USB hub)
    Akai Synthstation 49
    Alesis DM6
    Alesis DM10
    Alesis iO Dock
    Alesis iO2 (older model, via USB hub)
    Alesis Photon X25
    Alesis Q25
    Alesis Q49 (works via USB bus – no external power necessary)
    Aturia Analog Factory CME Controller Keyboard
    Audiotrak MIDI Mate
    American Audio VMS4 DJ (works with power supply, audio on channel 1 works also)
    Arturia Analog Factory 'The Laboratory' 49 Key (using supplied power adaptor)
    Axiom 49 (2nd Gen)
    Axon AX 50
    Behringer BCF2000 (experiment with output 'modes', U-4 works well for in & out)
    Behringer BCR2000 (experiment with output 'modes', U-4 works well for in & out)
    Behringer iAxe 323 USB Guitar (audio only)
    Behringer UMA25S (audio & MIDI)
    Behringer UMX25
    Behringer UMX61
    Behringer UMX490
    Bespeco MIDI Cable
    Carillon M1X1
    Casio DG-20 Guitar Synth
    Casio Privia PX-130
    Casio WK7500
    CME U2MIDI
    CME U-Key 49 Mobiletone
    Dave Smith Instruments Tetr4
    Digitech GNX4 (audio & MIDI)
    DSI Mopho Keyboard
    DSI Tetra
    Doepfer Dark Energy
    Doepfer Dark Time
    E-MU X MIDI 1×1 Tab
    E-MU Xmidi 2×2
    EDIROL PCR-M80 (use settings to set USB driver to 'generic' [see instruction manual] – thanks Lorenzo!)
    EDIROL PCR-1 (via USB Hub, audio interface also works)
    EDIROL PCR-A30 (via adaptor or USB Hub, audio doesn't work)
    EDIROL PCR-30 (set USB mode driver to 'generic')
    EDIROL PCR-300 (set USB mode driver to 'generic', works with Boss PSA-120T power adaptor, and PSB1-U also.  PSU rated at +9.6 VDC 200mA center-negative.)
    EDIROL PCR-800 (set USB mode driver to 'generic')
    EDIROL UA-1D (via USB hub, adds noticeable latency)
    EDIROL UA-25EX (via USB hub, audio only)
    EDIROL UM-1ex (set USB mode driver to 'generic')
    EDIROL UM-1sx
    EDIROL UM-2ex (NB: Roland UM-2 [not EDIROL] does not work)
    Elektron TM-1
    ESI KeyControl 25 XT
    ESI M8U
    ESI Midimate II
    Evolution MK-361C (works without external power or hub needed)
    Focusrite VRM Box (via USB Hub, hardware only)
    Genovation 900-MPC Midi Patch Changer
    HDE USB->MIDI Cable ($5 on Amazon!)
    JamHub TourBus (via USB hub)
    Kawai MP8II
    Korg KP3 KAOSS PAD
    Korg Kaossilator Pro (instruction manual [PDF] has useful info for settings)
    Korg K25
    Korg Kontrol 49 (with power adaptor)
    Korg microSAMPLER & microKONTROL
    Korg M3
    Korg M50
    Korg microKEY 37 (via USB hub)
    Korg MicroX
    Korg nanoKEY, nanoPAD & nanoControl
    Korg Pandora PX5D
    Korg R3 (using supplied power supply)
    Korg RADIUS
    Korg Triton TR Series
    Korg X50
    Kurzweil PC3
    Livid Block (via powered USB hub)
    Livid Block Ohm64 (via powered USB hub)
    Lexicon Omega
    Line 6 Pocket POD (MIDI only)
    LogiLink USB MIDI Cable
    Logitech Premium Notebook USB Headset (audio only – boom works for audio input, headphones monitor iPad output)
    Mackie XD-2
    Mistar MidiLink (may need a few tries to be recognised)
    M-Audio Axiom 49 (1st gen) (mixed reports – try a USB hub)
    M-Audio Axiom Pro 61
    M-Audio Evolution X-Session (with 9V DC center-positive adaptor)
    M-Audio Keystudio (via USB hub or with external power)
    M-Audio O2 (when plugged in)
    M-Audio Oxygen 8 (with batteries/adaptor, via USB hub)
    M-Audio Oxygen 8 3rd Gen
    M-Audio Oxygen 49 (via powered hub)
    M-Audio Oxygen 61
    M-Audio Prokeys Sono 61
    M-Audio Prokeys 88
    M-Audio Prokeys 88SX
    M-Audio Uno 1×1 (Note: older models when M-Audio was called Midiman do not work. M-Audio changed name in 2002, newer/current models work fine. See comments for more detail.)
    M-Audio Keystation 49a (set USB Driver to 'generic')
    M-Audio Keystation Pro-88
    M-Audio KeyRig
    M-Audio XSession Pro
    M-Audio Venom (USB audio works well, MIDI a little patchy)
    Moog Little Phatty Stage II
    Moog Multipedal (Moog's MIDI In get's routed into the iPad also)
    Novation Remote 25 LE
    Novation Remote SL series
    Novation X-Station (with power adaptor)
    Novation Xio 25 (audio & MIDI)
    Presonus Audiobox USB (audio & MIDI, via powered hub)
    Prodipe Midi USB 1i1o
    Roland A-300PRO (A-500PRO, A-800PRO, and equivalently named Cakewalk products should also work – TBC)
    Roland Cakewalk A-500S Master Keyboard (with batteries, advanced driver off)
    Roland FP-7F
    Roland HP 305
    Roland Lucina
    Roland Octapad SPD-30
    Sequentix Cirklon
    Sonuus i2M Musicport
    Studiologic VMK-161 (via powered hub)
    Studiologic VMK-188
    Swissonic MIID-USB 1×1
    Terrasoniq MIDI ONE
    Terratec Axon AX 50
    Turtle Beach USB MIDI 1×1 (via powered hub, sometimes works without)
    V-Machine VST Player
    Waldorf Blofeld (desktop version)
    Yamaha E430
    Yamaha Ez250i
    Yamaha KX-8
    Yamaha UX-16
    Yamaha S90ES
    Yamaha Stage Piano 3P00 (external power needed, set local control off, MIDI on)
    Yamaha WX-5 EWI (with adaptor, via USB hub)
    Yamaha YDP-V240
    Yamaha YPG-235
    Yamaha YPG-625
    Zoom A2.1u (audio only, via USB hub)
    Zoom H4n (audio only)
    Zoom R16 (audio only, via USB hub)



mbenigni

I'm in business - thanks so much guys!  I've attached my very simple template in case anyone is curious.  It's just 8 sliders assigned to MIDI CC 1-8 respectively.  On the GR55 the 8 assigns are set up to receive accordingly, and right now I'm using these for gain, bass, mid, treble, presence, reverb, level, PCM1 level and PCM 2 level.  It's a great start but obviously I'm out of assigns and there's so much more I want to do, so I'll need to learn the messages required to talk to some of these params directly.  There will definitely be an assigns page just like this one in my final build, though.

I was very pleased to see that these assign states are being stored permanently when I press the Write button.  Even in this simple state, this is already a big help w/ patch programming.  Exciting stuff.

Hans, I love the Missing Link!  Thank you!

Spider

Quote from: gumtown on March 10, 2011, 10:19:40 PM
The GR-55 is not fussy about checksum, you can feed it any value for realtime system exclusive control.
May be a different story for writing data to memory though.

If you want to access the Preset patches under the Catagory buttons, the "LEAD" ones start at Bank 16 (hexadecimal 10).

I'm try use Kore 2 Controller via Midi Pipe to control GR55 and start looking for about info about SysEx. So for any one who want calculate checksum I could recommend this tutorial: http://www.2writers.com/eddie/TutSysEx.htm. It's maybe time consuming but it's easy.