novation nocturn usb protocol

May 6, 2013 at 8:12pm

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.
https://www.youtube.com/watch?v=uy4oY5Mkytg
https://github.com/felicitus/nocturn-game

another guy who tried to add the midi part

https://github.com/dewert/nocturn-linux-midi

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.

https://github.com/Chronic-Dev/libusb

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.

#68112
May 7, 2013 at 7:56am

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…

#244642
May 13, 2013 at 10:36am

i’ve made great progress with this. Seems like i AM able to create a nocturn object in near future :) (for windows) i guess because simplifies it.

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.

#249123
May 13, 2013 at 10:43am

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”

http://sourceforge.net/apps/trac/libusb-win32/wiki

#249124
May 16, 2013 at 6:36am

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.

#249525
Feb 23, 2014 at 11:19am
#281870
Feb 24, 2014 at 2:30am

Brilliant! Any plans for a Mac port of the external?

#281924
Feb 24, 2014 at 9:36am

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.

#281962

You must be logged in to reply to this topic.