Skip to content

第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 = 61D4 = 62B4 = 71 です。MidiSketchやあらゆるシンセが共通で使う識別子です。

音高の仕組みCからBまでの12半音
ポップスのあらゆる音はこの12ステップのグリッドから生まれます。MIDIでは番号で表し、C4=60、C#4=61、…、B4=71。12ステップ進むと同じ音名が1オクターブ上で繰り返されます。
MIDI notemod 121オクターブは等間隔の12ステップ。ピッチクラス = MIDIノート番号 mod 12。

上の数直線的な見方こそが要点です。音高の計算は整数の計算です。G4 の三全音上の音が欲しければ 67 + 6 = 73 です。

オクターブとピッチクラス(mod 12)

ちょうど12半音離れた音は同じ音名を持ち、「同じ音だけど高い」ように聞こえます。この等価性こそが、音高を剰余演算で扱える理由です。

オクターブ

オクターブ は、ある音とその周波数が2倍になる音との間隔で、ちょうど12半音、MIDIでは +12 です。1オクターブ離れた音(C4 = 60C5 = 72)は同じ音のクラスとして知覚されます。任意のMIDI番号のピッチクラスは n mod 12 で求まり、すべてのCは 0 に集約されます。

オクターブ同じ音名、1オクターブの差
12半音離れた音は「同じだけど高い」ように聞こえます。これがオクターブです。MIDIでは単に+12:C4=60、C5=72。ピッチクラスが mod 12 で扱える理由です。
octave+12C4(60)とC5(72):同じピッチクラスで、MIDIでは+12。

これが、MidiSketchが音域外の音に 12 を足し引きして範囲内へ折り返せる理由です。ピッチクラス(n mod 12)は保たれ、オクターブの位置だけが変わります。この mod 12 のモデルを覚えておいてください。第1章ではスケールを12クラスの部分集合として構築します。

時間はグリッド

音高は「何を」に答え、次の軸は「いつ」に答えます。ポップスにおける時間は規則的なパルス上に量子化されます。

拍(ビート)

とは、足でタップするような一定のパルスで、時間の基本単位です。テンポもリズムも拍を基準に測られます。記譜上のデフォルトの拍は四分音符です。

小節

小節 は一定数の拍を繰り返し単位にまとめたもので、楽譜では縦の小節線で区切られます。音楽的な時間のループ単位であり、ポップスの多くは4拍の小節で構成されます。

拍子(拍子記号)

拍子記号 4/4 はグリッドを宣言します。上の数字は1小節あたりの拍数、下の数字は拍の単位(4 = 四分音符)です。4/4(「4分の4拍子」)は1小節に四分音符4拍を意味し、ほぼすべてのポップスのデフォルトです。

4/4の1小節は4拍
拍は足でタップする一定のパルスです。拍子記号4/4は、1小節に四分音符4拍が入ることを意味し、ほぼすべてのポップスの基本グリッドです。MIDI Sketchでは四分音符=480ティックです。
beatbar四分音符1つが1拍。4拍で1小節になります。

内部的にMidiSketchは時間を ティック で測ります。四分音符は 480 ティックです。したがって1拍は 480 ティック、4/4 の1小節は 1920 ティックとなり、サンプル精度のクロックのような固定小数点の時間基準になります。

テンポ:再生クロック

グリッドは速度を与えるまで無次元です。その速度がテンポです。

BPM

BPM(beats per minute)は拍グリッドの再生速度、つまり1分あたりに経過する拍数です。BPMを2倍にしても、鳴る音やその相対的な間隔は変わらず、グリッドが速く流れるだけです。MidiSketchはBPM 40240 を受け付け、bpm: 0 はスタイルプリセットのデフォルトを選びます。

テンポ同じ音、違う速さ
BPM(beats per minute)は拍グリッドの再生速度です。ここでは同じ4音フレーズを四分音符と八分音符で書いています。後者は同じメロディをBPM2倍で再生したように聞こえます。MIDI SketchのBPMは40〜240です。
bpmBPMはグリッドが流れる速さだけを変えます。音そのものは同じです。

関心の分離に注目してください。音高(整数)、リズム(ティックのオフセット)、テンポ(クロックへのスカラー倍率)は互いに独立です。リズムに触れず移調することも、1音も変えずにBPMを変えることもできます。

音域:整数に境界を引く

実際の楽器や声は、0127 のうち無理なく出せる帯域だけを持ちます。MidiSketchはその制約を2つの境界で表します。

音域デフォルトのボーカル音域:C4〜G5
歌い手(や楽器)には無理なく出せる音域があります。MIDI Sketchはそれを2つのMIDI番号で表し、デフォルトのメロディはC4(60)〜G5(79)に収まります。範囲外になりそうな音はオクターブ単位で折り返されます。
vocalLowvocalHighvocalLow=60(C4)とvocalHigh=79(G5)が生成メロディの上下限です。

デフォルトの vocalLow: 60(C4)と vocalHigh: 79(G5)は閉区間を定義します。範囲外に落ちそうな音はオクターブ(±12)単位で収まるまで折り返されます。ピッチクラスは同じまま、合法な音域に収まります。有効な境界は 3696 です。

楽譜の読み方

ここでのすべての対話例は、音部記号 の付いた 五線 に描かれています。

五線と音部記号

五線 は音符を置く5本の横線で、上にあるほど音が高くなります。左端の 音部記号 が基準を固定します。このコースで一貫して使う ト音記号 は下から2本目の線を G4 に固定します。初見演奏は不要で、五線を縦の音高軸、音部記号をその原点マーカーだと捉えてください。

よくある落とし穴 — bpm: 0 は無音ではない

bpm: 0 は「テンポなし」ではなく、スタイルプリセットの既定テンポを使う指示です。テンポを固定したいときは 40240 の実値を設定してください。範囲外の値(あるいは 3696 を外れた vocalLowvocalHigh)はクランプされず、validateConfig に拒否されます。

MidiSketchとの対応

概念設定フィールド範囲・備考
主音のピッチクラスkey0110 = C、7 = G)
再生テンポbpm402400 = スタイルのデフォルト
メロディ最低音vocalLowMIDI番号、3696(デフォルト 60 = C4)
メロディ最高音vocalHighMIDI番号、3696(デフォルト 79 = G5)
時間基準(内部)四分音符あたり 480 ティック

第1章 — 音階とキー に進みましょう。