本文へスキップ

楽器 ​

どの項目も省略できます。何も指定しなければ、やわらかい矩形波のリードになります。

項目既定値意味
wave"square""sine"、"square"、"sawtooth"、"triangle"、ドラムなら "noise"。
attack0.005最大音量に達するまでの秒数。
decay0.1サステインのレベルまで下がる秒数。
sustain0.6音が鳴っている間に保つレベル。0〜1。
release0.08音が終わってから消えるまでの秒数。
volume0.3音量。0〜1。アクセント付きの音は大きめに鳴ります。
octave0すべての音をオクターブ単位で上下にずらします。
detuneなしこの値(セント)だけずらした 2 つ目のオシレーターを足し、厚みのあるコーラスのような音にします。
filterなしローパスフィルター:{ cutoff, q, sweep }。cutoff は Hz、q はレゾナンスです。sweep を指定すると、音の頭でフィルターをこの Hz 分だけ開き、ディケイの間に閉じていきます。
dropなし各音をこの半音数だけ高く始め、本来の音までスライドで下げます。キックや「ぽわん」という音に。
vibratoなし音程をこの値(セント)だけ、1 秒に 5.5 回揺らします。
echoなし共有のエコーにこの量(0〜1)を送ります。エコーは曲のテンポに合わせた付点 8 分音符です。
reverbなし共有のルームリバーブにこの量(0〜1)を送ります。
pan0ステレオの定位。-1(左)〜1(右)。

マスターバス ​

Player が鳴らす音はすべて、穏やかなコンプレッサーを通ってパート同士がまとまり、その後リミッターを通ります。そのため音符がいくら重なっても音が割れません。エンジン側ですでにマスタリングしているなら、new Player({ master: false }) でオフにできます。

レシピ ​

ts
const instruments = {
  // 少し空間を感じる、弾むようなチップチューンのリード。
  lead: { wave: "square", decay: 0.14, sustain: 0.35, volume: 0.13, echo: 0.28, vibrato: 6 },

  // うねるベース:音ごとに閉じていくレゾナンスの強いフィルター。
  bass: { wave: "sawtooth", octave: -1, decay: 0.18, sustain: 0.4, volume: 0.22, filter: { cutoff: 380, q: 9, sweep: 1400 } },

  // 全体の下に敷く、あたたかい和音。
  pad: { wave: "triangle", attack: 0.15, decay: 0.4, sustain: 0.5, release: 0.4, volume: 0.06, detune: 8 },

  // ドラム。
  kick: { wave: "sine", drop: 24, decay: 0.12, sustain: 0, volume: 0.5 },
  snare: { wave: "noise", decay: 0.08, sustain: 0, volume: 0.12, filter: { cutoff: 2200, q: 3 } },
  hat: { wave: "noise", decay: 0.03, sustain: 0, volume: 0.08, filter: { cutoff: 9000 } },

  // マンガのような「ぽわん」:各音へ落ちていくサイン波。
  bloop: { wave: "sine", drop: 7, decay: 0.12, sustain: 0.2, volume: 0.25 },
};

全体の音量は控えめにしましょう。いくつもの楽器を最大音量で鳴らすと音が割れます。目安はリードが 0.1〜0.2、ベースが 0.2 くらいで、ドラムとパッドはそれより小さめです。