Converts MIDI files into music box scores that are ready to print.
Go to file
Starbeamrainbowlabs e9f5f73668
Add text next to each hole
2020-04-25 01:15:44 +01:00
MusicBoxConverter Add text next to each hole 2020-04-25 01:15:44 +01:00
.gitignore Ignore ghostwriter backup files 2019-02-21 23:12:55 +00:00
MusicBoxConverter.sln Initial commit. Let's see where this leads! 2017-11-30 22:45:39 +00:00
MusicBoxNotes.txt Add actual notes that our music box plays 2017-12-02 14:41:03 +00:00 Add extra crosses & arrows as guides 2020-04-25 00:41:03 +01:00


Converts MIDI files into music box scores that are ready to print.

Getting Started

This program is written in C♯. To get started, first clone this repository and compile it:

git clone
cd MusicBoxConverter

If you're on Windows, you'll either need to use a Visual Studio Developer Command Prompt or open the solution file in Visual Studio itself.

Alternatively, you can


  1. Export the MuseScore file to a MIDI file
  2. Run the MIDI file through this program.
  3. Open the resulting SVG in Inkscape
  4. Print the SVG to PDF (or inkscape --export-pdf output.pdf input.svg)
  5. Open the resulting PDF in LibreOffice Draw
  6. Print to your actual printer - tiling over multiple pages if required.

This somewhat convoluted process prevents anyone from automatically rescaling it along the way.

If the above doesn't work, it's probably LibreOffice Draw scaling it even though you've told it not to. In that case, try this:

# Convert MIDI -> SVG
./MusicBoxConverter.exe --input song.midi --output score.svg
# Convert it to png
inkscape -e score.png score.svg
# Convert the PNG to PDF, rotating by 90 degrees
convert score.png -rotate 90 score.pdf
# Split the PDF up into multiple pages for the printer
# -s1	Don't scale the output
# -m	Sets the output paper size. Defaults to A4 (21x29.7cm) if unspecified, but may need to reduce by a cm or 2 on each side (as below) if things get cut off.
pdfposter -s1 -m 20x27.7cm score.pdf print.pdf

....if that cuts things off at the edges, try doing it like this:

convert score.svg score.pdf
pdfposter -s1 score.pdf print.pdf