Skip to content

dnikiel/mpc-stems

Repository files navigation

MPC-STEMS

Extract per‑track stems (WAV) from Akai MPC XPJ project files.

Gemini_Generated_Image_np03r7np03r7np03 (1)
node mpc-stems/cli.js ./MyProject.xpj
              ↓
      stems-MyProject/
        ├── kick.wav
        ├── snare.wav
        ├── hat.wav
        └── ...

How it works

Reads an .xpj project file (gzip‑compressed JSON with an ACVS header), parses the sequence data and instrument assignments, loads the matching WAV files from the _[ProjectData] folder, and renders each track with note events to a separate 24‑bit stereo WAV.

All processing is local — zero network requests.

Usage

mpc-stems <xpj-file> [options]

Arguments

Argument Description
<xpj-file> Path to the .xpj project file

Options

Option Description
--out <dir> Output directory (default: stems-<project-name> next to the XPJ)
--data <dir> Explicit path to the _[ProjectData] folder
--bpm <number> Override project BPM
--help, -h Show help

Examples

# Basic — auto-detect _[ProjectData], output to ./stems-MyProject/
node mpc-stems/cli.js ~/Desktop/MyProject.xpj

# Custom output directory
node mpc-stems/cli.js ~/Desktop/MyProject.xpj --out ~/Desktop/stems

# Explicit data folder
node mpc-stems/cli.js ~/Desktop/MyProject.xpj --data ~/Desktop/MyProject_[ProjectData]

What it renders

Render feature Status
Per‑track stem WAV files
Volume per pad
Pan (equal‑power)
Pitch tuning (coarse + fine)
One‑shot samples (full duration)
16 Levels per‑note pitch variation (modifierActiveState0 + Tuning (coarse/fine))
Song mode (sequenced arrangement with repeats)
Note velocity

Not yet supported

  • Amp envelopes (attack/decay/release)
  • Filters (lowpass/highpass)
  • Mute groups / choke
  • Slice/chop regions
  • Export to MP3

File format notes

XPJ

An .xpj file is gzip‑compressed JSON with a 5‑line ASCII header:

ACVS
<version>
SerialisableProjectData
json
<platform>
<JSON payload>

The JSON contains data.tracks[] with drum/keygroup programs, data.sequences[] with note events, and data.songs[] for song‑mode arrangement.

Project data folder

The _[ProjectData] folder sits alongside the .xpj file and contains the WAV/AIFF samples referenced by the project.

Dependencies

Only commander for CLI argument parsing. Audio processing uses Node.js built‑ins (zlib, fs, path).

License

MIT

About

Extract per-track stems from Akai MPC XPJ projects

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors