Timing of midi devices in serial connection
I have 2 midi devices in serial connection each using its own (but identical) time control (metro>transport), and it turns out that the timing of the second device is *early* in relation to the first.
The patch below generating a note on every beat may be used to reproduce this behavior. Just build a device from it and load the device twice on a midi track. As instrument load some drum sticks, for instance operator preset ‘Sidestick-808’.
When running you’ll notice that the timing doesn’t match. For synced timing the delay parameter of the second device must be adjusted (about 12ms).
I’m wondering if this behavior is intended or a bug?
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 866.3oc6X0rbaBCD9r8SgFN65hj.ComZ6qQlLYjA4D0HKQQxtIMSd2qj.rww fMvDS7gdgeVshc2uc0mVwqSm3sT9LU4A9F3VvjIuNcxDmHqfIkuOwaM44DNQ 4TySP+ib4u7lULjl9rtPrTSYhJwqjBsh8WpcHn+b+RwYDcxiLwC2mSSzEFEh QlgA3nP6sfE1qv349f6JmiXyZlfS0NqCKExRcF03HeA6sWQ4Fckl3RoEhzuj QKrmGSn8lcvsclx50BxZmld+HmQ3feJ4oUFHQxk4EeE+4vfP+ahmYdJH.CwQ 1mhBWDu.a7eq6amyaSmZuLqiPKmskNO0X1JKtkjuye1M3sn6pCyqHINENAFi BbfKN.6v3.20nygwY4TEUnIZlTzB1G3syn4F+TSyumJHK4z55eXdA0VdwlMV wkjZ4i5dP8RFWQR3hVBFEYKM8dhVmyVtQS2+jpD5KwdK7x2PkqpDWIud3rQv zJ8K75P7AJr1jAcQKJZdyiybnmeiixLeda91EWKBphgCzoBifsO+iQ8CzR8n Leeg8VJWlvzu3032aKSwVdhvUldl.lHLTAEorclrISwkhGNUw8Ql8T3HmIdx 9wTmxukosFVLwJYqdpLOkl21LcEHsNUUFklxYqaa1JMMqUel9blTPEtpdCkR gBNJkpaWD9k9RtfcKAQX3GL4B5SgbIB8IQtftrjK96ChKJ6RJkStNoV9Ouxk hWokVByXYTfe+aIDAKXThiccsbyoaIDcLyAr4VBgsxNb1N.+3.kuBBhGNl.i csvgw8GSP8DT5Tmweb3hNmHTYFljAbDBXQIRnaGnBxidBNsbHha51gHJ1Yow GZRqwDVMq3ykf.A36+dCQnM3o6ERh1PKBfCGrQEkfKFvpyvdVItjHdXLwL6Q YMNwfWjFDhp5a3TPC9XnItYjw+J47osszErX3LZ3HbAYeuO3OL35lQaM4Ips TB3ChECuXx2gLw98tXBF40uljeG6UefJmtlVsDu+eI4BLq7CwOkbSdRkcq1d BrO1RoJMSr6zA2tae8Z57HKMkJpu9XMKMSZxxk9PK03c1k5hGELptTWAI33A RlcNAQmykPiahKrKvDdT8I7AYklco3QMyg6.HEOt4snqSW55JuEzkh6nwkDn y9zPyblWda5+.LBJuKB -----------end_max5_patcher-----------
I’ve copied your maxpat into a MFL Midi Effect Device.
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1105.3oc6Y1sajZCEG+5Yk12AKtNcVLeOU8hcWs2Do1mfnnHOvgD2kwlBloI cUe2q+XfgYBPHTHSTUuAXrM1G+63yeeLyO93GVYsk+HTZg9YzMnUq9grjU5x TkrptfUV6HOFmQJ0MzhA+Ie6uac0g5DviBS4bAPYMkyp1QYYfP+R35RS4LQI 8u.cg1qsa0Zdknt4t0EmSDwOPY2eWADKLlIdCV9ZnvH0Uu.0Ur7Yzs0uioeD OkClWvhxDVWcxsiMNlmwKLsydM1y2dSzUxm77bwtgpmB8ChBbkiQ6gPMKXjc 5Av5KETRF5q7rjl4NMQWiDS+jqktr+9iePcWd6pQC5L5dXchrya528jhlgso 1abt8EfddATBLAQP4rVjz0.R8UOO80vymkojX8v0iixY.GkmuipO8i5q+aaV mXuOyCp7aoYbRaOWNoPhBATbGvHayfS5gVN.+F3TR1CI2QDhB51JAb7oxCdg Z2fBzYU.Ost7lJZOr7hDnnMaNo1JF0fHKqtptLGfjL5tde+RAjW1asvi4bFv zjFuteCP7TFzamrStZS2ANgq6oATsiwt6poxQPs5T6iB7ZbMmznZuHdfdnCO 3or3Adww3s8PFOlJdxp6dbOsjtcnYMO4kl2DlTKyDszLpcNZYb18CFP9rQdP flQYeW0ckCZ77j9mbTVJ2XtGp7ftywGVPgnooBEEtnpPtAZ8m.7kUEJ5+UgN 5mVNUH6Vd1EVFJAxHue0f9uk.TeoblSyAjc25NNutTNwCng3rwWoarQmro6l Qjxo0jxUDaaM6H5SHun2LBE3pIj6HSJeZPxY9gjnfvJykQ2yBn1LDnrs0HRu cjI3+0c7EyFPc9PWsZhL1c9YrTenfi7XnO+GUDlPRQ8OHwBolEBu7KQOPdMw CFSP7VB69IxO+4mepiWKMwt4j6qiS1Cwo.yhRebctRmCpE+LyX7BDhiBrmku Mwvxfdl3Z8IechVTcPuEHFk7cPsNCYihXyxJsASMGahBMbJxdDz5LQuoAtvo CtX9tcpDdeF49EzWqnYInm3UEne65ucMBRSkyTzCPAzzbY9UPLuxjwrybrZb nHYS9JA5kjQ58mc1LwHRuE.YeC1SiAzdnPPikis7bHTg0RCEyprPyMbGQnOm JM1zCzjDf02Q71r.LRuRRvQ+pbOxSp8DMXWknqqmVD9LU2QfQ7Tvnq4Cud3S HZ1TcLKtPWKHYz3l4RZw8aGwznElCWJLmVv28NDzGVopChidC4bvBr8BMg1a JLyXLtmgSXm9xf4Un74rLXXl9iRvuHEbMPvdQSE4bFY5E81cm+mKoMTUEmQt R4Fmw0VhoSkKPOZNIPofxZ9Jc2T6cNoQGEna3kD14b4L6fcftse243MMuwXa x7LtDFm+nsM7aO3NaX6w3vWNiydTF2auW08cts8t0oNtvA2KiNhZXCeQi6xH xEMJvYeY7p1ix37tLdUmQSt+cFmp.4s+AgQsvsC -----------end_max5_patcher-----------
For notein I made a MIDI Clip with notes on 1, 1.2, 1.3 and 1.4. This matches with the metro. Then I copied this clip to a new track.
Both tracks initially had a NI AkousticPiano device.
I could not hear much difference between 0 delay and 12ms delay with this piano.
Then I changed to the ‘Sidestick-808’. This is a very crisp sound indeed.
The best preset for my ears is 0 delay. 12ms delay can be heard as 2 sticks. So my experience is opposite to yours! It doesn’t matter if the clip is on the same track as the metro or on a track of it’s own.
I’m using Ableton Live with MFL on a Windows XP machine with a 4 core Intel processor running at 2.4 Ghz with 3.5Gb of RAM.
thanks for looking at it, but I think you misunderstood the configuration.
Don’t use a clip for comparison. Just load my device *twice* on the same track.
So the midi data flow should be like this:
mydevice -> mydevice -> Sidestick 808.
I loaded to patches to one track and now I hear what you are pointing at.
If I open the first of the devices in Edit mode the synchronization changes. I need to compensate for about 22ms now. When I open the second one in edit mode synchronization stays the same.
I can’t imagine this behaviour being a ‘hidden feature’. In my opinion it’s neither intended nor a bug. It’s a latency issue. The signal of the first device has to travel through the second and this takes apparently about 12 ms. The delay of the second device compensates for this.
Live and MFL have to share the same cpu using threads. Threads are either on different cores or they are time-sliced. The 12 ms latency is not constant but it gets better and worse from beat to beat, the synchronization of the beats sounds irregular.
I’m afraid Cycling ’74 nor Ableton can take this issue away. I guess a lot of development time for MFL was already used for solving timing/latency problems.
Thanks very much for investigating.
Your explanation makes sense to me. I understand that timing/latency issues are inherent to real time systems like M4L. But I think it’s useful to identify and quantify them as much as possible, at least from the users view.
Forums > Max For Live