-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Missing Waveform encoding details from Engine Library Format wiki page #14194
Comments
We use https://github.com/xsco/libdjinterop for this. Best to look in the sources there. |
@JoergAtGithub thanks! For some reason, the m.db file in the Engine export is missing the highResolutionWaveFormData column and data I used the following query to validate Attached is the export file |
After looking at the libdjinterop code amd some experimenting with the Export Engine version options |
I vaguely remember @mr-smidge mentioning something like that. |
Yep, it’s commented in the code! Now I need to figure out how the data is packed. |
Hi @david-res , indeed the high-resolution waveform was removed from Engine 2.x onwards, and it's thereafter derived on-the-fly on hardware players. You can see the encoding/decoding code for the overview waveform in libdjinterop here if you are curious on the exact format: https://github.com/xsco/libdjinterop/blob/main/src/djinterop/engine/v2/overview_waveform_data_blob.cpp Note that the overview waveform always has exactly 1024 entries. |
Also @david-res , I'm assuming you're referring to https://github.com/mixxxdj/mixxx/wiki/Engine%20Library%20format when you talk about the wiki page missing encoding details? I don't think anyone maintains that wiki page anymore - I wrote an initial version to help me before I had written libdjinterop, but after that point the code became the authoritative source of my understanding of the schema. If anywhere, perhaps a plain-English explanation ought to become part of the libdjinterop project instead and evolve with the codebase. |
Btw, if you plan to write a media player that reads the Engine Library format, if you're writing in C++ then perhaps consider libdjinterop as your library of choice for loading the Engine database? It would save you having to decode things yourself! |
Hi @mr-smidge
Yeah I was using that as my starting point, while it seems outdated, as it was last updated in 2022, it was still very helpful to me!
Im actually building a standalone media player using an old CDJ 1000 MK1, a custom Teesny 4.x with SDRAM, an 800*480px LCD and some other bits and bobs So far I have decoded the SPI communication for the CDJ control panel, replaced the jog wheel VDF display with a 2nd smaller LCD display and now I am at the part where I want to load the metadata in I have written my algorithm and sequence to scan a selected WAV file on the SD card an analyze it to extract a Loudness+RMS waveform, and used Beat-and-Tempo-Tracking library to detect the BPM. I'm not sure I would be able to make a full implementation of |
This sounds really cool 😎 ! |
Thanks! Is there a place I could pick your brain on some things? On the CDJs/Rekordbox the split each second up into 75 frames. |
@david-res - Please feel free to send me an email - if you clone the repo, you'll find my address in the commit logs if it's not visible on GitHub 😄. |
I'm building a custom standalone media player based on an imxrt1062 and want to use Mixxx as my playlist source
The only way to load the tracks + metadata is to export to Prime Engine OS db.
I specifically need to understand how the waveform data is formatted/encoded?
For example, in Rekordbox track waveform data, each second of a track is split into 75 frames, each frame holds a 2 byte payload of the line color format(9 bits) and the line length(5 bits) - https://djl-analysis.deepsymmetry.org/rekordbox-export-analysis/anlz.html#color-detail
Is there something available for Engine OS as well?
if someone can point me to the export code, specifically that of the waveform section - I could have a go at it myself
The text was updated successfully, but these errors were encountered: