Back to Silas S. Brown's home page
MIDI Beeper (and RISC OS Maestro / BBC Micro converter)
is a Python program to play MIDI
files on Linux/BSD by beeping through the computer's beeper instead of using proper sound
circuits. If you try to play chords or polyphony, it will rapidly switch
between alternate notes like an old office telephone. It sounds awful, but
it might be useful when you really have to play a MIDI file but have no
sound device attached. It should work on any machine that has the "beep"
command (install "beep" package from your Linux/Unix package manager). It
has been tested on a PC speaker and on an NSLU2's internal speaker.
On the NSLU2, playing music with beep works in Debian etch
but not so well in Debian Lenny; you can
try compiling this modified beep.c
instead (remember the chmod 4755 mentioned in the man page).
RISC OS Maestro
If you need to know what a MIDI file sounds like while using a "vanilla" RISC OS
machine, edit midi-beeper
and set riscos_Maestro
to turn it into a converter from MIDI files to Acorn Maestro files. Rather than rapidly switching between notes, this uses true polyphony of up to 8 channels, although Maestro can struggle with rhythm when playing more than 4 channels. The music may not look
good in Maestro (which is not a good program for typesetting anyway), but at least it plays.
Alternatively you can use a BBC Micro emulator (or a real BBC Micro if you still have one from the 1980s) and set MIDI beeper to generate BBC Micro code. This uses 3-channel polyphony and can multiplex up to 9 via envelope arpeggiation (3 on the Electron). The tuning can be a bit 'wobbly'.
MIDI beeper can also generate polyphonic square waves itself and feed them to aplay, which might be useful if you need a small MIDI player on a Raspberry Pi running Linux, although too many sound channels can slow this down as it's only a Python script.
All material © Silas S. Brown unless otherwise stated.