music21の実用例を兼ねて、先月GIGAZINE(出典:Medium)に掲載された以下の記事に触発されて書いたものです。。
https://gigazine.net/news/20180313-coltrane-pitch-diagrams/
https://medium.com/@lucas_gonze/coltrane-pitch-diagrams-e25b7d9f5093
確かにウチにあるYusef本を見てみると上で言及されている記号が…
それより表紙の三本足クリーチャーの正体の方が気になる…
Repository of Scales and Melodic Patterns
上でSlonimskyとYusef二つの書籍について書かれているが、今回取り上げるのがそのうちの一つ。
現代音楽・ジャズ界隈のネタ本で有名ないわゆるSlonimsky本。1947年の著作らしい。
Thesaurus of Scales and Melodic Patterns
この本を初めて知ったのは随分昔1990年代、Jazz LifeのHerbie Hancockのインタビューだったか。
インターネットやAmazonなど使えない当時の洋書事情は悲惨で、入手できたとしても$1=\360固定相場かと思うほどぼったくり価格。
この本も取り寄せると\10000近くの値段だったのでとても手が出なかったが、その後観光でボストンに行ったときに立ち寄ったバークリー音楽大学の書店で適正価格で買うことが出来た。
その後ペーパーバック版で更に安くなった。
この本の骨子は要は12半音を順列組み合わせを駆使して生成した膨大な数の音階やパターンをもれなく羅列したもので、そのほとんどはたぶん一生使うことはないかと思う。
200ページ以上の分厚い本だが、多分にアルゴリズミックな内容なので、おそらくアルゴリズムだけ記述すれば10ページ以内に収まるような気もする。
ということで折角なのでpythonとmusic21を使って本書冒頭100ページほどを占めている"Equal Division of N octave into M parts"のアルゴリズムをmusic21の活用事例にもなるかと思って一部だけインプリしてみた。
https://github.com/delphinus1024/slominsky_generator
本書の用語で言うとInterpolation,Ultrapolation,Infrapolation(もしくはその組み合わせ)のうち今回インプリしたのはInterpolationのみ。
使用例として
python slonim_gen.py 2 3 3 64
上の例を説明すると、midinote64=E4 を起点とした2 octaveに含まれる2*12=24個の半音階を3等分して、それぞれの部分の追加の構成音(3-1)=2個(共通のインターバル)の組み合わせの可能性をすべて網羅した譜面が生成される。
Slonimsky本では既存の音階(Major scale,3種のMinor scale)に一致するものは意図的に割愛されているが、このプログラムではそのままにしている。