Track prep for AI-generated music

Suno finishes the song. Crate finishes the file.

Suno hands you a loose export: quiet, untagged, four seconds of silence on the front. Drop it in here and get back a trimmed, level-matched, fully tagged track with tempo and key already written in — ready to drag straight into your crate.

See the steps
Straight from Suno
−15.2 LUFS4.2 s dead airArtist: unknownNo tempo
Crate-ready
−9.0 LUFSTrimmed + fadedTagged124.0 BPM · 8A
Low Mid High Beat grid Cue point

The actual problem

Twelve Suno tracks turn a library into a junk drawer

Every export lands with a generated filename, no artist, no tempo and a different loudness to the one before it. You find out mid-set, when the next track drops 6 dB.

BeforeDownloads folder
suno_2f8a91c3-4b7e.mp3Unknown artist
— BPM
suno_9d0c41ae-1f52.mp3Unknown artist
— BPM
suno_7b33e0f9-8a14 (1).mp3Unknown artist
— BPM
suno_c15a77d2-3e60.mp3Unknown artist
— BPM
AfterSerato crate
Midnight AisleKay2 · Deep house
124.0
8A
Paper LanternsKay2 · Deep house
122.0
9A
Second DanceKay2 · Nu disco
118.0
8B
Last OrdersKay2 · Nu disco
120.0
5A

Six passes, in order

What happens to the file

Nothing here guesses. Each pass is a measurement or an edit with a defined output, and your original file is never touched.

01

Decode

Reads the MP3 or WAV Suno gave you and works on a copy. The source file stays exactly where it was.

02

Trim and fade

Cuts the silence off both ends at a −50 dB threshold, then puts a 10 ms fade on each edge so the deck doesn't click when you cue it.

03

Match the level

Measures integrated loudness and normalises every track to the same target, with true peak held at −1 dBTP. No more reaching for the trim knob between tracks.

04

Find tempo and key

Detects BPM and musical key, and reports how confident it is. AI-generated tracks drift more than commercial ones, so a low confidence score is a flag to check the grid by hand.

05

Write the tags

Artist, title, album, genre, year, artwork, BPM and key go into the fields Serato actually reads — so the library columns fill themselves in.

06

Export

24-bit WAV for the archive or 320 kbps MP3 for the gig bag, named Artist - Title so the crate sorts properly.

07

Cue points

Serato stores cues and beat grids in its own tag block. Writing them from outside the app is possible but fiddly — this one comes after the rest is solid.


Preview

Try the flow

This is a front-end prototype — the timings and readouts below are staged, so you can see the shape of the thing before any audio code gets written.

music.kay2.dev

Drop a Suno export here

MP3 or WAV — or click to pick a file

Nothing is uploaded · runs on your machine
Processingsuno_2f8a91c3-4b7e.mp3

    Ready for the crate

    Tempo124.0
    Key8A
    Loudness−9.0
    Trimmed4.2s
    OutputWAV

    Saved as Kay2 - Midnight Aisle.wav


    Build notes

    How to actually make it work

    Written for whoever picks this up next.

    01 · Start here

    This doesn't need a model

    Trimming, loudness, tempo, key and tags are all deterministic signal processing. Pointing an AI model at the job is why the first attempt fell over — there's nothing for it to infer.

    Everything on this page is a library call.

    02 · Where it runs

    In the browser, not on a Worker

    Workers can't run native binaries and cap CPU time, so audio decoding will time out. ffmpeg.wasm in the browser does the same work on the visitor's machine — files never upload, hosting stays static, and there's nothing to pay for.

    03 · The libraries

    Four dependencies

    ffmpeg.wasm for trim, fade, loudnorm and export. essentia.js for tempo and key. browser-id3-writer for the tags. Vanilla JS for the rest.

    04 · If it must be server-side

    Containers, not Workers

    Batch uploads or very long files are the case for moving off the client. Cloudflare Containers will run real ffmpeg; pair it with R2 for the in and out buckets and keep the Worker as the router only.

    05 · The hard bit

    Serato's own tag block

    Cue points and beat grids live in custom GEOB frames that Serato writes itself. The format has been documented by the community but it isn't official — treat it as version 2 and ship the rest first.

    06 · Worth knowing

    Stems are already available

    A Suno Pro plan exports up to 12 time-aligned stems. If this tool ever grows a second mode, accepting a stem folder and building a DJ edit from it is the obvious direction.