Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kepabilbao67-bot/musicplayer2/llms.txt

Use this file to discover all available pages before exploring further.

NEON DJ includes a zero-setup recorder built directly into the browser — no plugins, no accounts, no server uploads. Every sound you hear while mixing is captured live: both decks, the crossfader, the FX pads, master flanger, and master echo all flow into a single stereo recording. When you’re done, clicking the same button stops the session and immediately downloads a WAV file to your computer.

The REC Button

The ● REC button sits in the master strip at the top right of the NEON DJ interface, alongside the AUTO MIX button and the master volume slider.
StateAppearanceLabel
IdleDark background, pink/red text● REC
RecordingAccent-color background, white text, pulsing recblink animation■ STOP
EncodingNeutral background⏳ …
Once recording starts, the button glows red and blinks continuously (1-second recblink keyframe animation: full opacity → 55% opacity) to give you a clear at-a-glance indicator that capture is in progress.

What Gets Captured

The recorder taps into the signal after masterLimiter — the very last node in the audio graph before the speakers. This means the recording captures your mix exactly as you hear it:

Both Decks

Audio from Deck A and Deck B, blended by the crossfader position at the moment each sample plays.

Master Effects

Master flanger and master echo wet signals, as routed through masterFlangerWet and masterEchoWet.

FX Pads

All synthesized sound effects triggered from the FX pad grid — reverb stabs, sweeps, drops, and more.

Limiter Processing

The masterLimiter DynamicsCompressor (ratio 20:1, threshold −3 dB) is in the signal path, so the recording is protected from digital clipping.
The master limiter (a DynamicsCompressor with a 20:1 ratio and −3 dB threshold) is always active in the signal chain. It prevents peaks from clipping your recording when multiple elements play simultaneously — the output you capture is the same protected signal your speakers receive.

How the Recorder Works

Under the hood, NEON DJ uses a ScriptProcessorNode (buffer size 4096, 2 input channels, 2 output channels) connected directly to finalNode() — the masterLimiter output. On every onaudioprocess event while recording is active, it copies the raw PCM data from the input buffer:
recProc.onaudioprocess = ev => {
  if (!recording) return;
  recL.push(new Float32Array(ev.inputBuffer.getChannelData(0))); // left channel
  recR.push(new Float32Array(ev.inputBuffer.getChannelData(1))); // right channel
};
Each 4096-sample chunk is saved as a Float32Array in two growing arrays (recL and recR) — one per stereo channel — kept entirely in memory until you stop the session. The ScriptProcessorNode is routed through a silent GainNode (gain = 0) into the AudioContext destination so the Web Audio graph stays active without doubling the output volume.

Recording Your Mix

1

Load Your Tracks

Load audio files onto Deck A and Deck B (or let the built-in drum machine run). Set your levels and get ready to mix.
2

Click ● REC

Press the ● REC button in the master strip. The button immediately switches to ■ STOP and begins pulsing red. Recording is now live — everything you hear is being captured.
3

Perform Your Mix

Move the crossfader, adjust EQs, trigger FX pads, and use the master effects freely. All of it is captured in real time.
4

Click ■ STOP to Download

When your mix is finished, click ■ STOP. The button briefly shows ⏳ … while the audio is encoded. NEON DJ first attempts to export as an MP3 (loading the lamejs encoder from a CDN); if that fails — for example, if you are offline — it automatically falls back to WAV. The file downloads immediately to your default downloads folder.
Do not close or refresh the page while recording. All captured audio is stored in browser memory (recL and recR arrays). If the tab is closed, navigated away from, or the page is reloaded before you click ■ STOP, your entire recording will be lost with no way to recover it.

Pause and Resume

There is no pause or resume function. Clicking ■ STOP ends the recording session completely — the PCM buffers are flushed and the file is encoded for download. If you want to record a second take, click ● REC again to start a fresh session; the previous recL/recR arrays are cleared automatically.

File Naming

Downloaded files are named with a timestamp suffix, for example:
mi-mezcla-1718123456789.mp3   (when online and lamejs loads)
mi-mezcla-1718123456789.wav   (fallback when offline)
The timestamp is Date.now() at the moment you stop recording, making every file name unique.

Build docs developers (and LLMs) love