novation nocturn usb protocol


    May 06 2013 | 8:12 pm
    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
    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.

    • May 07 2013 | 7:56 am
      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...
    • May 13 2013 | 5:36 pm
      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.
    • May 13 2013 | 5:43 pm
      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"
    • May 16 2013 | 1:36 pm
      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.
    • Feb 24 2014 | 10:30 am
      Brilliant! Any plans for a Mac port of the external?
    • Feb 24 2014 | 5:36 pm
      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.
    • Oct 11 2014 | 8:55 am
      Does this external work with Max x64?