"Adjacent" SysEx messages from Yamaha 01V don't translate...

artsrecording

2012-01-12 13:53:44

Hi all,

Sorry if this has been addressed elsewhere - I have searched the forum, but I don't think this problem has been described before...

I am wanting to use Bome's Midi Translator to make a Yamaha 01V digital console control the faders (etc..) in REAPER (DAW software - http://www.reaper.fm/).

The 01V puts out various SysEx messages, while REAPER can understand MIDI CC messages.

Using the "Capture MIDI" function, I have started by setting up the following 8 translators in Bome's MT (Pro Trial):

Name******#**Incoming Trigger******************Outgoing Action
Track 1_____0__MIDI F0 43 10 3E 04 30 00 0C pp F7____MIDI B0 01 pp
Track 2_____1__MIDI F0 43 10 3E 04 30 00 0D pp F7____MIDI B0 02 pp
Track 3_____2__MIDI F0 43 10 3E 04 30 00 0E pp F7____MIDI B0 03 pp
Track 4_____3__MIDI F0 43 10 3E 04 30 00 0F pp F7____MIDI B0 04 pp
Track 5_____4__MIDI F0 43 10 3E 04 30 00 10 pp F7____MIDI B0 05 pp
Track 6_____5__MIDI F0 43 10 3E 04 30 00 11 pp F7____MIDI B0 06 pp
Track 7_____6__MIDI F0 43 10 3E 04 30 00 12 pp F7____MIDI B0 07 pp
Track 8_____7__MIDI F0 43 10 3E 04 30 00 13 pp F7____MIDI B0 08 pp

Unfortunately, if I move any two adjacent (consecutive/side-by-side) faders at the same time on the 01V (1+2 or 2+3 or 3+4 etc etc), Bome MT can see the incoming SysEx MIDI data from the 01V, but won't Translate or Output any MIDI CC data (at least not according to the activity lights in the status bar, or the log, and the faders in REAPER certainly don't move).

What does seem to be working (very smoothly I might add!) is:
- I can move any single fader on the 01V on it's own, and this will perfectly translate and the corresponding fader will move in REAPER.
- I can move multiple non-adjacent faders, and this is all seems translated perfectly (eg can move faders 1+3+5+7 or 2+4+6+8 at the same time)
- If I put the 01V into the right mode, I can make it transmit "plain vanilla" MIDI CC data, rather than SysEx data. So I have tested by setting up 'translators' that map:
- Input:MIDI-CC-01= Output:MIDI-CC-01
- Input:MIDI-CC-02= Output:MIDI-CC-02
- etc
- etc
...like below (not that anything is really being translated here):

Name******#**Incoming Trigger******************Outgoing Action
Track 1_____0__MIDI B0 01 pp_______________________MIDI B0 01 pp
Track 2_____1__MIDI B0 02 pp_______________________MIDI B0 02 pp
Track 3_____2__MIDI B0 03 pp_______________________MIDI B0 03 pp
Track 4_____3__MIDI B0 04 pp_______________________MIDI B0 04 pp
Track 5_____4__MIDI B0 05 pp_______________________MIDI B0 05 pp
Track 6_____5__MIDI B0 06 pp_______________________MIDI B0 06 pp
Track 7_____6__MIDI B0 07 pp_______________________MIDI B0 07 pp
Track 8_____7__MIDI B0 08 pp_______________________MIDI B0 08 pp

If I do this then Bome MT "translates" and outputs everything fine, and I can move all 8 faders simultaneously on the 01V and all 8 faders in REAPER respond very smoothly, suggesting that it is the incoming adjacent SysEx messages that Bome MT is struggling with.

**But**...I really want to be able to use Yamaha's SysEx messages, because it's "SysEx Mode" is implemented across virtually every fader, button and pot on the entire console (it was designed so that one 01V could remote control all the parameters on a second 01V). The 01Vs "generic MIDI CC" mode is more restricted, only sending MIDI data from the faders and most of the "On" and "Solo" buttons. So the "SysEx mode" will give me way more options for using the 01V to control REAPER.

[For anyone with an 01V...
- The "SysEx Mode" I'm referring to is: 'MIDI', pg5: Local Control="Off"
- The 'plain vanilla' MIDI CC mode is set up on 'Remote', pg 3: 'User Define']

Perhaps I'm missing something obvious here, and this is not actually a bug, but I cannot for the life of me see why Bome MT can cleanly translate non-adjacent SysEx messages to MIDI CC messages, can "translate" MIDI CC to MIDI CC to control all faders, but wont translate adjacent SysEx messages as described above. :?

Any help would be greatly appreciated (ie, if I can resolve this, then buying Bome MT is probably a no-brainer!) :D

Thanks for reading,
Andrew

artsrecording

2012-01-19 11:42:29

Quick update.

I have updated the drivers for the interface I use to connect the 01V and Bome's MIDI Translator - an RME FireFace 800. This didn't make any difference.

I have also tried using the MIDI interface on a Sonic-Core DSP card I own (again with latest drivers/software). This made no difference either - the same problem persists.

Both of these interfaces are professional-level equipment, from very reputable developers, so at this stage I am fairly convinced the difficulties in translating "adjacent" SysEx messages from the O1V lie with Bome'sMT

(More than happy to be proven wrong - what ever solves the problem really...)

Any ideas?

Thanks in advance,
Andrew

florian

2012-01-24 22:46:11

Hi Andrew,

sounds like a tricky problem! I wish I knew what is going on.
To nail this down, could you please download Bome's SendSX and use it to record two sequences and copy/paste into the forum:
1) moving faders 1+3 simultaneously
(i.e. what works in MT)
2) moving faders 1+2 simultaneously
(i.e. what does not work in MT)
SendSX uses a very similar (though older) MIDI engine, so it might tell us what MT is "seeing". I doubt the translation engine in MT is at fault, especially given that the translator entries work fine individually.

Thanks!
Florian

artsrecording

2012-02-03 13:16:14

Hi Florian,

Thanks for getting back to me. Sorry it's taken a little while to reply.

SendSX has certainly demonstrated that the initial problem I thougt I had was not a bug (ie I can create a translator to make adjacent faders move - different to the 'single fader' translator)...but I am not out of the woods yet!...I will try to be clear...

What Works

It seems that the general approach the Yamaha 01V takes to 'fader-movement' SysEx massages across the first 8 faders is:

F0 43 10 3E 04 30 00 [XX] pp qq rr ss tt uu vv ww F7

...where [XX] represents the left most fader of any group of both simulteneously moving & adjacent faders, and takes on the following values depending on which fader in the 'adjacent moving faders' group is most to the left:
Fader 1 most to left: 0C
Fader 2 most to left: 0D
Fader 3 most to left: 0E
Fader 4 most to left: 0F
Fader 5 most to left: 10
Fader 6 most to left: 11
Fader 7 most to left: 12
Fader 8 most to left: 13

Variables pp-ww represent the 'position' values (0-127) for each fader in an 'adjacent moving fader group', and only the required number of variables are sent before "F7" is transmitted - ie only "...[XX] pp F7" if one fader is moved , "... [XX] pp qq F7" if two adjacent faders move at once, "...[XX] pp qq rr F7" for 3 adjacent faders at once, etc, etc up to all 8 faders together.

(I have no idea what the "43 10 3E 04 30 00" part of the message controls, but it doesn't seem to matter for current purposes.)

So some examples...
Fader 1 alone:
F0 43 10 3E 04 30 00 0C pp F7

Fader 2 alone:
F0 43 10 3E 04 30 00 0D pp F7

Fader 1+2:
F0 43 10 3E 04 30 00 0C pp qq F7

Fader 2+3:
F0 43 10 3E 04 30 00 0D pp qq F7

Fader 1+3 (ie not adjacent):
Series of seperate messages transmitted rapidly one after the other for both the non-adjacent faders (ie what I originally managed to get working)...
F0 43 10 3E 04 30 00 0C pp F7
AND
F0 43 10 3E 04 30 00 0E pp F7

Faders 1+2 and Faders 4+5:
F0 43 10 3E 04 30 00 0C pp qq F7
AND
F0 43 10 3E 04 30 00 0F pp qq F7

Faders 1-8 all together:
F0 43 10 3E 04 30 00 0C pp qq rr ss tt uu vv ww F7

What I still haven't figured out...
If I connect any of the above translators the right way to MIDI CC messages, then I can control the faders in REAPER, at least for a little while but...

Sending shorter messages starting with a given left-most fader (ie moving less adjacent faders at the same time) will cause longer messages (more adjacent faders) starting with the same left-most fader to stop translating

So for example...
- If I move any single fader (shortest possible message) this will always work.

- If I move faders 1+2 ( ie "...0C pp qq F7") this will translate until I move fader 1 alone ("...0C pp F7"), and then it will stop working (and I need to close and re-open Bome MT to get going again).

- If I move faders 2+3+4 (ie "...0D pp qq rr F7") this will trasnlate properly until I either move fader 2 alone ("...0D pp F7"), or faders 2+3 only ("...0D pp qq F7") (it will still work if I transmit other shorter messages, so long as the left-most fader is not fader 2 (eg it still works after after I move 1+2 only together , or fader 3 alone).

I am guessing (naively!) that the longer messages failing to work might have something to do with the F7 at the end of the SysEx message being 'more to the left' when shorter mesages are sent (but even if I'm on the right track, I've no idea what to do about it!) So the question now is how do I 'protect' longer SysEx messages from failing, when shorter messages that start wiht the same left-most fader are transmitted?

Hope this is making sense, thanks for reading!
Andrew

PS - below is some output that I've been sending to Bome MT from SendSX to test when translaters continued to work, and when they failed:
Fader 1 Only
F0 43 10 3E 04 30 00 0C 09 F7
F0 43 10 3E 04 30 00 0C 1E F7
F0 43 10 3E 04 30 00 0C 39 F7
F0 43 10 3E 04 30 00 0C 55 F7
F0 43 10 3E 04 30 00 0C 6D F7
F0 43 10 3E 04 30 00 0C 7F F7
F0 43 10 3E 04 30 00 0C 7A F7
F0 43 10 3E 04 30 00 0C 61 F7
F0 43 10 3E 04 30 00 0C 44 F7
F0 43 10 3E 04 30 00 0C 28 F7
F0 43 10 3E 04 30 00 0C 11 F7
F0 43 10 3E 04 30 00 0C 01 F7
F0 43 10 3E 04 30 00 0C 00 F7


Fader 2 Only
F0 43 10 3E 04 30 00 0D 12 F7
F0 43 10 3E 04 30 00 0D 2A F7
F0 43 10 3E 04 30 00 0D 48 F7
F0 43 10 3E 04 30 00 0D 62 F7
F0 43 10 3E 04 30 00 0D 78 F7
F0 43 10 3E 04 30 00 0D 7F F7
F0 43 10 3E 04 30 00 0D 71 F7
F0 43 10 3E 04 30 00 0D 51 F7
F0 43 10 3E 04 30 00 0D 32 F7
F0 43 10 3E 04 30 00 0D 18 F7
F0 43 10 3E 04 30 00 0D 03 F7
F0 43 10 3E 04 30 00 0D 00 F7
F0 43 10 3E 04 30 00 0D 02 F7


Fader 3 Only
F0 43 10 3E 04 30 00 0E 12 F7
F0 43 10 3E 04 30 00 0E 2A F7
F0 43 10 3E 04 30 00 0E 48 F7
F0 43 10 3E 04 30 00 0E 62 F7
F0 43 10 3E 04 30 00 0E 78 F7
F0 43 10 3E 04 30 00 0E 7F F7
F0 43 10 3E 04 30 00 0E 71 F7
F0 43 10 3E 04 30 00 0E 51 F7
F0 43 10 3E 04 30 00 0E 32 F7
F0 43 10 3E 04 30 00 0E 18 F7
F0 43 10 3E 04 30 00 0E 03 F7
F0 43 10 3E 04 30 00 0E 00 F7
F0 43 10 3E 04 30 00 0E 02 F7


Fader 1+2
F0 43 10 3E 04 30 00 0C 0F 0F F7
F0 43 10 3E 04 30 00 0C 24 25 F7
F0 43 10 3E 04 30 00 0C 3C 3D F7
F0 43 10 3E 04 30 00 0C 54 54 F7
F0 43 10 3E 04 30 00 0C 68 69 F7
F0 43 10 3E 04 30 00 0C 77 77 F7
F0 43 10 3E 04 30 00 0C 7F 7F F7
F0 43 10 3E 04 30 00 0C 72 71 F7
F0 43 10 3E 04 30 00 0C 60 5E F7
F0 43 10 3E 04 30 00 0C 50 4D F7
F0 43 10 3E 04 30 00 0C 3B 39 F7
F0 43 10 3E 04 30 00 0C 26 25 F7
F0 43 10 3E 04 30 00 0C 13 11 F7
F0 43 10 3E 04 30 00 0C 00 00 F7


Fader 2+3
F0 43 10 3E 04 30 00 0D 0F 0F F7
F0 43 10 3E 04 30 00 0D 24 25 F7
F0 43 10 3E 04 30 00 0D 3C 3D F7
F0 43 10 3E 04 30 00 0D 54 54 F7
F0 43 10 3E 04 30 00 0D 68 69 F7
F0 43 10 3E 04 30 00 0D 77 77 F7
F0 43 10 3E 04 30 00 0D 7F 7F F7
F0 43 10 3E 04 30 00 0D 72 71 F7
F0 43 10 3E 04 30 00 0D 60 5E F7
F0 43 10 3E 04 30 00 0D 50 4D F7
F0 43 10 3E 04 30 00 0D 3B 39 F7
F0 43 10 3E 04 30 00 0D 26 25 F7
F0 43 10 3E 04 30 00 0D 13 11 F7
F0 43 10 3E 04 30 00 0D 00 00 F7


Fader 1+2+3
F0 43 10 3E 04 30 00 0C 22 21 23 F7
F0 43 10 3E 04 30 00 0C 3A 38 39 F7
F0 43 10 3E 04 30 00 0C 52 50 51 F7
F0 43 10 3E 04 30 00 0C 68 65 68 F7
F0 43 10 3E 04 30 00 0C 7C 79 7C F7
F0 43 10 3E 04 30 00 0C 7F 7F 7F F7
F0 43 10 3E 04 30 00 0C 73 6C 6F F7
F0 43 10 3E 04 30 00 0C 5C 54 58 F7
F0 43 10 3E 04 30 00 0C 45 3F 43 F7
F0 43 10 3E 04 30 00 0C 33 2D 30 F7
F0 43 10 3E 04 30 00 0C 22 1A 1E F7
F0 43 10 3E 04 30 00 0C 10 09 0D F7
F0 43 10 3E 04 30 00 0C 00 00 00 F7



Fader 2+3+4
F0 43 10 3E 04 30 00 0D 22 21 23 F7
F0 43 10 3E 04 30 00 0D 3A 38 39 F7
F0 43 10 3E 04 30 00 0D 52 50 51 F7
F0 43 10 3E 04 30 00 0D 68 65 68 F7
F0 43 10 3E 04 30 00 0D 7C 79 7C F7
F0 43 10 3E 04 30 00 0D 7F 7F 7F F7
F0 43 10 3E 04 30 00 0D 73 6C 6F F7
F0 43 10 3E 04 30 00 0D 5C 54 58 F7
F0 43 10 3E 04 30 00 0D 45 3F 43 F7
F0 43 10 3E 04 30 00 0D 33 2D 30 F7
F0 43 10 3E 04 30 00 0D 22 1A 1E F7
F0 43 10 3E 04 30 00 0D 10 09 0D F7
F0 43 10 3E 04 30 00 0D 00 00 00 F7

florian

2012-02-05 14:18:49

I guess you need to create incoming messages for all combinations. To make it manageable, make sure that the fader group value is a variable, too.

The first translator is as we have it, but configurable for the fader group:

Code: Select all

Incoming: MIDI F0 43 10 3E 04 30 00 xx pp F7
Rules:
 xx=xx-11
Outgoing: MIDI B0 xx pp
So this should work for all faders when moved alone.
Now the next is a group of 2 adjacent faders at once. We need to capture both fader values and output 2 CC messages:

Code: Select all

Incoming: MIDI F0 43 10 3E 04 30 00 xx pp qq F7
Rules:
 xx=xx-11
 ww=xx+1
Outgoing: MIDI B0 xx pp B0 ww qq
Now for 3 faders:

Code: Select all

Incoming: MIDI F0 43 10 3E 04 30 00 xx pp qq rr F7
Rules:
 xx=xx-11
 ww=xx+1
 vv=xx+2
Outgoing: MIDI B0 xx pp B0 ww qq B0 vv rr
Sticking with local variables (pp, qq, etc.) you will reach a limit with 4 faders. Then you can resort to using global variables (e.g. ga...gz) but in general, local variables are better for this kind of usage.

Thanks,
Florian