NRPNs Part 1: The Basics – The first blog post goes over what NRPNs are and how MIDI handles them since I’ve gotten a lot of questions around that topic.
NRPNs Part 3: Sending with Ableton and M4L – Covers some bitwise operations used to convert values into MSB and LSB and the actual repackaging into 4 CC packets
Very interesting indeed – I’ve been chipping away at doing this for my Electribes and have it working fine.
Your blog made me realise I don’t think Electribes are even 14bit since I haven’t needed to use the LSB – 38. They must only use NRPNs because of the amount of controllers used.
Do you think your js will work if my device does not use the LSB data?
If I understand right you said in the code you assumed – "the LSB of the data will change every time we get an NRPN change."
Anyway – I’ll at least try it when I get a chance. Very interested to see if it speeds up transmission to my Korgs – which unfortunately don’t have USB.
That’s a really hard question to answer…
If you don’t have USB MIDI then you’re limited to normal MIDI rates. That means you really don’t want to send more than one MIDI packet (3 bytes) per msec. If you’re sending faster than this it adds a bit of latency to the changes in the hardware and if it overloads the hardware buffer you’ll start losing data packets and possibly cause some weird behavior. I’ve found that usually means 3-4 high resolution CC changes. So just be careful when you do high resolution changes with this method, it’ll probably break.
The receive script will work as long as you are getting a CC#38 change from the device. If the Electribe really isn’t putting out that value you may have to change the script slightly. Check to see what sort of data the Electribe sends on an NRPN change and change the script accordingly. I’d be surprised if it just wasn’t sending all 4 packets but I wouldn’t put it past them.
You’ll probably want to edit the script a little bit to prevent unneeded data from being sent. If you don’t need to send CC#6, comment that part out in the translation layer script so it just sends 3 CC packets instead of 4.
I have been trying to connect a A&H Qu-16 mixer using I&O nrpn MIDI messages to sync Live faders with the mixer faders.
It works but only with MaxMSP. I cannot have it working in M4L. Do you know of any simple solution, without going to uni and become a developper ?
Here is my nrpn patch, far from being perfect but working.
----------begin_max5_patcher---------- 1045.3oc0Y1zaaaCFG+r8mBBgdaNFhTRTR81.1kbXXXG1o1g.ZKlD1ISYPQ6 kth7ce7EIa4FKYZ.FV2fDkHRZw+7GediJea9rnUMuPai.eD7IvrYea9rYllz MLq69YQaHurtlzZFVTMaOcIe2F8nVX6eOQvIani0s5NFulJMedXWiaIx0Oy3 O8fftVZmeXBdY1BPRxxX0Ur9JLaYL3u6+HBZKkKIRVCe3ihUYl4lUe4t7nCO dgRQRp3AJmrplNb7J8zrS1KHzYd5CDkQR3QTj8wH+5VpcvQQK.QOV2PTe39w zR1SqdfHkB1pcR5w+psCxcTViw5czlG6atu8gKl5F9SSf5SFa6yMBoqCteM. OSeaT6+l9z.3scuiyjsxuZYbrs+WmO+3uLWec9BGMv3z+UsU1uQJouX1Ih9E PBpuwGa3GWY+pfQpOqsFZbaMDpzraVja1ZS0WQwC1ZGXTkFcVCG3XFAL9fse sTaY+mEtnkw9CHaI+i+3QmuGBYb9fPn4tQ.B5JARHngxoqZCssE74n+7utCh A+98+18f+Xm7yQWIklHBURowbI0bEhimxpAh+ogR2y8IjxMAwKf1nkvIYzMH h1Jz9udiFvx3A7X5.MnryyiX+snMoAZqYUTwnYuOs6qL6cVwfbkokWW5aX46 S96D3Xh5FHC9I39RYvGev8qgfjhVUGwQKDu4jfJM6PYSFWEEOkMR7j1HmMUs ZCeEg+jeis3Y.kZCihgNvG3OA7QmCh7D8MAeKKAe.s.TV.PIpxtAe.pCcBx8 egNXagNI1T4EivxawJc1vpXpI1idewkZjjhL1UokSZck7tmhZhk8iMhMjqck mewUdR2gAhm1w5G84.FyowuNHIIVXjMHV7X9Gv7ej9GiwiX.zi3.a3.JovAb DeKVOKYsGOmX2IfPwlBYUm.JQ+EZbulhaPjbmWeUBcHAVXrMRPScxYH717cI HTSLEnx9px7huRzjdYzjYrVJl9rfijqMcpJ0O7SvXDLG6eSGa9G7j7YjyFhl DOgnbD8xRiE.mq916urEXL1gjyvjazJ0X9mH1.MonI4w6UwJlwnNKJ+6+uFX zqt8S4TayNw59IoKg.3njqnsRF+v6D3SGSjBfGFzyrpJJeXYlUrV8IZpNbd1 2rg4pbxcPNomLl2pF0971FE.6HBL0V5TQegCcuVjiyh2TelKvLOXvzI4ft.M 8mbRcPNnfAGjSxIKXzwM8jDN8fbQOZQiBidhcUO3vnGWjS3btzuq1KqG3Mld BmbvtDKLMb5wEucX371+to575IbACMYkPWPNEAKWAzEmcX.ctfNnmhvIm2yL W1JbIa2tmJZ6dlFknp4+KMB8s3ElaYb6slhpiDz8r9wWZZgHTUvKUkuuSXq5 +EbZzb87757+GbM0KI. -----------end_max5_patcher-----------