mirror of
https://github.com/kuhyx/utils.git
synced 2026-11-11 12:27:47 +01:00
New subproject porting Luke Haas's "Music Theory for Programmers" section by section into typed Python: pitch (MIDI <-> Hz), tuning (harmonic series, the Pythagorean comma, brute-forced "why twelve"), scales as step arrays with modes as rotations, chords stacked in thirds with Roman numerals and the V7 -> I resolution, named progressions, a numpy synth (waveforms, ADSR, low-pass), a bar-exact sequencer, and a seeded Recipe -> WAV composer. `degrade` is the same piece ruined by a 0..1 amount, so an ending can be the opening destroyed on the same seed; filtering runs LAST because filtering first measured brighter than the clean render. 17 demos (`python -m music_theory demo all`) each print the article's numbers -- the comma is 1.013643, the tempered fifth is 0.113 % flat, twelve is the first acceptable division -- and the FFT of the render, so the claims are tested rather than asserted. 157 tests, 100 % branch coverage, ruff ALL, mypy strict, pylint 10. Consumed next by roadside-assistance for its three world-state beds. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VC17zymxkeiUcHrMvt8W5W
12 lines
310 B
Plaintext
12 lines
310 B
Plaintext
# Exact pins, enforced by the shared dependency-freshness gate: a `>=`
|
|
# floor is satisfied by anything newer, so it tells a checker nothing
|
|
# about whether this repo is actually current.
|
|
bandit[toml]==1.9.4
|
|
mypy==2.3.1
|
|
numpy==2.5.3
|
|
pre-commit==4.6.2
|
|
pylint==4.0.8
|
|
pytest==9.1.1
|
|
pytest-cov==7.1.0
|
|
ruff==0.16.7
|