diff --git a/CHANGELOG.md b/CHANGELOG.md index 8397ede..ee63fdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,27 @@ All notable changes to PyTheory are documented here. +## 0.35.0 + +- **8.5x faster import** — dropped pytuning/sympy, lazy-load scipy. + `import pytheory` now takes ~50ms instead of ~480ms (#44) +- **Proper shruti JI ratios** — 22 positions with 5-limit just intonation + (pure 3/2 fifths, 5/4 thirds), not 22-TET approximation +- **Arabic maqam JI ratios** — Zalzalian 11-limit ratios. + Mi↓ (the Rast third) is exactly 27/22 from Do +- **B#/Cb octave boundary fix** — B#4 = C5, Cb4 = B3 (#45) +- **Int tone names** — `Tone(0, system=TET(22))` works alongside strings. + Wrapping: `Tone(22)` → tone 0, octave+1. `System.tone()` convenience. +- **Timpani synth** — inharmonic membrane modes, felt mallet, copper kettle + resonance, cathedral reverb +- **Saxophone synth** — conical bore, reed buzz, brass body warmth. + 4 presets: saxophone, alto_sax, tenor_sax, bari_sax +- **Part.roll()** — rapid repeated notes with velocity ramp for crescendo/ + decrescendo rolls on any instrument +- **Vibrato tuning** — all instruments reduced to 0.001 depth for cleaner + ensemble sound +- 29 synth waveforms, 838 tests + ## 0.34.0 - **16 dedicated instrument synths** — physical modeling and specialized diff --git a/docs/index.rst b/docs/index.rst index e508c64..8002d2e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -77,7 +77,7 @@ What's Inside numbers), scale recommendation, modulation, voice leading - **Sequencing** — Score, Parts, arpeggiator, legato/glide, velocity, swing, humanize, tempo changes, song sections with repeat -- **Synthesis** — 27 waveforms (including Karplus-Strong pluck, Hammond organ, +- **Synthesis** — 29 waveforms (including Karplus-Strong pluck, Hammond organ, bowed string, and 14 dedicated instrument synths), 10 envelopes, 40+ instrument presets, configurable FM, sub-oscillator, noise layer, filter envelope, velocity-to-brightness, analog oscillator drift, detune, stereo diff --git a/pyproject.toml b/pyproject.toml index e5c87d5..75c7145 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pytheory" -version = "0.34.1" +version = "0.35.0" description = "Music Theory for Humans" readme = "README.md" license = "MIT" diff --git a/pytheory/__init__.py b/pytheory/__init__.py index 8d737e6..df0726c 100644 --- a/pytheory/__init__.py +++ b/pytheory/__init__.py @@ -1,6 +1,6 @@ """PyTheory: Music Theory for Humans.""" -__version__ = "0.34.1" +__version__ = "0.35.0" from .tones import Tone, Interval from .systems import System, SYSTEMS, TET diff --git a/uv.lock b/uv.lock index 562b39f..c5284ba 100644 --- a/uv.lock +++ b/uv.lock @@ -698,7 +698,7 @@ wheels = [ [[package]] name = "pytheory" -version = "0.34.1" +version = "0.35.0" source = { editable = "." } dependencies = [ { name = "numeral" },