Open juliu-s opened 1 year ago
Awesome, thank you for testing and reporting back!
I will clarify some limitations:
The primary goal of this project is to contribute to the reverse engineering efforts of the export format by adding missing pieces of documentation, and providing a reference implementation of how to write these files.
Now that the project has some traction, I will consider adding the missing features such as:
I will probably start with the latter, because Mixxx holds plenty of information that can be scraped, so that analysis does not have to be re-implemented.
Not sure about the time frame of all of this, but this feedback definitely motivates me to finish quicker :)
Regards, @ambientsound
That would be awesome. Then you are able to use the same workflow as with Rekordbox. Prepare your playlists / sets in Mixxx and export the playlists to USB. Good luck and if you need me to test something, please let me know.
Regards, @juliu-s
@juliu-s,
I've implemented conversion from a Mixxx library to Rekordbox. Would you be so kind and test this against your own library and see what works or not?
The following should work:
You can run it now with rex -root /path/to/USB
, no other parameters required on Linux. If you're on Windows you need to configure the path to the Mixxx library.
I am running Arch Linux and did not use Mixxx before, I installed Mixxx (2.3.4) and created a few playlists (no crates) containing only MP3 files. I formatted an USB and tried, and it failed.
❯ rex -root /run/media/julius/USB
REX: unofficial Pioneer DJ export.pdb generator
This software is neither supported nor endorsed by Pioneer.
Please do not rely on it for serious use.
Mixxx database opened: /home/julius/.mixxx/mixxxdb.sqlite
PIONEER database created: /run/media/julius/USB/PIONEER/rekordbox/export.pdb
fatal error: no such column: library.coverart_color
Result:
❯ tree /run/media/julius/USB
/run/media/julius/USB
├── PIONEER
│ └── rekordbox
│ └── export.pdb
└── rex
It seems I have a database file which has been through a future version of Mixxx and my schema is incorrect. Please try with the latest commit. If it still doesn't work, please send me the sqlite file.
With the latest verison:
❯ rex -root /run/media/julius/USB
REX: unofficial Pioneer DJ export.pdb generator
This software is neither supported nor endorsed by Pioneer.
Please do not rely on it for serious use.
Mixxx database opened: /home/julius/.mixxx/mixxxdb.sqlite
PIONEER database created: /run/media/julius/USB/PIONEER/rekordbox/export.pdb
fatal error: no such column: library.last_played_at
Sqlite file: https://drive.proton.me/urls/CY0QF0KG5M#UQybrJYslRuT
Thanks for the file, I have made another commit that hopefully fixes all your problems :pray:
Awesome stuff, it works. On the Pioneer I see the playlist containing the tracks, only the track title tho, no artist. But it plays etc. :).
❯ rex -root /run/media/julius/USB
REX: unofficial Pioneer DJ export.pdb generator
This software is neither supported nor endorsed by Pioneer.
Please do not rely on it for serious use.
Mixxx database opened: /home/julius/.mixxx/mixxxdb.sqlite
PIONEER database created: /run/media/julius/USB/PIONEER/rekordbox/export.pdb
Found 7 tracks in Mixxx database
Tracks imported.
Playlist "P: Tech" loaded with 4 tracks
Playlist "P: Dubtechno" loaded with 2 tracks
Playlist "P: Beats" loaded with 1 tracks
Tracks marked for export: 7 used/ 7 total
Copying or encoding tracks to /run/media/julius/USB/rex
All tracks copied to destination
Writing PDB file...
Finished successfully.
Thanks for the feedback, would you mind taking a few photos or a video, both with a Rex export and another from Rekordbox? It would help me understand how things are supposed to look.
Is Rex useful for you in this state, or what would it take?
Hi, no problem at all. Currently I am running Recordbox inside a VM, "so I got all the features" so there is absolute no rush. But Rex is useful when:
Rex would completely replace Recordbox when (I don't know if Mixxx support this already):
On the Pioneer it's called "Performance mode", something like this. I can make a video of it, if you want.
The video's you asked for, can you give me a beep when you got them?
Thanks, I pulled your files. I'll check which Mixxx data is eligible for export. Will get back to you eventually, thanks for help and testing so far :)
Judging from the videos it seems that
Interesting, that made me think of the following test that I will do in the comming days. If you have any suggestions, please let me know.
setup:
usb1:
usb2:
usb3:
Just a side note to your tests: Rex always reads metadata directly from the Mixxx database itself, not the actual files. So your changes will always be reflected in the export.
And the album/artist problems must be fixed within Rex itself, unfortunately I don't think there is anything you can do from the Mixxx perspective to get it working.
Some good news, it seems that rex
is doing it's job after all. I tested as I said with two MP3 files only containing the Artist, Tittle and Album metadata. Side note, Mixxx saves the updated metadata to its database (tested it with the album field). It's not like updating it with VLC that updates the metadata of the file.
In the first try there was no info displayed, after I formatted the USB drive again and used rex
the info popped up! Here are some pictures. With the Pioneer you can get info from a track when it is loaded and playing, or not loaded when you're scrolling through playlists.
That's great news that track metadata is loading on an XDJ1000! Other testers have had issues with that, although the metadata loads fine on my CDJ 2000 Mk1s. May I ask if it was a "quick" format or not? Pretty sweet!
Hmm, it seems it was a lucky hit. I tried several ways* to reproduce it but no metadata appears. I orderd 2 new USB sticks and will try again.
dd
before using the Gnome disk utility againdd
and mkfs.fat
In my limited experience with Pioneer players, I've found best results formatting the USB drive in Windows, and keeping the drive size < 32 GB. But there should probably be a way to format it properly in Linux. Probably the sector size should be 4096 bytes, and align properly with the physical media?
mkfs.fat -c -F 32 -n label -S 4096 /dev/sdX
.
So, it's been a while...
I tried your mkfs.fat -c -F 32 -n label -S 4096 /dev/sdX.
suggestion on a 32GB USB but it didn't work. Then I used the disk utility from Gnome and did not quick format the drive (@theot99). The result was that the playlists with artists and track titles showed up.
Awesome that you got it working. But did you also try with the quick format option turned on? It shouldn't be necessary to do a full zeroing of the drive.
I wonder what the correct parameters for mkfs
are. If you happen to figure it out, please tell me and I'll add it to the documentation.
The correct parameter is: mkfs.fat -c -F 32 -n label -S 512 /dev/sdX
(tested twice).
There is also a warning[1] displayed because of the lowercase labelname but the USB drive still gets recognized.
[1] mkfs.fat: Warning: lowercase labels might not work properly on some systems
Thanks for the feedback, things are a bit slow here due to other pressing matters. I've added it to the documentation.
Hi there,
I saw your posts at https://github.com/xsco/libdjinterop/issues/15 and https://github.com/mixxxdj/mixxx/issues/9463 and I tested your work.
I don't know what the goal of the project is (if there is any) but I think it would be awesome if I could create folders (like playlists) on an USB stick and analyze the tracks inside and get the big waveforms like here.
So, below is my "process". If you want me to test something for you, please let me know.
Build
I used the golang container for building the application.
Scan and analyze
Results