mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.39k stars 1.26k forks source link

import cue points & beat grids from Rekordbox library #8163

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: Be-ing Date: 2015-07-20T15:29:34Z Status: Confirmed Importance: Wishlist Launchpad Issue: lp1476290


Rekordbox is the software used to prepare music for Pioneer CDJs. It would be helpful for CDJ users to import their cue points and beat grids into Mixxx's library. A feature that Rekordbox has that Mixxx does not support yet is color coding cue points. See Bug #⁠1367162

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-07-20T20:57:12Z


do you have any hints what we have to do to achieve this?

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2015-08-03T03:33:29Z


I have started a wiki page for documenting RekordBox's cue storage format: http://mixxx.org/wiki/doku.php/rekordbox_cue_storage_format

hile said on IRC that he wrote a script that read RekordBox's cue points but that was a long time ago and it might not work anymore. He said it uses XML.

mixxxbot commented 2 years ago

Commented by: naught101 Date: 2017-12-19T06:09:27Z


It would also be super useful to be able to export folders from Mixxx to a USB in Pioneer's format. That way the rekordbox software would not be required to analyse tracks before taking them to a club with Pioneer CDJs (which are pretty ubiquitous). Mixxx could be used directly to create folders and playlists.

This would be VERY useful for those of us on linux, where rekordbox isn't available.

mixxxbot commented 2 years ago

Commented by: naught101 Date: 2017-12-19T06:10:26Z


Also, Be, that xml file linked from that wiki is gone. Do you have it saved anywhere?

mixxxbot commented 2 years ago

Commented by: j.siler Date: 2019-04-15T15:41:43Z


I am sorry to jump in so late, but was just looking for this very ability.  I have been working with the rekordbox.xml file for some time.  In Rekordbox, editing the file allows on to finely tweak beatgrids, change time signatures, work with music that does quirky things, rhythmically; I use a lot of Latin tracks, mostly cumbia, that is old school and often drops or adds a couple of beats.

Pioneer documents the use of the xml file pretty well here: https://rekordbox.com/en/support/developer.php The spec for the xml format is here: http://www.prodjnet.com/rekordbox/support/pdf/xml_format_list.pdf

I will post some samples as soon as I get a chance.

I'm currently working on a primitive editor for the xml file which will allow one to do some things that are not possible to do directly in Rekordbox: 1 -- Change the time signature at any point. This is useful for non 4/4 tracks as well as for beat stuffing. 2 -- Move an individual beat marker without affecting surrounding ones. 3 -- Set a start and end point to define the region that may be altered by cascading or global changes (eg., shifting the beatgrid, changing the bpm at one beat mark, moving an individual beat mark without limiting the change to that mark, as in 2, above.

My frustration with Rekordbox (the only application I've found that will allow me to make the changes I need to make, albeit with great difficulty) led me back to Mixxx, and I am playing with it using a Pioneer DDJ-SX2 and Wego4. I'd love to figure out how to use it with real turntables and a DJM-Nexus mixer. I'd love to talk to any developers interested in pursuing importing the rekordbox.xml file into Mixxx, or anyone thinking about modifying it for use in Rekordbox.

Thanks,

Jim

mixxxbot commented 2 years ago

Commented by: uklotzde Date: 2019-04-15T20:39:36Z


Background: I'm working on a standalone service with a much more sophisticated domain model than currently used by Mixxx. Exporting tracks from Mixxx (including cue points and loops) is already implemented for testing purposes. As a consequence I'm neither interested in extending the existing Mixxx database schema nor to work on any integration tasks other than connecting Mixxx with aoide.

The OpenAPI spec should give you an impression of the requests and the underlying domain model. I've just renamed "TrackMarker" to "PositionMarker" recently as a response to your comment ;)
https://gitlab.com/uklotzde/aoide-rs/blob/development/resources/openapi.yaml

Most of the track metadata in the rekordbox XML file should be covered with slight variations. Currently only a single tempo is stored in aoide. I will extend this to support multiple tempo markers instead. The approach used by rekordbox is simple and straightforward, worth adopting.

Support for playlists is out of scope right now. I favor prepared queries (~ virtual/dynamic crates) instead. Prepared queries and their metadata can be stored as JSON in local files or external databases. Please also see the corresponding topic on Zulip: https://mixxx.zulipchat.com/#narrow/stream/109171-development/topic/aoide.20Music.20Library

PS: A recent DJ TechTools article was the initiator to continue working towards this long term goal again. https://djtechtools.com/2019/03/11/5-futuristic-dj-software-features-that-will-soon-be-commonplace/ "Share Libraries + Track Data Between Every Software"

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2019-04-15T21:08:15Z


Slightly Related: I implemented the "Export Track Files" feature in Mixxx (right click on a crate) as a way to get music files onto a USB for playing on something like a CDJ. I think it would be really cool to extend this feature to also include creation of a rekordbox library file and auto-transcoding of incompatible filetypes.

So I think the eventual goal of two-way syncing between the platforms would be really nice.

mixxxbot commented 2 years ago

Commented by: j.siler Date: 2019-04-19T13:48:52Z


@uklotzde Sorry to react so slowly, especially seeing how quickly you responded to me. I just started looking at your OpenAPI spec for aoide, and the other links you shared. Looks interesting, but at this point I haven't much of an idea what it is. Do you have a project summary somewhere that I can view?

I agree that Rekordbox's internal approach is simple and sensible. And there lies my frustration. It leaves them so close to a product that I can use that I can almost taste it. But they fall short on implementation. Three very simple features would vastly improve the product vastly for international and other music which uses real musicians to set the pace rather than an 808 drum machine.

1 -- Allow an individual beat marker to be moved. It is horribly frustrating to have spent a long time bet marking a track to find that an early and critical marker is a bit off, and that changing it will screw up the entire track forward of the change.

2 -- Permit editing a range of the track, locking the rest. Currently Rekordbox allows users to set a point at and beyond which modifications can be made, locking everything prior. This change would require the ability to designate an end point forward of the start point at and beyond which the beat grid is locked. (Strictly speaking 1, above is a special instance of this, but it really would help to be able to use a "shorthand" of this feature on a single marker.

3 -- Apply a different time signature and/or explicit beat (eg., 2 for the second beat of a 4/4 measure) at a given marker. This would propagate forward, stopping at the end mark of the edit region

All of these can be achieved by manually editing the rekordbox.xml file and then importing the collection from it. Rekordbox supports these edits, including respecting arbitrary time signatures other than 4/4. It is so frustrating to know that a relatively low effort level set of changes that are completely consistent with the Rekordbox architecture should be missing. Someone clearly envisioned them when specifying the xml format, and someone implemented the capabilities in the underlying engine.

A couple other potentially useful features would be:

1 -- The ability to tag a key change. At the risk of annoying the true DJs out there, this could help support auto-mixing. 2 -- Implementing named sections in the XML, as Rekordbox now does internally. Useful for both manual and auto-mixing. 3 -- The incorporation of lighting and other cue points in the XML.

These are the frustrations that lead me Mixxx. At least Mixxx gives the (possibly illusory) possibility that I can implement the features I want instead of pissing and moaning that no one else does.

Jim