Guitar Scalerと
MML&MIDI

自作楽器製作勉強会
2007/11/25 cloned

飛び入りですみません

くじらさんに何か発表できませんか?と言われて
あわてて資料を作りました
自己紹介とGuitar Scalerについて
簡単にお話します

自己紹介 その1

id:cloned
はてなでブログ書いてます
http://d.hatena.ne.jp/cloned/
仕事はWebのプログラマをやってます

自己紹介 その2

初めて触ったシーケンサ
Singer Song Writer for Windows 95
楽譜が演奏されることに感動

自己紹介 その3

中学/高校はひたすら打ち込み
QS300
ステップ入力 ステップ入力
QS300と共に過ごした青春時代

Guitar Scalerについて

ギタースケールを表示するツール
Guitar Scaler

Guitar Scalerの特徴

Webで閲覧可能
7弦ギター対応
27フレット対応
変則チューニング対応
ニッチなご要望にお応えします

Guitar ScalerとMML&MIDIの関係

表示したギタースケールを再生するのに利用

処理概要

JavaScriptでMMLを作成
  -> AjaxでMMLをサーバーにPOST
    -> mml2midでMMLからMIDIにコンパイル
  <- MIDIファイル名をJSONでレスポンス
<- QuickTimeにMIDIファイル名を設定
  -> QuickTimeがMIDIを読み込んで再生

MMLの作成

全てJavaScriptで実装
JavaScriptでMIDIが作れると良かったけれど
JavaScriptはバイナリが扱えないので断念
追記:↑バイナリが扱えない訳ではないみたい

スケールの実装

notes: {
  "A":  0,
  "B♭": 1,
  "B":  2,
  "C":  3,
...
scales: {
  "Major"           : "0,2,4,5,7,9,11",
  "Major Pentatonic": "0,2,4,7,9",
  "Minor Pentatonic": "0,3,5,7,10",
...
基音に対する半音階を数値で表現

MMLに変換

map: {
  "A":  "a",
  "B♭": "a+",
  "B":  "b",
  "C":  "c",
...
Guitar Scalerの変数をさらにMMLにマッピング
あとはMMLのフォーマットに合わせてゴリゴリ変換

まとめ

音符に関わるプログラミングは
とても楽しいです!
ご静聴ありがとうございました