Repository navigation
Hummed audio to quantized MIDI and piano-roll views, now working end to end. Rendering to guitar audio is not built.
| Tests | 68, passing on Python 3.11 with Basic Pitch 0.4.0 |
| Python | 3.9 to 3.11 (Basic Pitch pins TensorFlow below 2.16); the librosa pYIN model runs on any version |
| Commands | hum2midi, quantize-midi, visualize-midi, h2h-pipeline |
Changes since 0.1.0
From an independent code review (#1 to #5):
- Audio to MIDI (#1): Basic Pitch is called with a file path, as its API requires; its note events are kept as notes, so durations, rests and the final note survive; velocity comes from each note's own confidence; the librosa pYIN fallback is wired in.
- Quantization (#2): swing places offbeats instead of pushing them onto the next beat; the
octavesetting, which had no effect, is removed (old YAML files still load, with a warning); custom scale notes apply in every octave. - Visualization (#3): piano rolls read the file's tempo instead of assuming 120 BPM; chord symbols such as
GM7,Em7b5andBm9parse correctly; chord tones are shaded from each chord's own quality. - Dependencies (#4): six unused packages removed, including
python-rtmidi, which needed a C compiler and audio headers to install. - Commands (#5): the four console scripts exist and exit non-zero on failure; command-line options override the config file;
--swingis exposed.
From the release (#7):
- A note shorter than half a grid step no longer collapses to one tick; it lasts one grid step. On an 8-second hummed phrase, 7 of 15 quantized notes had collapsed.
- The README states what runs.
Behaviour change: visualize-midi --compare now takes the original file, as the usage guide always showed (quantized.mid --compare raw.mid).