MIDI over OSC

I’m having trouble getting MIDI over OSC to work. I want to send midi commands to BFD Drum VST. I’ve given the ‘MIDI in (Omni)’ an OSC address and patched the midi cable between MIDI In and BFD. My command from Lemur is:

oscout(0,’/midi_osc/NoteOn’,{60, 64, 1});

It aint working. Am I doing something wrong?

Also in the Quick Start PDF there is no mention of a program change command for MIDI over OSC, but in the OSC PDF there is. I see that the OSC PDF is older. Was the program change command taken out?

First of all, I assume you have checked that you have OSC enabled and that the appropriate IP addresses and ports are set correctly on both Gig Performer and Lemur

I don’t know what that oscout function actually produces though. Gig Performer is expecting the address /midi_osc/NoteOn followed by three integer values.

OSC is enabled. I have every thing else working brilliantly. It’s just this MIDI over OSC. The OSC Data Monitor shows /midi_osc/NoteOn and three integers. Am I understanding this correctly? This should play a note on the BFD?

What MIDI channel is BFD receiving on?

The BFD is receiving on channel 1 for notes and 2 for control. BFD also has a midi monitor that doesn’t show anything coming in.

Can you send me your lemur file so that I can test it out here?

Ok - I see what happened. Lemur is not sending single OSC messages, it’s sending bundles, even if there’s only one OSC message. I’ve no idea why they’re doing that. While Gig Performer already handles bundles for non-realtime stuff (such as updating the entire display with a single OSC bundled message), we assumed that real-time messages (like notes) would never show up as bundled messages.
This is fixed, your iphone test example works now (at least I can see the messages arriving inside GP’s midi monitor).

Not sure yet when we will be releasing the next update as we’re still testing other minor changes but we’ll get it out as soon as we can.

Thanks again for the report.

No it wasn’t take out but Program Change is funky. Even if a PC messages comes through OSC, we mimic the behavior of that message as if it came through a regular MIDI device. Therefore it’s subject to the rules around whether GP will pass through unused program change messages to a plugin.
However, remember that if you’re using OSC and you want to change the rackspace, you can send OSC commands directly to go to any rackspace.

Also in the Quick Start PDF there is no mention of a program change command for MIDI over OSC, but in the OSC PDF there is. I see that the OSC PDF is older. Was the program change command taken out?

Thanks David. I do use the rack space commands but I need to send program change commands to the BFD. Great support!! I look forward to the next update

Why would you not just use another rackspace?

Mostly overhead I think. All the program change command does is load different drum patterns into BFD. Right now I have 9 sets of patterns. (Bossa, Straight 8…) and want to do more. I figured it would be better than 9 separate Rackspaces each with a BFD VST. Am I wrong? Does it treat all 9 as one VST? BFD is also a real pig with memory.

Just on thought:

Could you make different variations and map a knob to the preset parameter on BFD ?
But I do not know, if BFD provides such a mappable parameter.

Found a solution for this

Download:
Windows: http://thepiz.org/pizmidi/pizmidi.zip (20111013)
Windows x64: http://thepiz.org/pizmidi/pizmidi_x64.zip (20111013)
Linux: http://thepiz.org/pizmidi/pizmidi.tar.bz2 (20090223)
Mac OS X: http://thepiz.org/pizmidi/pizmidi.dmg (20111013)

With the plugin midiProgramChange you can map a button to a trigger and a knob to a program number.
By pressing the button the program change is sent.
So with this you should be able to use 1 rackspace and different variation to send program changes to BFD.

A description of this very useful plugins you can find here:

Well, a couple of thoughts.

  1. Unless you’re actually running into a memory problem, don’t try to do premature optimization. Load them all into separate rackspaces and see how it goes
  2. If that blows up on you, then try the predictive loading option which will only preload a few rackspaces at a time. It’s certainly going to be faster than sending actual program changes and having to wait for a single instance of BFD to reload everything
  3. There is a (by my mistake still undocumented) an OSC command /MyPlugin/SetPreset (where MyPlugin is the OSC handle of your plugin) that will make the plugin switch to a particular preset. Not all plugins support this but if yours does, that might work too.

@Pianopaul, you’ve reminded me that one of the things on our list (that ever growing list, sigh) is to expose those presets through the parameter system. We’ll get there.

I’ve seen those pizmidi things before but I don’t remember them really being maintained or up to date so I guess your mileage will vary.

Thanks @pianopaul. The program change plugin seems to work. It showed up in the BFD midi monitor. The only problem is that the high range in GigPerformer only goes to 100 so what program change you are going to get is iffy. It skips 2 totally. FEATURE REQUEST: Have a high range of 127.
The program change only loads the midi drum patterns. 1 or 2k at most. It’s pretty instantaneous. At the gig I use a headless Mac Mini so I need everything to be rock solid. I also try to run a buffer of 64 so I try to keep it as lean as possible.

The range is actually a percentage, not an absolute number. Understand that in a VST plugin, all parameters are represented by values between 0.0 and 1.0 so the knob will cover the entire range. If you hold the shift key down while turning a knob (for example) then you will get a finer grain precision.

Yep! Confess I do use those “pizmidi things” pretty much for all sorts of trickery.
Bringing up THAT wish list, the MIDI file player could also solve similar issues in the future :wink:

Careful some plugins crash GP: (at least on my side)

  • midiChannelise (luckily we do have this function covered :wink:
  • midiChordHold
  • midiFingered
  • midiInvertNotes
  • midiOverlappingNoteKiller
  • midiStuckNoteKiller

It seems that you are trying to access a 0-127 world through a 0-100 interface. I don’t know anything about the VST interface but I know that MIDI is a 0-127 world. The widget interface only has 101 values. How can I send a specific midi value to a plugin that is looking for 128 values? I can’t send it a value of 52.4 through the widget interface. Don’t get me wrong. I love OSC which is a 0-1 world, but it needs to communicate with a 0-127 world. Just my 2 cents.