Issue with Live discarding duplicate MIDI messages

Learn about building and using Max for Live devices.
Post Reply
Gravis
Posts: 104
Joined: Sat Jul 28, 2007 4:47 am

Issue with Live discarding duplicate MIDI messages

Post by Gravis » Tue Jun 29, 2010 9:27 pm

Ok, so there definitely a problem with either lives implementation of the MIDI protocol, or Max4Live.

Steps to cause problem ...

1: I send a CC96 on channel 1 to live from my Kenton killamix mini, the message i know reaches my mac cause i have MIDI monitor listening for it.
2: Live registers the message as arriving and passes it to max and my patch prints out the value.
3: I send the SAME MESSAGE again from my controller, the MIDI monitor picks up the message, Live picks up the message, but DOES NOT PASS IT TO MAX.

Why not? is it throwing away duplicates?

.... and more importantly how do i solve this?

I've thought that what i could do is receive the CC96 message from the controller, then have my patch send CC97 to itself, this would effectively reset what MAX4LIVE thinks was the last message, allowing my next CC96 message to arrive and be processed. However, if it is LIVE that is strangling the MIDI messages as it considers them 'duplicates' then this will not work.

Can you please help me find a solution/workaround?

Cheers
iMac G5 2.16 | Echo AudioFire12 | Xone 92 | Live 8 + M4L | Trigger Finger | Monome 256 | Kenton Killamix Mini | Truth 3031A

broc
Posts: 1151
Joined: Mon Jul 26, 2004 8:37 am

Re: Issue with Live discarding duplicate MIDI messages

Post by broc » Tue Jun 29, 2010 11:37 pm

You could send CC97 from your patch out to external midi and back into Live using IAC.
And also route the controller over IAC into Live (eg. with MidiPipe).

Or simply use MidiPipe to generate an additional CC97 message after receiving and transmitting CC96.

luddy
Posts: 791
Joined: Sat Aug 08, 2009 3:36 am
Location: Beijing
Contact:

Re: Issue with Live discarding duplicate MIDI messages

Post by luddy » Wed Jun 30, 2010 12:43 am

I don't know whether Live filters out duplicate Control Change events, but it's not uncommon for them to be filtered because they are designed to indicate a change in a controller's value, so in their normal use as controller values, duplicates don't add any information. You might try enabling remote control for the controller, map something like "next locator" to a CC96 with a particular value, and see if it is registering the arrival of each message. (I bet it will when the controller is used for remote control).

-Luddy

Gravis
Posts: 104
Joined: Sat Jul 28, 2007 4:47 am

Re: Issue with Live discarding duplicate MIDI messages

Post by Gravis » Mon Jul 12, 2010 12:01 pm

broc wrote:Use MidiPipe to generate an additional CC97 message after receiving and transmitting CC96.
this sounds exactly what i want!

Thanks broc and luddy :)
iMac G5 2.16 | Echo AudioFire12 | Xone 92 | Live 8 + M4L | Trigger Finger | Monome 256 | Kenton Killamix Mini | Truth 3031A

broc
Posts: 1151
Joined: Mon Jul 26, 2004 8:37 am

Re: Issue with Live discarding duplicate MIDI messages

Post by broc » Mon Jul 12, 2010 1:33 pm

After investigating the issue I have to add some clarification/correction.
It appears that Live's duplicate filter remembers the last message of each individual controller.
This means that generating CC97 does *not* work to prevent duplicate filtering of CC96 messages.

Actually you need to generate a different value of CC96.

So, if you want to send the same value x of CC96 twice, you need to generate a different value y between them.
To ensure that y is different from x, it may be calculated for example with y = (x+1)%128.

For simplicity one could generate a different value before each message, as shown in this max patch.
(Note that it must be inserted in the midi input stream outside of Live.)

<pre><code>
----------begin_max5_patcher----------
338.3ocySEsSCBCE84xWQSilnw4B2BSm9l9aXVLLZ0UCzRfRDcY+61VfInSk
IlEegl6ombumyoWV6gHKUU7BB9Z7cXDZsGB4fr.nlZDIMpJNIpvQiH4OqV9D
YR8UZdk1Ayqxxwmbj.NCN8XfNukvCJotP7J2RB7m52.KKSUk5Dt10TnAsFR+
RFuVQDBdQyUBlaLlQedX2dKiRcjI2jKhRv2pRXsWmEoiWIjOdeNOVW2PpefQ
BX3RvdbE0ULep+1wXzkPtUVVrMdd1OSFW7DqSLlauBE+O6b5u24vrKrlkF5N
Bm88NO3O04B4dY7fuZaPHMIXuicsd.iNj.eXHgT20CGChwoe7mI2Tr38StBU
YdbquZVpwuOGFuPKjQZgR1gCsGmUBFiK6tojJXYJSrzHA7hc9JNTEYxQLc.J
hdPUDL.EAGTE8+6U6mTT3HTjoXi2ajj.r8K
-----------end_max5_patcher-----------
</code></pre>

Post Reply