本文へスキップ

曲とパターン ​

曲 ​

フィールド意味
bpm1 分あたりの拍数。パターンの 1 ステップは 16 分音符なので、4 ステップで 1 拍です。
swing0〜0.5。1 つおきのステップを、ステップのその割合だけ遅らせて、跳ねたノリにします。省略できます。
key調。音階の度数と、調に合った効果音に使います:"C major"、"A minor"、"D dorian"。省略できます。
transpose曲全体をこの半音数だけずらします。省略できます。
instruments名前付きの楽器(楽器を参照)。
sections名前付きのセクション。それぞれ楽器名とパターンを対応づけます。
order演奏する順に並べたセクション名。最後まで行くと最初に戻ってループします。
ts
const song = {
  bpm: 120,
  instruments: { lead: {}, bass: { wave: "triangle", octave: -1 } },
  sections: {
    verse: { lead: "C5 . E5 G5", bass: "C3 . . ." },
    chorus: { lead: "F5 - - . A5 - - .", bass: "F2 . . . C3 . . ." },
  },
  order: ["verse", "verse", "chorus"],
};

ステップ ​

パターンは、スペースで区切ったステップの並びです。

ステップ意味
C4、Eb5、F#3音符。音名の文字、省略できる # か b、オクターブ。A4 は 440 Hz です。
C4+E4+G4和音。音符を + でつなぎます。
Am7@3、Cmaj7@4、G@3オクターブを指定した名前付きの和音。メジャー、m、7、maj7、m7、dim、aug、sus2、sus4、6、m6、add9、9 が使えます。
^1、^5、^3@5曲の調の音階の度数(^1 が主音)。オクターブは 4 で、@ の後ろで指定することもできます。
xドラム用の打音。
Xアクセント付きの強い打音。
.休符。
-直前のステップをもう 1 ステップ伸ばします。
|無視されます。小節の区切りに使います。
text
C5 . E5 G5 | . E5 C5 . | D5 - - - | . . . .

これは 4 ステップの小節 4 つにわたるメロディで、最後に D を 4 ステップ伸ばして終わります。

アクセント、ゴーストノート、確率 ​

音符、和音、打音の末尾には、次の修飾記号を付けられます。

末尾意味
!アクセント:大きく鳴らします。C5!
_ゴーストノート:小さく鳴らします。x_
?半分の確率で鳴ります。x?
?3030% の確率で鳴ります。x?30

確率にはシードがあります。同じ曲は毎回同じように鳴るので、テストやリプレイも安定します。

調と音階の度数 ​

key を指定すると、メロディを音階の度数で書けます。そうすれば必ず調に収まり、key を変えるとメロディ全体が移ります。

ts
{ key: "A minor", sections: { a: { lead: "^1 . ^3 ^5 | ^8 - ^7 ." } } }

使える調は major、minor、dorian、phrygian、lydian、mixolydian、pentatonic、minor pentatonic、blues で、主音は何でもかまいません("F# minor")。効果音も調を使います。詳しくはサウンドデザインを参照してください。

バリエーションとフィル ​

トラックにはパターンのリストも書けます。セクションが鳴るたびに、順番に 1 つずつ使われます。

ts
kick: [
  "x . . . x . . . | x . . . x . . .",
  "x . . . x . . . | x . . . x . x x", // 2 回に 1 回:フィル
],

パターンは繰り返してセクションを埋めます ​

セクションの長さは、いちばん長いパターンで決まります。短いパターンは繰り返されるので、長いメロディの下でドラムループを 1 小節だけ書くこともできます。

ts
{
  lead: "C5 . E5 G5 . E5 C5 . | D5 . F5 A5 . F5 D5 .", // 16 ステップ
  kick: "x . . .", // 4 回繰り返す
  hat: ". . x .", // 4 回繰り返す
}

書き間違い ​

音符、打音、上の記号のどれでもないものがあると、曲を鳴らしたときにエラーが投げられます。エラーにはそのステップが示されます。

text
plonk: "Q9" isn't a note (try "C4", "Eb5" or "F#3")