Converts MIDI files into music box scores that are ready to print.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.3 KiB

# MusicBoxConverter
> Converts MIDI files into music box scores that are ready to print.
1 year ago
## System Requirements
- Linux:
- [Mono](https://www.mono-project.com/download/stable/) (`dotnet` might work but is untested)
- Windows:
- Visual Studio (the free version is fine - it's just the developer command prompt you need)
- All operating systems:
- [Git](https://git-scm.com/downloads) (`sudo apt install git` on apt-based systems)
- For printing:
- [Inkscape](https://inkscape.org/)
- [ImageMagick](https://imagemagick.org/) (`sudo apt install imagemagick` on apt-based systems)
- [pdfposter](https://pdfposter.readthedocs.io/en/stable/Installation.html) (`sudo apt install pdfposter` on apt-based systems)
## Getting Started
This program is written in C♯. To get started, first clone this repository and compile it:
```bash
git clone https://git.starbeamrainbowlabs.com/sbrl/MusicBoxConverter.git
cd MusicBoxConverter
msbuild
```
1 year ago
This should work regardless of whether you're on Linux or Windows.
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 and hit the build button.
1 year ago
Once the build is complete, the binary (and associated libraries) can be found in `MusicBoxConverter/bin/Debug` (or `MusicBoxConverter/bin/Release` if you did a release build).
If you're having trouble building it, please [get in touch](https://starbeamrainbowlabs.com/) and I'll send you a build.
## Usage
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.
1 year ago
This somewhat convoluted process prevents anyone from automatically rescaling it along the way, and thus misaligning the green lines in the SVG file generated by the program.
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:
```bash
# Convert MIDI -> SVG
./MusicBoxConverter.exe --input song.midi --output score.svg
1 year ago
# Convert SVG → PNG
inkscape -o score.png score.svg
# Convert the PNG to PDF, rotating by 90 degrees (for portrait printing)
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:
```bash
convert score.svg score.pdf
pdfposter -s1 score.pdf print.pdf
```
1 year ago
## Useful Links
- [ffmpeg - showspectrumpic manual](https://ffmpeg.org/ffmpeg-filters.html#showspectrumpic)
- [Frequency to Musical Note Converter](https://newt.phys.unsw.edu.au/music/note/)
2 years ago
1 year ago
2 years ago
## License
This project is released under the Mozilla Public License 2.0. The full license text is included in the `LICENSE` file in this repository. Tldr legal have a [great summary](https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2)) of the license if you're interested.