novation nocturn usb protocol
i found my nearly forgotten novation nocturn controller in the corner. after thinking about reimplementing it into my system, i instantly remembered what a pain is the Automap software and setting it up. (unfortunately the nocturn will not work without this software because it does not work as a generic midi controller. why novation, why?)
btw: i’m on windows..
i started to look around if someone already created a custom driver or even a max object. i found this guy on youtube who sniffed and "hacked" the usb protocol of the nocturn with python under linux.
another guy who tried to add the midi part
i thought about doing it in C (long term objective, need more C training first) and there’s libusb wich even seems to provide a cross-platform usb lib.
i was able to create and install the libusb driver for the nocturn, but have some trouble with the header files (no missing files but missing links, probably noobish problems)
anyways, i don’t expect me to be able to create a nocturn object in near future but i want to share this for interessted people.
maybe you can tell me if it’s possible in general to use the information in the phyton files to create a nocturn-external for max?. O.
A nocturn external would be perfect as I also had forgotten mine in a dusty corner because of automap’s pain. This is far from what they told it is…
at first i focus on the input (nocturn->pc).
the usb read function blocks the thread, so i created an extra thread for the read function. stopping the thread will only work if i use a timeout for the usb read request, so that the thread can check if it’s "stop" variable is true. i wonder what time to use for the timeout or if i can stop a thread allthough it’s blocked currently..
i understand mutex, but what is the qlem for?
i dunno much about usb specs. Is there another buffer before the application? at some point it seemed to me that i can press the button on nocturn, AFTER THAT executing the read function will still get some values? so it wouldn’t miss something if the worker thread stops reading for a moment to do other things?
i will post a beta version when the object is reporting all input and stable on my system. O.
don’t know if you see the link above, i don’t see it but i also do not see post dates currently. just in case ;)
"because libusb-win32 simplifies it"
please send me mail to contactolsen at gmail if you want to help me testing the external in it’s very early beta state. required is Windows and a Novation Nocturn. no Automap software needed, not even the novation driver. O.
Brilliant! Any plans for a Mac port of the external?
i can’t do it without a mac. please send me a new macbook pro ;). i’ll share the source with everyone who asks for it. but there’re os specific things that won’t translate 1:1. maybe there’s a mac version of libusb, i didn’t do any research into that direction. O.