Synth Forum

Notifications
Clear all

Bug in midi transmission

31 Posts
7 Users
0 Reactions
1,663 Views
 HSL
Posts: 0
New Member
Topic starter
 

MODX6 with firmware 2.52 (latest). Using Yamaha-Steinberg midi driver on Windows 10.
Trying to use the MODX as a midi controller to send midi data to a DAW, and at the same time play midi tracks sent from the DAW to the MODX sound generator (pretty standard usage). I have set local control off and everything seems fine (the DAW receives the midi data, and the MODX plays the midi data sent by the DAW), but .....

Here is the bug:

Let us say the MODX is transmitting on midi channel 1 (any will do) of the port MODX --> DAW. I press, let us say, C5 and keep it pressed: the DAW receives the midi message "note on C5". This is right. Of course since I am keeping the key pressed, no "note off C5" midi message is received yet.
While I am still keeping the C5 pressed, the DAW decides to play something on midi channel 1 of the port DAW --> MODX (for example a prerecorded track I use as a guide to record new tracks). This is a different midi port and should be completely insulated from the port MODX --> DAW I am using to input data to the DAW. Unfortunately this is NOT the case.

If the DAW plays a "note off C5" on channel 1 of its output port (or also an "all notes off" midi message), then, although I am still keeping pressed the C5 key on MODX, the MODX outputs a "note off C5", which is received by the DAW in its input port. The DAW thinks I have released the key (not true !!!!!!), and records wrong midi data.

In real usage this bug appears to be erratic since it is triggered only when the DAW plays a note off on the same midi channel (of the DAW output port) used in the input port as well, and if the user in that moment is sustaining the same note.

In practice this is deterministic and you can reproduce it 100% of the times: set the DAW to play a loop with 1/4 C5 notes on midi channel 1 (so that you get a "note off C5" every quarter). Then play (= press on the MODX and keep it pressed) a sustained C5 note on the same midi channel. The DAW will receive a "note off C5" at most one quarter down the road, although your finger is still on the key. Of course you can use any channel and any note you wish.

There is no way you can record something properly using the MODX as a controller and sound generator at the same time.

 
Posted : 03/12/2021 7:45 am
Posts: 1715
Noble Member
 

You will have to use separate channels.

The conflicts between data signals on the same channel, in MIDI, are legion. MIDI doesn't have error checking packets, it's only got signal, no signal checking.

 
Posted : 03/12/2021 10:20 am
Jason
Posts: 8238
Illustrious Member
 

I think it would be worthwhile to reproduce and see if there really is a feedback loop of a single MIDI note-off messages that comes in to the MIDI IN segment going back out the MIDI OUT segment which should only be sourcing the keyboard.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 03/12/2021 11:42 am
 HSL
Posts: 0
New Member
Topic starter
 

I think it would be worthwhile to reproduce and see if there really is a feedback loop of a single MIDI note-off messages that comes in to the MIDI IN segment going back out the MIDI OUT segment which should only be sourcing the keyboard.

My MIDI I/O screen is EXACTLY as the one depicted above. And yes, the MODX routes the incoming "note-off" messages (+ the "all notes off" message, converted to single "note off" messages) to the MIDI OUT port (only if the same note is playing there), although the MIDI OUT port should be sourcing only from the keyboard.

This short circuit, which is a bug, apparently only affects the "note off" messages. And not any other.

 
Posted : 03/12/2021 2:07 pm
Posts: 1715
Noble Member
 

The MODX/Montage are somewhat unique in the way they span 16 channels of MIDI.

For sanity's sake, you should not have the DAW playing MIDI _and_ yourself playing on the keyboard into the same part(s). Push the DAW parts out to Parts 9 through 16 on the MODX, as that's what the keyboard can't control, and let the DAW drive them out there.

You can then confidently play (with the keyboard) any of the parts 1 through 8 and have the DAW faithfully record them, and DAW will faithfully "play" the parts out across 9 through 16 via MIDI.

Yamaha doesn't ever make it clear, but this is probably how you should work with the MODX/Montage as a "VST", such that there's a minimal chance of issues with the MIDI signalling.

 
Posted : 03/12/2021 2:35 pm
Posts: 1715
Noble Member
 

This short circuit, which is a bug, apparently only affects the "note off" messages. And not any other.

And, sorry, I should have conveyed that I've experienced this, too. Which is exactly why I'm strongly suggesting a separation of Church and state.

 
Posted : 03/12/2021 2:40 pm
Bad Mister
Posts: 12303
 

I’m not exactly sure what the goal is here, but perhaps the following information can shed some light on the subject…
The MONTAGE/MODX does not Transmit, nor Receive Note-Off (please see the MIDI Implementation Chart in the Data List pdf).

Yamaha keyboards take advantage of something in MIDI called "running status".
Typically MIDI messages consists of a status byte which always begins with the high order bit set to one (1xxxxxxx), followed by two data bytes which have the high order bit set to zero (0xxxxxxx)

A message for Note-on, channel 1, middle “C”, velocity 100 __ 90 3C 64

The status byte is used to describe the type of message, there is a code for note-on (9n), a different code for note-off (8n), another code for control change (Bn), etc., etc...
For Note-on: The first data byte describes note # (3C)… and because the high-bit is never used you get a range of 0 - 127.
The second data byte describes the velocity of the note (64). Again the range is 0 - 127 (for note velocities, zero is reserved to mean note-off).

If a series of messages travel through, all with the same status, MIDI has the ability to save bandwidth by leaving out the status byte. This is called "running status". A stream of note-ons and note-offs can be differentiated by the velocity found in the second data byte, without needing to send a new status byte every time you switches from note-on to note-off.

According to the MIDI spec — a note-on with zero velocity is to be treated exactly the same as you would treat a note-off.
_Non-velocity sensitive keyboards use the Note-on/Note-off as separate status bytes.
_The spec also has accommodations for keyboards that handle separate values for both Note-on velocity and Note-off velocity.

Yamaha synths, generally, use Note-on V = 0 instead of Note-off. (Maybe not a bug… just simply how it is implemented in these synthesizers)
Hope that helps.

 
Posted : 03/12/2021 10:15 pm
 HSL
Posts: 0
New Member
Topic starter
 

I’m not exactly sure what the goal is here, but perhaps the following information can shed some light on the subject…

Hope that helps.

Bad Mister, your dissertation was unfortunately of no help, since the problem was not the "note off" midi message or the equivalent, by convention, "note on with zero velocity".
The problem is that MODX (and probably also Montage) was outputting the note off signal (encoded as a "note on with zero velocity" midi message as you specified) when it should have not (because the user was still keeping his finger on the key).
The event that triggers the wrong note off signal, is something that happens on the MIDI INPUT PORT, which in theory should be totally unrelated with the traffic of the MIDI OUTPUT PORT, which should only source its activity from the keyboard. My and Jason's previous posts explain this well.

I have made further experimentation and now I have concluded that what triggers the offending "note off" signal is NOT a note off midi message (as I erroneously said in my previous post), but an "All sounds off" midi message (CC 120) on the same midi channel (but on a different port) the MODX is transmitting.

To trigger the problem (100% of the time) you have to set up your DAW so that it sends to MODX on midi channel, let us say, 1 a CC120 every quarter note.
At the same time use the MODX to input midi data to the DAW (by pressing the note keys). If you use a channel different than 1 everything goes well: the DAW receives a "note on" midi message when you press a key, and a "note off" signal (encoded as "note on" with zero velocity midi message) when you release the key (= you lift your finger).

Now switch the output channel (MODX --> DAW) to 1. You will receive the "note on" midi message when you press the key, but, even if you keep the key pressed, also a "note off" signal as soon as the DAW sends the CC 120 at the first quarter downbeat. Keep playing by pressing all the notes you want: there is no way you can record a note that sustains more than 1/4, because at each downbeat the MODX will output a note off signal, even if you never lifted your finger.

This is clearly a bug because it makes recording midi data to the DAW unreliable: the DAW during playback could be playing a CC 120 on every of the 16 channels of the MODX input port (after all the MODX is sold as a 16 midi channels multitimbral sound generator, and in its midi specification chart, the CC 120 is an accepted and perfectly legal midi message), and this will cut off every note you are playing on that channel of the MODX output port. Unacceptable.

The goal here is to make Yamaha aware of the fact that its product is buggy and does not fulfill the specification and a typical use case for which it is sold (to bolster sales you also bundle, and advertise with a sticker on the box, a free copy of Cubase). Recording midi data to the DAW while the DAW plays midi data to the MODX sound generator (16 channels wide!) is the minimum everybody reasonably expects and takes for granted. You also demonstrate this use case in your marketing material, including videos.

So in conclusion, to make it extremely clear, I kindly ask you, as a Yamaha representative, if you (= Yamaha Corporation) are willing to admit AND solve the problem.

 
Posted : 04/12/2021 4:42 pm
Jason
Posts: 8238
Illustrious Member
 

I haven't actually reproduced this here (although there's enough information to easily do this). My suggestion was to first level-set and reproduce at Yamaha to validate if there is an issue here.

The MIDI spec 1.0 does allow for manufacturers to implement responses to All Sounds Off in a device-specific way as long as the response is documented.

Here's the documentation for all sounds off in the data list:

(3-2-1) ALL SOUND OFF (CONTROL NUMBER = 78H, DATA VALUE = 0)
All the sounds currently played including the Channel Messages such as Note-On and Hold-On in a certain
channel are muted when receiving this message.

You may notice when I commented on the issue I purposefully did not reiterate the CC120 part because that's more of sledge-hammer than just a note-off message. My interest was focusing on how a note-off message would "jump" over to the other segment. That seemed like a true smoking gun bug -- but, as you've clarified -- that case listed in err. Using the documentation - I could see how the current behavior is consistent with the docs and even in-spec with MIDI 1.0.

That said - I understand the problem you're having with this implementation given how you're using the system. I'm not really a heavy DAW user so I'm not sure what's standard usage. I myself haven't ever sent all sounds off messages with a DAW (but that doesn't mean anything other than I have no experience with using this feature in a DAW setting). My limited research shows most of these messages seem to be commonly referenced as used as a "panic" button. Not necessarily regularly sent. However, that's just a few searches and I have to yield to those (including yourself) with more DAW experience.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 05/12/2021 10:27 am
Bad Mister
Posts: 12303
 

“Controller numbers 120-127 are reserved for Channel Mode Messages, which rather than controlling sound parameters, affect the channel's operating mode.” — midi.org

The MODX/MONTAGE do not generate the CC120 Mode message, but will, naturally, respond to it when sent In via MIDI.

We disagree that this message would/might be found on all 16 Channels, one would assume data on a MODX Track would be data that the MODX was capable of generating (and using); but even if CC120 were some how on the Track, all connected MIDI devices will respond in the same fashion. That is what happens according to MIDI spec.

You mention it seems to originate on a different Port. (No doubt, because the MODX/MONTAGE cannot generate a CC120, at all).

I’m not sure how this effects what you are trying to do… but I’m trying to get past how anyone would be using a MIDI Mode message CC120 if not to stop all sound on the channel, and why a tone generator correctly responding with ‘all sound off’, is a bug?

Can you identify what Port the message originates? And how it is reaching the MODX Tone Generator on Port 1?

Additional info:
The MODX/MONTAGE Tone Generators are going to use Port 1 of a USB-MIDI connection. They generate messages concerning the interaction with the local keyboard and physical controllers. Data sent from the MODX synth is expressly generated so that when captured and routed back to the MODX synth, it will replicate the original performance to the smallest detail.

When you wish to use the MODX/MONTAGE as a master keyboard controller, you can setup and dedicate a Part/Zone slot specifically to address that external device. It will operate independent of the synth receiving any MIDI data… the Zone Settings and Zone Transmit functions are what ensures these synths can be used effectively as Controllers for a wide variety of external devices.
_ If you are working in a supported DAW, you can use the MODX/MONTAGE Remote Control Surface layer to customize controllers for a specific plugin. This communication is done on an entirely separate Port. (Port 2)

It is very important to not merge the DAW Remote Port (2) with Track data targeting the synthesizer, Port 1.
Port 2 should be exclusively for Remote Control messages and kept completely discreet from any MIDI Track data. Merging messages from another port can give chaotic results (a proper configuration will fix this).

I’m not clear on how this impacts your issue. Let us know.

 
Posted : 05/12/2021 8:35 pm
 HSL
Posts: 0
New Member
Topic starter
 

I want to use the MODX as midi controller (to play notes on the black & white keys + pitch bend, MW, ..., the usual stuff) and send this data to the PC (i.e.: a DAW) that records this data in real time.
At the same time I want the PC (i.e.: a DAW) to send midi data to the MODX so that this midi data is turned into sound by the MODX. The PC will send midi data on all the 16 midi channels allowed by the spec (since it needs 16 different parts at the same time), and will also include CC120 (as allowed by the spec) on possibly any of the 16 midi channels as needed. The need to send CC120 is to stop sound tails before changing a DSP setting, and/or the channel volume (or pan) so that it does not pick up and affect past dead notes (who are still producing sound in their "release" ADSR envelope), but only the new ones your are going to play afterwards. This is a perfectly legitimate use of CC120, and also the only way to achieve the effect.

A tone generator that claims to support CC120 in its midi input port should honor the claim without generating side effects on other ports. The side effect I am talking about is a spurious note off signal (maybe implemented as a zero velocity note on) on the midi port I am using to send my playing on the MODX keybed to the PC.

Using a PC to record midi data played by the user and, at the same time, play midi data to MODX tone generator is a typical use case. In fact you usually enter a single part at a time, and while entering that part maybe you are listening to the previously entered parts (for example I would like to enter a melody part while listening to the drum and bass parts).

Additionally uses, although probably less common, are inputting midi data to the PC and let the PC respond to user input with real time tracks generated on the fly to be played back by the MODX (for example an arpeggio).

Both uses are perfectly reasonable and allowed by the published capabilities/specification of the instrument.

What certainly is unexpected and unreasonable (= a bug) is sending a CC120 on a midi port and seeing output by the MODX a note off (or note on with zero velocity) on another port (completing disrupting your recording effort)!!

Honestly, to me this seems self evident. If I was a company manufacturing a product with this bug I would:

1) Check if this is actually true. In this particular case it is even so easy (and 100% deterministic)!!
2) Apologize with the paying customers (who paid bug-free dollars) and thank them for taking the time to isolate and report the bug (doing a job that should have been done by Yamaha before releasing the product).
3) Correct the bug asap so that the customers can enjoy the functionality they paid for.

Both the MIDI-IN (PC --> MODX) and MIDI-OUT (MODX --> PC) ports are reported by Windows as "MODX-1" (probably this is the label assigned by Yamaha driver). So the ports used (and as far as I know the only ones available to use for the purpose) are MODX-1 Midi IN and MODX-1 Midi OUT.

Why a CC120 entering in MODX-1 Midi IN should trigger a note off (or zero velocity note on) on MODX-1 Midi OUT? How do you justify this?

It is like, in a car, switching on the air conditioner and seeing the left direction light being turned on (or off)!! It simply does not make sense (even before checking the instruction manual of the car or small prints in some legal document). I think that the manufacturer's efforts should be best directed in fixing the problem, rather than questioning whether the user has the right to switch on the air conditioner before/after a turn!!

 
Posted : 06/12/2021 3:04 pm
Posts: 0
New Member
 

MODX6 with firmware 2.52 (latest). Using Yamaha-Steinberg midi driver on Windows 10.
Trying to use the MODX as a midi controller to send midi data to a DAW, and at the same time play midi tracks sent from the DAW to the MODX sound generator (pretty standard usage). I have set local control off and everything seems fine (the DAW receives the midi data, and the MODX plays the midi data sent by the DAW), but .....

Here is the bug:

Let us say the MODX is transmitting on midi channel 1 (any will do) of the port MODX --> DAW. I press, let us say, C5 and keep it pressed: the fall guys DAW receives the midi message "note on C5". This is right. Of course since I am keeping the key pressed, no "note off C5" midi message is received yet.
While I am still keeping the C5 pressed, the DAW decides to play something on midi channel 1 of the port DAW --> MODX (for example a prerecorded track I use as a guide to record new tracks). This is a different midi port and should be completely insulated from the port MODX --> DAW I am using to input data to the DAW. Unfortunately this is NOT the case.

If the DAW plays a "note off C5" on channel 1 of its output port (or also an "all notes off" midi message), then, although I am still keeping pressed the C5 key on MODX, the MODX outputs a "note off C5", which is received by the DAW in its input port. The DAW thinks I have released the key (not true !!!!!!), and records wrong midi data.

In real usage this bug appears to be erratic since it is triggered only when the DAW plays a note off on the same midi channel (of the DAW output port) used in the input port as well, and if the user in that moment is sustaining the same note.

In practice this is deterministic and you can reproduce it 100% of the times: set the DAW to play a loop with 1/4 C5 notes on midi channel 1 (so that you get a "note off C5" every quarter). Then play (= press on the MODX and keep it pressed) a sustained C5 note on the same midi channel. The DAW will receive a "note off C5" at most one quarter down the road, although your finger is still on the key. Of course you can use any channel and any note you wish.

There is no way you can record something properly using the MODX as a controller and sound generator at the same time.

What are all the errors for MODX6 that I can get?

 
Posted : 07/12/2021 2:16 am
Jason
Posts: 8238
Illustrious Member
 

What are all the errors for MODX6 that I can get?

@ jones:
FYI - your quoted text is slightly out of date. The problem statement is now that the problem is with an incoming CC 120 (all sounds off) handling and not an incoming note-off. This is a more limited scope than what you quoted.

To answer ...

Errors would not be seen on MODX. The problem would be with the receiving end of MODX's MIDI out (USB in this case - although I predict the same behavior would happen over 5-pin MIDI as well).

The problem you would see on the MIDI connected device would be the connected MIDI device (DAW or otherwise) would stop sounding due to cancellation of notes previously triggered by MODX.

This particular behavior seems to be following the data list documentation of what the CC 120 will do to previous note-on events (regardless of origin). However, this is problematic and the request would be to change the behavior such that one can use a CC 120 to only affect the tone generator and not the MIDI OUT segment when MIDI OUT has been "severed" from the tone generator with Local Control Off.

All of that said - I'm not sure if using Zone Control has been tried yet or not as this may very well address the issue. If it does - then I would begin to wonder if a "DAW" should always be considered an external device - and, if so, if the quick template buttons involving the DAW should set all channels to use zone (ignoring if this is feasible or not due to the "reach" of parameters available to the quick templates). That would seem like an oversight if one must employ zones to cover 100% of the bases in using a DAW and the quick template doesn't switch the zone configuration out.

At least if zone control addresses the issue - then forward progress can be made although not without some Performance setup time. This could get messy (but not impossible) if either many custom Performances need to be adjusted or if usually presets are used (since they do not use Part zone control by default). I could see how, if faced with this, I'd want a cleaner way to fix the problem than having to make some large number of edits. If zone control does work, hopefully there are not a ton of Performances to have to edit. It's unknown if this does fix anything yet (no report of attempts).

Interesting stuff. Wonder what Blake's take is on this.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 07/12/2021 3:05 am
 HSL
Posts: 0
New Member
Topic starter
 

.

 
Posted : 13/12/2021 2:22 pm
 HSL
Posts: 0
New Member
Topic starter
 

Bad Mister,

setting a Zone to output midi data to an external device has absolutely NO EFFECT on the bug: it is still there, as bad as before.

For example: set up a Zone on Part 1 to output midi data on any channel (it does not have to be the same number of the part). Just to be sure, in addition to Control Off (in Utility/MIDI I/O) you can also set the Internal Switch to OFF in the zone parameters. Midi data will be output to MODX 1 midi output port.

Now here is the bug: as soon as the MODX will receive a CC120 on MODX 1 midi input port, channel 1 (the same number of the PART number used to output midi data, even if this part's zone settings are using another midi channel for output), it will trigger a note off (or note on with zero velocity) for any note that is playing. Even if you are still keeping your finger on the key.

This serious bug makes IMPOSSIBLE to use the MODX (and probably Montage as well) to input midi data to a computer while the computer is using the MODX tone generator (and sending CC120 as allowed by the MODX specification chart). This is the base of any use case you can think of.

When receiving a CC120 on a given midi channel, the MODX must silence all sounds on that midi channel (that on MODX has the same number of the Part) and do nothing else. Certainly it must not send out note off events (ore note on with zero velocity) on a totally unrelated midi output port (it simply does not make sense!). These spurious events make impossible to use the MODX keybed to input midi data to the DAW.

So, I would like to hear the official Yamaha position (and hopefully a plan to fix it asap) on this issue that makes the MODX completely unsuitable for the use it is sold and advertised.

 
Posted : 13/12/2021 4:38 pm
Page 1 / 3
Share:

© 2024 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us