A Commodore 64 player that reads a MIDI file from disk and plays it on the SID chip.
MIDI and the C64 never really met, even though they are more or less from the same era. There are interfaces and cartridges that let a C64 send MIDI data to external synths, but a direct MIDI file player on C64 is uncommon. MIDI PLAYER 64 is built to close that gap.
- Supports MIDI Type 0 and Type 1.
- Implemented events: Note On, Note Off, Meta Tempo (
FF 51). - Playback on 3 SID voices with automatic note allocation.
- Disk MIDI filename: primary fallback is
MIDI.
src/main.cC source for the player.artifacts/player.prgprecompiled standalone player included in the repository.scripts/build.shbuild + D64 creation + MIDI selection menu.scripts/c64diskalternative utility to create a D64 usingc1541.c64buildquick command (wrapper forscripts/build.sh).c64diskquick command (wrapper forscripts/c64disk).
- Oscar64 in your
PATH(oscar64). - Optional:
c1541(VICE), if you want to usec64disk.
The repository includes a tracked prebuilt PRG at artifacts/player.prg.
./c64disk uses build/player.prg if available, otherwise it automatically falls back to artifacts/player.prg.
This lets you test disk creation with c64disk even before running a local compile.
Important: player.prg contains only the player code, not MIDI song data.
At runtime it reads MIDI from device 8.
It first tries fixed names (MIDI, MJ, SONG) and then automatically scans
the disk directory for PRG/SEQ candidates.
Put one or more .mid / .midi files in the project root, then run:
./c64buildThe script shows a menu (1, 2, 3, ...) and creates:
build/player.prgbuild/midi-player-64.d64build/midi-player-64_fresh_YYYYMMDD_HHMMSS.d64
Useful commands:
./c64build --list
./c64build 2
./c64build file_name.midFile -> Attach disk image -> Drive 8and selectbuild/midi-player-64.d64.- On C64:
LOAD"*",8,1
RUN- Run
LOAD"$",8thenLIST: you should see at leastPLAYERandMIDI. - If
LISTis empty, the wrong disk image or drive is attached in VICE. - If you only hear an initial click, check SID volume and VICE audio settings.
- Press
STOPduring playback to interrupt.
- MIDI files are not versioned: this repository only contains source and scripts.
- Build always copies the selected MIDI into the disk image as C64 filename
MIDI. ./c64buildalso refreshesartifacts/player.prgfrom the latest compiled player.
BSD 3-Clause. See LICENSE.
