8 releases
0.2.5 | Aug 12, 2022 |
---|---|
0.2.4 | Oct 21, 2021 |
0.2.2 | Sep 10, 2020 |
0.1.2 | Aug 19, 2020 |
#104 in Multimedia
50KB
1K
SLoC
Saxophone Fingering Chart Generator
This program takes a MIDI file as input and generates fingering charts for saxophones matching the notes in that midi file. Time, note length, and other musical elements are not preserved, this is just a way to learn the fingering for each note. That said, this may expand and become fancier down the road.
Fingerings are decided by a simple weighted algorithm that picks fingerings for a note based the keys involved in the previous note. There's probably a smarter way to do this, I'm open to ideas.
Usage
- fingering_chart [midi_file...]
Just open a midi file with fingering_chart
, and wait for charts to generate! You can also run it via the command-line by specifying one or more midi files as shown above. Make sure the cfg.ron
file is in the same directory as fingering_chart
. See below for additional settings.
cfg.ron
cfg.ron is the configuration file:
transposition_type
Sets the transposition. May useAlto
,Tenor
,Baritone
,Soprano
,Bass
,CMelody
,Contrabass
,Sopranino
,Subcontrabass
, andSopranissimo
.output_path
Sets the output path. If this is a non-existent directory, will attempt to create.output_format
Sets the output format. May useTracks
,Rows
, orSeparate
.Tracks
outputs charts for each midi track as a single file.Rows
splits tracks up into multiple files each containing a horizontal row of notes.Separate
outputs each individual note as a separate file.spacing
Sets the visual spacing between consecutive notes. Not applicable when usingSeparate
output format.notes_per_row
Sets the number of notes per row. Not applicable when usingSeparate
output format.notes
You can now fully customize what notes are supported and what fingerings each note will use. Detailed instructions exist inside the cfg.ron file.
Planned Features
- Fingerings for altissimo/trill
- Detect if a midi file has notes out of range, have an option to automatically attempt to transpose the midi file to fit in the sax range (by octave first, then by semitone). Currently notes out of range are just left out with a warning.
Example
Dependencies
~7MB
~107K SLoC