第0章 — エンジニアのための音楽入門
座標系を読み、剰余演算を扱えるなら、楽譜を読むための思考道具はすでに揃っています。この章では音高を整数として、時間をグリッドとして、テンポを再生クロックとして捉えます。音楽の前提知識は不要です。読み終える頃には、このコースのすべての楽譜を読み、MidiSketchの設定フィールドへ対応づけられるようになります。
音高はただの整数
音楽の語彙は有限です。西洋のポップスは1オクターブを等間隔の12ステップに分割し、メロディもベースもコードもすべてそのグリッドから取り出されます。MidiSketchは「ドの音」ではなく、整数 60 を見ています。
音 / 音高(ピッチ)
音高(ピッチ) とは、耳で感じる音の高さのことです。音(ノート) は音高に長さが付いた1つのイベントで、メロディの最小単位です。音を (音高, 開始, 長さ) のタプルだと考えると、この章はその音高フィールドに注目しています。
半音
半音 はこの体系における最小の音高ステップで、12ステップグリッドの1マス、MIDIでの +1 に相当します。ピアノの隣り合う鍵(白と黒、あるいは E–F と B–C の白鍵ペア)は半音差です。半音12個で1オクターブになります。
MIDIノート番号
MIDIノート番号 は音高を整数で表したもので、0 から 127 までの列挙値です。慣例として C4 = 60 とし、半音ごとに 1 増えます。つまり C#4 = 61、D4 = 62、B4 = 71 です。MidiSketchやあらゆるシンセが共通で使う識別子です。
上の数直線的な見方こそが要点です。音高の計算は整数の計算です。G4 の三全音上の音が欲しければ 67 + 6 = 73 です。
オクターブとピッチクラス(mod 12)
ちょうど12半音離れた音は同じ音名を持ち、「同じ音だけど高い」ように聞こえます。この等価性こそが、音高を剰余演算で扱える理由です。
オクターブ
オクターブ は、ある音とその周波数が2倍になる音との間隔で、ちょうど12半音、MIDIでは +12 です。1オクターブ離れた音(C4 = 60 と C5 = 72)は同じ音のクラスとして知覚されます。任意のMIDI番号のピッチクラスは n mod 12 で求まり、すべてのCは 0 に集約されます。
これが、MidiSketchが音域外の音に 12 を足し引きして範囲内へ折り返せる理由です。ピッチクラス(n mod 12)は保たれ、オクターブの位置だけが変わります。この mod 12 のモデルを覚えておいてください。第1章ではスケールを12クラスの部分集合として構築します。
時間はグリッド
音高は「何を」に答え、次の軸は「いつ」に答えます。ポップスにおける時間は規則的なパルス上に量子化されます。
拍(ビート)
拍 とは、足でタップするような一定のパルスで、時間の基本単位です。テンポもリズムも拍を基準に測られます。記譜上のデフォルトの拍は四分音符です。
小節
小節 は一定数の拍を繰り返し単位にまとめたもので、楽譜では縦の小節線で区切られます。音楽的な時間のループ単位であり、ポップスの多くは4拍の小節で構成されます。
拍子(拍子記号)
拍子記号 4/4 はグリッドを宣言します。上の数字は1小節あたりの拍数、下の数字は拍の単位(4 = 四分音符)です。4/4(「4分の4拍子」)は1小節に四分音符4拍を意味し、ほぼすべてのポップスのデフォルトです。
内部的にMidiSketchは時間を ティック で測ります。四分音符は 480 ティックです。したがって1拍は 480 ティック、4/4 の1小節は 1920 ティックとなり、サンプル精度のクロックのような固定小数点の時間基準になります。
テンポ:再生クロック
グリッドは速度を与えるまで無次元です。その速度がテンポです。
BPM
BPM(beats per minute)は拍グリッドの再生速度、つまり1分あたりに経過する拍数です。BPMを2倍にしても、鳴る音やその相対的な間隔は変わらず、グリッドが速く流れるだけです。MidiSketchはBPM 40〜240 を受け付け、bpm: 0 はスタイルプリセットのデフォルトを選びます。
関心の分離に注目してください。音高(整数)、リズム(ティックのオフセット)、テンポ(クロックへのスカラー倍率)は互いに独立です。リズムに触れず移調することも、1音も変えずにBPMを変えることもできます。
音域:整数に境界を引く
実際の楽器や声は、0〜127 のうち無理なく出せる帯域だけを持ちます。MidiSketchはその制約を2つの境界で表します。
デフォルトの vocalLow: 60(C4)と vocalHigh: 79(G5)は閉区間を定義します。範囲外に落ちそうな音はオクターブ(±12)単位で収まるまで折り返されます。ピッチクラスは同じまま、合法な音域に収まります。有効な境界は 36〜96 です。
楽譜の読み方
ここでのすべての対話例は、音部記号 の付いた 五線 に描かれています。
五線と音部記号
五線 は音符を置く5本の横線で、上にあるほど音が高くなります。左端の 音部記号 が基準を固定します。このコースで一貫して使う ト音記号 は下から2本目の線を G4 に固定します。初見演奏は不要で、五線を縦の音高軸、音部記号をその原点マーカーだと捉えてください。
よくある落とし穴 — bpm: 0 は無音ではない
bpm: 0 は「テンポなし」ではなく、スタイルプリセットの既定テンポを使う指示です。テンポを固定したいときは 40〜240 の実値を設定してください。範囲外の値(あるいは 36〜96 を外れた vocalLow/vocalHigh)はクランプされず、validateConfig に拒否されます。
MidiSketchとの対応
| 概念 | 設定フィールド | 範囲・備考 |
|---|---|---|
| 主音のピッチクラス | key | 0〜11(0 = C、7 = G) |
| 再生テンポ | bpm | 40〜240、0 = スタイルのデフォルト |
| メロディ最低音 | vocalLow | MIDI番号、36〜96(デフォルト 60 = C4) |
| メロディ最高音 | vocalHigh | MIDI番号、36〜96(デフォルト 79 = G5) |
| 時間基準 | (内部) | 四分音符あたり 480 ティック |
第1章 — 音階とキー に進みましょう。