This is the first alpha version of the codegen for Echoprint. Please note: this is not the final version and will likely not emit codes that match release Echoprint codes. However, this version will correctly match files. There are two modes of operation: 1. the Codegen library is meant to be linked into code that passes it a buffer of PCM data and will output a code string. 2. the Codegen binary runs standalone, accepts filenames as inputs and runs in a multithreaded worker mode. == Requirements for the codegen library == - Boost >= 1.35 == Additional requirements for the codegen binary == - Taglib (we provide compiled libraries for Linux and OS X) - ffmpeg == Notes == You only need to query for 20 seconds of audio (or less sometimes) to get a result. Notes about libcodegen: Code generation takes a buffer of floating point PCM data sampled at 11025 Hz and mono. Codegen * pCodegen = new Codegen(_pSamples, _NumberSamples, offset); the "offset" parameter creates a hint to the server on where the sample is taken from in the original file. If you know this (for example, if you are automatically scanning a large library of audio, choosing specific 20 seconds chunks of audio) the server will use this information but it is not required. After compute, you want to call pCodegen->getCodeString() to get the code string. (The code string is just a base64 encoding of a zlib compression of the original code string, which is a series of ASCII numbers.) This package also contains an example code generator binary for all 3 platforms (Mac 10.6/10.5, Windows, Linux 64-bit & 32-bit.) This code generator has more features -- it will output ID3 tag information and uses ffmpeg to decode any type of file. If you don't need to compile libcodegen into your app you can rely on this. Note that you need to have ffmpeg installed and accessible on your path for this to work. ./codegen.Linux-x86_64 billie_jean.mp3 10 10 Will take 10 seconds of audio from 10 seconds into the file and output JSON suitable for querying: {"metadata":{"artist":"Michael jackson", "release":"800 chansons des annes 80", "title":"Billie jean", "genre":"", "bitrate":192, "sample_rate":44100, "seconds":294, "filename":"billie_jean.mp3", "samples_decoded":220598, "given_duration":10, "start_offset":10, "version":3.14}, "code_count":76, "codes":"JxVlIuNwzAMQ1fxCDL133+xo1rnGqNAEcWy/ERa2aKeZmW... You can POST this JSON directly to alpha_identify_song, for example: # curl -F "query=@post_string" http://beta.developer.echonest.com/api/v4/song/identify?api_key=YOUR_KEY {"fp_lookup_time_ms": 21, "results": [{"songID": "SOAFVGQ1280ED4E371", "match_type": "fp", "title": "Billie Jean", "artist": "Michael Jackson", "artistID": "ARXPPEY1187FB51DF4", "score": 63, "release": "Thriller"}] (you can also use GET, see the API description) ###### FAQ Q: I get "Couldn't decode any samples with: ffmpeg" when running the example code generator. A1: When running the example code generator (codegen.$(PLATFORM)) make sure ffmpeg is accessible to your path. Try running ffmpeg filename.mp3 on the file you are testing the code generator with. If it doesn't work, codegen won't work.