楽器
どの項目も省略できます。何も指定しなければ、やわらかい矩形波のリードになります。
| 項目 | 既定値 | 意味 |
|---|---|---|
wave | "square" | "sine"、"square"、"sawtooth"、"triangle"、ドラムなら "noise"。 |
attack | 0.005 | 最大音量に達するまでの秒数。 |
decay | 0.1 | サステインのレベルまで下がる秒数。 |
sustain | 0.6 | 音が鳴っている間に保つレベル。0〜1。 |
release | 0.08 | 音が終わってから消えるまでの秒数。 |
volume | 0.3 | 音量。0〜1。アクセント付きの音は大きめに鳴ります。 |
octave | 0 | すべての音をオクターブ単位で上下にずらします。 |
detune | なし | この値(セント)だけずらした 2 つ目のオシレーターを足し、厚みのあるコーラスのような音にします。 |
filter | なし | ローパスフィルター:{ cutoff, q, sweep }。cutoff は Hz、q はレゾナンスです。sweep を指定すると、音の頭でフィルターをこの Hz 分だけ開き、ディケイの間に閉じていきます。 |
drop | なし | 各音をこの半音数だけ高く始め、本来の音までスライドで下げます。キックや「ぽわん」という音に。 |
vibrato | なし | 音程をこの値(セント)だけ、1 秒に 5.5 回揺らします。 |
echo | なし | 共有のエコーにこの量(0〜1)を送ります。エコーは曲のテンポに合わせた付点 8 分音符です。 |
reverb | なし | 共有のルームリバーブにこの量(0〜1)を送ります。 |
pan | 0 | ステレオの定位。-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 くらいで、ドラムとパッドはそれより小さめです。