Skip to content

About

Free, browser-based Standard MIDI → Polyend Tracker+ converter

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

MidiTracker

Free, browser-based Standard MIDI → Polyend Tracker+ converter. Import .mid / .midi, preview and edit patterns on the grid, validate exports with @polyend/tracker-lib, and download a full Tracker+ project ZIP — no server, no account, data stays in your browser.

Live demo License: MIT Tests

Open live demo →

Community tool — not affiliated with or endorsed by Polyend.

Contents

At a glance

MidiTracker — transport, menu, and pattern grid with sample song loaded

App shell — Load · Edit · Export with built-in sample pattern

Tracker musicians often rebuild MIDI parts by hand in the grid. MidiTracker follows one Load → Edit → Export workflow in the browser: convert, tweak, validate, download.

Who it's for

  • Tracker+ owners — turn game rips, DAW exports, or legacy .mid into .mtp patterns and project.mt
  • Chiptune / retro composers — quantize to 4 rows per beat, map CC and program changes to FX slots
  • Offline or air-gapped use — run locally; nothing leaves the machine unless you save a file

Privacy

  • No backend — MIDI bytes and patterns never leave the browser unless you export
  • Source MIDI preserved — re-download the original file from MIDI → Source after import
  • Local dev — npm run dev serves the app on your machine only

Workflow

Step Purpose
Load Drop or browse .mid / .midi, try Sample, or enter notes on a blank grid
Edit Grid keyboard entry, undo/redo, song order, BPM, pattern length, GM SoundFont preview
Export Tracker+ project ZIP, individual .mtp files, MIDI reference for hardware A/B

Blank grid onboarding    Session import report

Blank start · Session import report after MIDI conversion

Highlights

  • 8-track mapping — busiest MIDI channels → Tracker tracks; instrument slots 49–64 (hardware 48–63)
  • Tempo map — T FX on track 1, pattern splits at BPM changes
  • MIDI FX — CC and program changes mapped to Tracker FX columns (a–f)
  • GM preview — FluidR3_GM SoundFont audition in-browser (export remains authoritative for hardware)
  • Export validation — tracker-lib round-trip on patterns, project.mt, and metadata before download
  • MIDI reference export — grid-as-MIDI for A/B against the Tracker+ hardware
  • Keyboard grid — Z–M note entry, undo/redo, ? for help

Quick start

Try the demo: david9up.github.io/miditracker → Sample for a demo pattern

Run locally:

git clone https://github.com/david9up/miditracker.git
cd miditracker
npm install
npm run dev

Open http://127.0.0.1:5310

npm run test:all        # unit + smoke + expert (402 tests)
npm run test:expert     # senior MIDI developer review suite only
npm run build           # production build → dist/
npm run build:pages     # GitHub Pages build (base /miditracker/)
npm run preview         # serve dist/ on port 5310
npm run release         # test:all + build
npm run screenshots     # refresh docs/screenshots/ (see docs/screenshots/README.md)
npm run validate:export -- <path>   # validate saved .mtp, .mt, or export ZIP

Deploy: DEPLOY.md · Releases: CHANGELOG.md

Screenshots

Images in docs/screenshots/ are generated by Playwright, not hand-cropped:

npm run screenshots

Commit refreshed PNGs when the UI changes. See docs/screenshots/README.md for the file map.

Pattern grid close-up

Export validation panel

Core library

src/lib/ is split into three areas:

  • midi/ — MIDI import, tempo map, FX mapping, pattern splitting
  • export/ — Tracker+ export, validation, save dialogs, tracker-lib I/O
  • root — shared types, grid editing, playback, song session
import { importMidiBuffer, exportProjectZip } from './src/lib'

const buffer = await file.arrayBuffer()
const { song, report } = importMidiBuffer(buffer)
await exportProjectZip(song)

References

Contact

David Malcher — dmalcher@fortinet.com

Bug reports and feature ideas: GitHub Issues

MIT — LICENSE

About

Free, browser-based Standard MIDI → Polyend Tracker+ converter

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages