Traktor Metadata Listener is BACK! v0.0.5

Discussion in 'TRAKTOR PRO / TRAKTOR SCRATCH PRO' started by DiscoNova, Nov 30, 2018.

  1. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    Been in hiatus since 2010, inoperable for tweeting since 2012, inoperable on Windows OS since Win8+ ... and ... now there is a new version - with a new name; "Harvester". Definitely experimental - and definitely not safe to be used Live ;)

    Available at https://www.disconova.com/utu/traktor-metadata/5-beta.zip

    Should work with T1/T2/T3 (only tested with T2/T3 personally, but since the broadcast protocol hasn't changed since TSP1 ... it "should" work).

    Compiled for Windows (32-bit; works on 64-bit versions too) and Apple's OS X (both 32-bit & 64-bit -versions ... both work, but 32-bit version outputs a few errors when started (on a 64-bit OS-version)).

    It has been unable to tweet since 2012 as mentioned, but now it has a working REST-API for all webdev-savvy folks to work their magic upon ;)

    Be sure to read the readme.txt in the package before using!

    Peace out!
     
  2. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    The first bug reports are beginning to drop in...

    Apparently, Microsoft's Edge-browser is unable to visualize the track names (and does some very weird things with the visualizer animation altogether). Frankly - I haven't tested this thoroughly on different browsers or different operating systems. Personally, I don't even use Windows (even the executable file for Windows has been cross-compiled on a OS X machine:)

    Furthermore, Microsoft's Internet Explorer (someone is still using this?) is unable to display most of the visualizer - including track names and animations. This comes as a no surprise; on my mind MSIE is dead - and has been for years. Trying to achieve UI compatibility with it is an exercise in futility.

    I will see what the problem is with Edge, but I will not be bothered to make any changes to enable the visualizer to run on MSIE.

    For now, best bet for seeing how the visualizer should look like is to use a recent Firefox, Google Chrome, or Safari (although Safari does have minor issues, for most part it is displaying the data as it should).

    Also ... apparently I haven't taken into account "very short artist / track names" in the visualizer ... those show up in "ridiculously huge fonts". Will need to fix this at some point, but ... also want to remind folks; you're supposed to write your own visualizers ... the one shown by default is nothing more than a technology demo of "how to use the REST-API" ;)
     
  3. Ywe

    Ywe New Member

    Messages:
    18
    Iv'e been searching for this all day! But now (after reading the entire history) I don't get it to work... I get the message the file is corrupt and has to be moved to the trash can. Now I warn you, I don't have much experience in code at all!

    Only thing I could tell you I have a 2010 macbook pro, 2,4 GHz Core 2 Duo (so thats osx64 right?) with OSX 10.11.6 and 4 GB 1067 MHz memory. Traktor is TSP 2.11.3.17

    Could you point me in the right direction?
     
  4. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    Hmm... Core 2 Duo should indeed be running OSX64 ... but - unfortunately, I no longer have such old hardware to test the software on :(

    Have you tried running the OSX32-version (which is also included in the package) ...? Does that work, or is there a similar issue?

    Furthermore; I don't know if this is an issue with purely the software itself (which is very much possible - this wasn't tested on too many older hardware setups at all) or some combination of hardware/operating system/software. Simply - too many moving parts here :(
     
  5. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    Oh ... one idea I do have :D Did you follow the procedure in the readme.txt ? => "start the application from the command line" (i.e. "not by clicking on the executable file")? Because that actually makes a world of difference :D
     
  6. Ywe

    Ywe New Member

    Messages:
    18
    Yes I did, same message :( I'll try on a newer machine later.

    Since I don't have self control I grabbed my 2012 MacBook Pro with i5, 8GB Ram and Mojave from my wife and downloaded it there...
    So 64 says:

    And 32:

    and opens a web page so that seems ok :p
     
    Last edited: Jan 30, 2019
  7. djaytek

    djaytek NI Product Owner

    Messages:
    47
    Is there any other threat where you explain what this utility does? :) thanks
     
  8. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    That's ... weird :D If it were not a 64-bit machine, I wouldn't have expected the 64-bit version to even start (which it did - even though it did fail to start the listening server). But ... since you got it working on some level, I think we're fine and dandy ;)

    The original discussion can be found in https://www.native-instruments.com/forum/threads/traktor-metadata-listener-tweeter.94911/

    But basically, the app listens to the Icecast-stream broadcasted from Traktor and listens to the metadata (artist & song name) embedded within the stream and ... well - the old version used to be able to send this information into twitter, but they changed their API several years ago and that feature stopped working (rendering the whole application rather useless). Now the new version doesn't even attempt to talk with twitter, but it offers a REST-endpoint for other application developers which they can use to do whatever they want with the metadata. Also the new version has a browser-based visualizer for the metadata (for those users who don't really want to write their own code or don't know how to).
     
  9. alexbnieto

    alexbnieto NI Product Owner

    Messages:
    98
    do you happen to have the source code? if you do would you be willing to send it my way?
     
  10. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    Yes, I do, but...
    ...unfortunately this is the one thing I can not do :(

    The original code was built while I was working for a "company" way over 10 years ago. But the problem is that ... most of the code to make it work was built "on company time" as a proof-of-concept for a project we were working at the time (and - just to be clear - it had *nothing* to do with Traktor at that time). Anyways - this does mean that the "company" does own the intellectual property on all of the code I wrote "on company time" back then.

    It literally took me nearly 8 years to get the "company" to approve the fact that releasing a _new_ version of the app does *not* infringe (based purely on the fact that they no longer use the original code for anything) on the IP they - at least in theory - do "own".

    The silliest thing in all of this is that for the last 10 years ... I *have* been allowed to tell everyone (and *have* been telling everyone) what the "black box" of the code (which is the part of the code that "can not be released for legal reasons") is doing - naturally without going to the exact details of the code ... and at the same time - this information has - very much - been publicly available the whole time.


    The "big problem" the "company" has against releasing the code is that on their opinion ... *ahem* ... "using a cyclic input buffer of a stream of bytes to catch specific parts of the input stream of proper length" is their intellectual property; "something your baseline programmer will not think of doing" ... and - personally - I think this is just bonkers :D

    But... since I'm just me and the "company" has a ton of lawyers to make my life miserable... I don't really have the balls to try and contradict them :D

    Instead - for everyone that bothers to ask, I do tell them this:

    * Traktor broadcasts audio using IceCast-protocol (using an OGG-stream for the audio)
    * IceCast-protocol basically defines a standard "HTTP/1.0" server which has an intentionally "built in discrepancy" ... When you start receiving the request from the client (e.g. Traktor), and it is a request of type STREAM (instead of the normal GET/POST/PUT/DELETE/HEAD/whatever) and you reply with the necessary headers... after sending your headers (including the "empty line") out you need to *continue* reading from the open socket (instead of disconnecting like standard HTTP/1.0 stipulates). The next thing you are receiving is the actual OGG-stream from Traktor.

    * If you want, you *can* try to do something appropriate with all of the OGG-stream, but you *could* simply limit your interest on the stream's metadata;
    * The stream *is* split to frames as specified in https://xiph.org/vorbis/doc/Vorbis_I_spec.html and while there _will_ be a lot of audio frames (which you do not care about)
    * there *might* be some metadata frames as specified in https://xiph.org/vorbis/doc/v-comment.html which you could be interested in ;)
    * the metadata *might* contain data for "ENCODER=Native Instruments Media Library" (which means you may just have hit the jackpot on the stream of data coming from Traktor:), "ARTIST=The Name of the Artist" & "TITLE=The Name of the Current Song" ... but you really must parse through the frames as per the spec to get them out properly.
    * And if you find data, it is *supposed* to be UTF-8 encoded ... but it might not, so check it for conformancy :)


    And ... basically *this* is why I am not actually able to release the source code. It is because of "reasons". Sorry :(
     
    Last edited: Aug 15, 2019
  11. alexbnieto

    alexbnieto NI Product Owner

    Messages:
    98
    lol totally get it! i work for a tech company so i know all about the IP portion. heres the funny part, that kind of code has been around for ages so not sure how they could patent it (IP as they claim). does sound very bonkers. ill admit i know the code, but im looking for better ways to do it and make a better UI. my GUI programming skills suck arse.
     
  12. DiscoNova

    DiscoNova NI Product Owner

    Messages:
    1,205
    Ah... the code is not patented. However, since the original code was written on company time, by law in my country, the company owns all rights to the code. Well... not all - I could write it from scratch again "some other way" without taking a peep in the original code ... but that'd be a lot more than a few days worth over undertaking :p