Free macOS App to Convert Mixed in Key Cues to djay

I’ve built a free macOS app called CuePorter that solves a huge pain in the butt: getting Mixed in Key hot cues to actually show up in djay.

CuePorter converts Mixed in Key cue points into proper Serato Markers2 tags that djay and Serato DJ can read natively. Just select your music folder and it’ll batch-process everything.

Features

  • :white_check_mark: Batch conversion – Process entire folders (and subfolders) in one go
  • :white_check_mark: Two color modes:
    • Default djay colors – Maps cues 1–8 to djay’s default pad colors (red, orange, blue, yellow-orange, green, magenta, cyan, purple)
    • Energy-based colors – Uses Mixed in Key’s “Energy” ratings to create a cool→hot gradient (blues/greens for low energy, oranges/reds for high)
  • :white_check_mark: Preserves original cue names – If your Mixed in Key cues have custom labels, they’ll carry over (generic “Energy #” labels get renamed to “CUE #” in djay mode)
  • :white_check_mark: Progress tracking – Live activity log shows which files were updated and which were skipped, and why
  • :white_check_mark: Supports FLAC, MP3, AIFF

What It Doesn’t Do

  • :cross_mark: No automatic grid/beatgrid conversion – Only hot cues are converted
  • :cross_mark: No file management – It modifies metadata tags in-place; it doesn’t move or rename files

How to Use

  1. Download CuePorter.zip (link below)
  2. Unzip and move CuePorter.app to your Applications folder (or anywhere you like)
  3. Open the app:
    • First time: Right-click → Open to bypass Gatekeeper (the app isn’t code-signed since I don’t have an Apple Developer account)
    • After that you can just double-click it normally
    • If that fails, you can go to:
      • System Settings → Privacy & Security → Security,
        and click Open Anyway next to the “CuePorter” warning.
  4. Select your music folder and choose a color mode
  5. Click “Start Conversion” – The app will scan for audio files with Mixed in Key tags and convert them

:warning: Important: Back Up Your Music First

This app modifies your audio file metadata. While it doesn’t touch the actual audio data, I strongly recommend backing up your music library before running it (or test on a small folder first).

If djay is currently running when you convert files, you’ll need to quit and reopen djay for it to pick up the new cue points.

Technical Details

  • Supported formats: MP3, FLAC, AIFF (the formats where Serato Markers2 tags work reliably)
  • Requirements: macOS (tested on Apple Silicon, should work on Intel too)
  • Dependencies: Python 3.13 + mutagen + serato-tools (all bundled in the app)

Download

https://files.catbox.moe/pplej8.zip

Source Code


FAQ

Q: Will this work with Serato DJ?
A: Yes! The converted tags are native Serato Markers2, so they’ll show up in Serato DJ as well.

Q: What happens to files that don’t have Mixed in Key tags?
A: They’re skipped (no changes made).

Q: Can I undo the conversion?
A: Not automatically. The app overwrites the Serato Markers2 tag. If you have a backup, you can restore the originals. Otherwise you’d need to re-analyze in Mixed in Key.

Q: Why does macOS say the app is from an “unidentified developer”?
A: I don’t have an Apple Developer ID to code-sign the app. You can bypass this by right-clicking the app and choosing Open the first time (or go to System Settings → Privacy & Security → click “Open Anyway”).

Q: Does this work on Windows?
A: Not yet (this is macOS-only for now). If there’s demand I could build a Windows version.


If CuePorter saved you hours upon hours of tedious clicks, you can support development on
Ko‑fi

Hope this helps streamline your workflow! Let me know if you run into any issues or have feature requests.

4 Likes

Great app!

I owned MIK way back in 2020/2021, when I was just starting out to learn dj’ing and my library of several 1000 tracks lacked cue points. I actual had no idea how to setup my cue points at the time, so when I head of MIK 8 cue points based on energy changes I got pulled in.

What I remember at the time was:

  1. MIK cue points transfered automatically to serato (no conversion or secondary app required)
  2. Rekordbox required a conversion ( I had to buy and use DJCU from ATGR)
  3. Djay inherits serato cues by default (as long as the particular tracks do not have a native djay cue on them).

Thanks for the support!

Yes, that mechanism was the breakthrough I needed. The goal was to get cue points from Mixed In Key directly into djay without the slow, manual process of loading every track into Serato first.

So, I managed to solve this by reverse-engineering what Serato does to the metadata. I wrote a script that transmutes the MIK-generated CUEPOINTS (JSON) directly into the SERATO_MARKERS_V2 (Binary) tag that djay recognizes.


Also, big thanks for pointing out that djay prioritizes its own native cues over the imported tags. I’ll see if I can add an option to overwrite existing djay metadata.

EDIT: Unfortunately, there is no easy way to achieve this automatically. djay stores cue points in a complex internal database (using YapDatabase on top of SQLite) that is entirely separate from the audio files.

Even though CuePorter successfully updates the tags within the audio files themselves, djay will continue to prioritize its own cached version from the database until it is forced to re-read the file. Modifying djay’s internal database risks corrupting the library, and most certainly violates software terms of use.

So, unless Algoriddim adds a “Reload Tags” feature, I’m not sure there’s a fix for this.

1 Like

Hi @Janvier, welcome to the Community! Thanks for sharing - this looks great for MIK users.

Updated app to v1.0.4 (bugfixes)
https://files.catbox.moe/0iefd2.zip

Is it only valid for Serato? Isn’t it valid for Rekordbox? I don’t use Serato, and although I have already migrated my library in djay from scratch, I wouldn’t mind trying to see if it would work with RB. Thank you.

@Janvier Thanks for making and open sourcing this. I just purchased Mixed in Key a few days ago and been banging my head over getting MIK’s cuepoints imported into djay. Any idea why djay won’t read/import the SERATO_MARKERS_V2 tag that MIK creates? If I overwrite it with your script, it works.

@Albert_Maro Yes, it 100% works with Rekordbox, I just tested on v2.7.2 and the cue points showed up. Let me know if you run into any issues.

@RustyNova9 I’m thrilled and pumped to hear the app has helped you! As for your question, MIK generates CUEPOINTS (JSON), CuePorter converts them into SERATO_MARKERS_V2 (Binary).

v1.0.5 available here

1 Like