スケールするマリオの曲つくった
スケールといってもインターネットっぽいのではなくて長調とか短調とかのほう。
最近SuperColliderに興味が出てきて、音楽プログラムを書くのにどんなクラスとかメソッドがあると良いのかとかインターフェイスとかを見ている。ついでにJavaScriptでも似た感じで書けるようにしているのだけど、そのついでに作った。
琴の調律とかだとちょっと忍者のゲームみたいになって良いと思う。
やっている事は単純でMMLから音番号を読み込んで、原曲のスケールを適用した後で、別のスケールを適用して音番号を変換している。
SuperCollider でいうと MML から key を計算した後、 原曲scale.performKeyToDegree で degree に変換した後、変換先scale.performDegreeToFreq で周波数を計算している。
ただし、performDegreeToFreq の degree は小数点以下を無視するので若干工夫しないといけない。