@onjmin/dtm 0.1.85 → 0.1.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -140,6 +140,17 @@ type ClipMeter = {
140
140
  dispose: () => void;
141
141
  };
142
142
 
143
+ /**
144
+ * マスタディレイ(テンポ同期エコー)— send/return バス。
145
+ *
146
+ * リバーブ({@link file://./reverb.ts})と同じ設計: masterGain の並列センドとして
147
+ * 独立に存在し、各ボーカルトラックが個別のセンド量(`e`トークン)で参加を決める。
148
+ * リバーブと違い、ディレイは曲のBPMに同期しないと不自然に聞こえるため、音価
149
+ * (8分・付点8分等)を選ばせて実秒数へ変換する方式にしている(DTMツールの定番UX)。
150
+ */
151
+ /** 選べる音価。value は保存用の短いキー、beats は四分音符を1とした拍数。 */
152
+ type DelayDivision = "4" | "8" | "8d" | "16";
153
+
143
154
  /**
144
155
  * 自動ビブラート(ロングトーンに自動で掛けるピッチLFO)の定数と曲線生成。
145
156
  *
@@ -304,7 +315,7 @@ type VoiceModel = {
304
315
  * {@link renderToCache} 済みのバッファを絶対時刻 t0(AudioContextクロック秒)へスケジュールする。
305
316
  * t0 は未来の任意時刻でよく、再生はオーディオスレッドが担うのでメインスレッドのもたつきに影響されない。
306
317
  */
307
- scheduleCached?: (key: string, t0: number, peak: number, pan: number, reverbSend?: number, destination?: AudioNode) => void;
318
+ scheduleCached?: (key: string, t0: number, peak: number, pan: number, reverbSend?: number, delaySend?: number, destination?: AudioNode) => void;
308
319
  /** スケジュール済みの発音をすべて即停止する(停止・一時停止・シーク時)。 */
309
320
  stopAll?: () => void;
310
321
  };
@@ -317,7 +328,7 @@ type VoiceModel = {
317
328
  * 戻り値の VoiceModel は (音節, PlayNoteEvent) を受け取り、
318
329
  * `ctx.currentTime + e.when` のタイミングで destination へ発音する。
319
330
  */
320
- declare const createKlattVoice: (ctx: AudioContext, destination: AudioNode, reverbBus?: AudioNode) => VoiceModel;
331
+ declare const createKlattVoice: (ctx: AudioContext, destination: AudioNode, reverbBus?: AudioNode, delayBus?: AudioNode) => VoiceModel;
321
332
  /** koe音源(.koe)が置かれているパブリックバケットのベースURL */
322
333
  declare const KOE_BASE_URL = "https://pub-12482a6b5cbc4c9e906b2e1904cabae5.r2.dev";
323
334
  /**
@@ -380,6 +391,11 @@ type KoeVoiceOptions = {
380
391
  * (=トラックごとの `r` トークンを書いてもリバーブが掛からない)。
381
392
  */
382
393
  reverbBus?: AudioNode;
394
+ /**
395
+ * マスタディレイのバス(センド先)。指定時のみ、ノートごとの `delaySend` に応じて
396
+ * ドライ経路とは別にこのノードへ送る。未指定ならディレイ送りは常にスキップされる。
397
+ */
398
+ delayBus?: AudioNode;
383
399
  };
384
400
  /**
385
401
  * @onjmin/koe の音源(UTAU由来 .koe)で1音節を歌う {@link VoiceModel} を生成する。
@@ -425,6 +441,11 @@ type StreamVoiceTrack = {
425
441
  * リバーブバスへ送るかを個別に決める。
426
442
  */
427
443
  reverbSend?: number;
444
+ /**
445
+ * マスタディレイへのセンド量 0-1。既定0(ディレイが掛からない)。マスタディレイ自体の
446
+ * つまみ(音価・掛かり具合)とは独立に、このトラックをどれだけディレイバスへ送るかを決める。
447
+ */
448
+ delaySend?: number;
428
449
  /**
429
450
  * フォルマント/ジェンダーファクター 0-1。既定0.5(無変化)。koe音源(Worldline)限定
430
451
  * — klattフォールバックには効かない。0.5未満で低め/太め、0.5超で高め/細めに寄る。
@@ -532,6 +553,12 @@ type SingingVoicesOptions = {
532
553
  * Convolver 入力を渡す想定)。
533
554
  */
534
555
  reverbBus?: AudioNode;
556
+ /**
557
+ * マスタディレイのバス(センド先)。指定すると、各歌詞トラックの `delay`(`e`トークン)
558
+ * に応じて klatt/koe いずれの音源もこのノードへセンドできるようになる。未指定なら
559
+ * トラック側で `e` を指定してもディレイは掛からない。
560
+ */
561
+ delayBus?: AudioNode;
535
562
  /**
536
563
  * トラックID → チャンネルストリップ入口ノードの解決関数。指定すると、各トラックの
537
564
  * 発音は共有の `destination`(singingVoices内部マスタ)へ直結する代わりに、この
@@ -645,6 +672,7 @@ type LyricSyncData = {
645
672
  vocalOctave: number;
646
673
  vocalVibrato?: boolean;
647
674
  vocalReverb?: number;
675
+ vocalDelay?: number;
648
676
  vocalGender?: number;
649
677
  vocalBreathiness?: number;
650
678
  };
@@ -729,6 +757,11 @@ type PlayNoteEvent = {
729
757
  * 反映する。合成側はドライ経路とは別にこの割合だけリバーブバスへ送ればよい。
730
758
  */
731
759
  reverbSend?: number;
760
+ /**
761
+ * マスタディレイへのセンド量 0-1(既定0)。歌詞トラックの個別ディレイ送り設定を反映する。
762
+ * リバーブと同じくドライ経路とは別にこの割合だけディレイバスへ送ればよい。
763
+ */
764
+ delaySend?: number;
732
765
  /**
733
766
  * 発音先の上書き(未指定なら合成側の既定destinationへ)。トラック単位チャンネルストリップ
734
767
  * (コンプレッサー/ステレオワイド)の入口ノードを渡すことを想定。
@@ -787,6 +820,13 @@ type LyricTrack = {
787
820
  * MMLでは `@@n klatt r50 …` のように r トークンで付与する。
788
821
  */
789
822
  reverb?: number;
823
+ /**
824
+ * このボーカルトラック個別のディレイセンド量 0-100。既定0(マスタディレイの影響を受けない)。
825
+ * マスタディレイのつまみ(テンポ同期した音価・掛かり具合そのもの)とは別軸で、
826
+ * 「このトラックをどれだけディレイバスへ送るか」を個別に決める。
827
+ * MMLでは `@@n klatt e50 …` のように e トークンで付与する。
828
+ */
829
+ delay?: number;
790
830
  /**
791
831
  * フォルマント/ジェンダーファクター 0-100。既定50(無変化)。
792
832
  * ピッチはそのままに声の太さ/細さ(年齢・性別感)だけを動かす。
@@ -878,6 +918,17 @@ type DawOptions = {
878
918
  onTrackCompressionChange?: (trackId: string, amount: number) => void;
879
919
  /** トラック単位のステレオ幅 0-200 が変化したときに呼ばれる。 */
880
920
  onTrackWidthChange?: (trackId: string, width: number) => void;
921
+ /** トラック単位EQの低域(シェルフ)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
922
+ onTrackEqLowChange?: (trackId: string, db: number) => void;
923
+ /** トラック単位EQの中域(ピーキング)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
924
+ onTrackEqMidChange?: (trackId: string, db: number) => void;
925
+ /** トラック単位EQの高域(シェルフ)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
926
+ onTrackEqHighChange?: (trackId: string, db: number) => void;
927
+ /**
928
+ * BPMが変化したときに呼ばれる(MML読込・スライダー操作・MIDI取り込み等、経路に依らず単一の窓口)。
929
+ * テンポ同期エフェクト(ディレイ等)が実時間へ再計算するために使う。
930
+ */
931
+ onBpmChange?: (bpm: number) => void;
881
932
  /**
882
933
  * 表示・出力設定(ズーム / 和音分解モード / 和音伴奏トラック無視)が変化したときに呼ばれる。
883
934
  * 利用側が選択状態を永続化する用途に使う。
@@ -912,6 +963,26 @@ type DawOptions = {
912
963
  reverbAmount?: number;
913
964
  /** マスタリバーブのつまみが動かされたときに呼ばれる(0-100)。実際の音声処理は呼び出し側(studio)が担う。 */
914
965
  onReverbChange?: (amount: number) => void;
966
+ /** マスタリバーブのDecay(残響の長さ、秒)。既定2.2、範囲0.3〜4.0。 */
967
+ reverbDecay?: number;
968
+ /** マスタリバーブのDecayが変化したときに呼ばれる(秒)。 */
969
+ onReverbDecayChange?: (seconds: number) => void;
970
+ /** マスタリバーブのPre Delay(原音から残響が立ち上がるまでの遅延、ms)。既定0、範囲0〜150。 */
971
+ reverbPreDelay?: number;
972
+ /** マスタリバーブのPre Delayが変化したときに呼ばれる(ms)。 */
973
+ onReverbPreDelayChange?: (ms: number) => void;
974
+ /**
975
+ * マスタディレイの掛かり具合 0-100。既定0(オフ)。テンポに同期したエコー。
976
+ * 全トラック共通のバス自体は用意されるが、実際に送る量はボーカルトラック個別の
977
+ * ディレイ送り(`e`トークン)で決める(リバーブと同じ send/return の考え方)。
978
+ */
979
+ delayAmount?: number;
980
+ /** マスタディレイのつまみが動かされたときに呼ばれる(0-100)。 */
981
+ onDelayChange?: (amount: number) => void;
982
+ /** マスタディレイの音価(既定 "8" = 8分音符)。曲のBPMに同期した実秒数へ変換される。 */
983
+ delayDivision?: DelayDivision;
984
+ /** マスタディレイの音価が変更されたときに呼ばれる。 */
985
+ onDelayDivisionChange?: (division: DelayDivision) => void;
915
986
  parseMidi?: ParseMidiFn;
916
987
  /**
917
988
  * 動作モード({@link DawMode})。
@@ -1008,6 +1079,12 @@ type DawInstance = {
1008
1079
  setDrumVolume: (volume: number) => void;
1009
1080
  /** マスタリバーブの掛かり具合を 0-100 で変更する。 */
1010
1081
  setReverbAmount: (amount: number) => void;
1082
+ /** マスタリバーブのDecay(残響の長さ)を秒で変更する。 */
1083
+ setReverbDecay: (seconds: number) => void;
1084
+ /** マスタリバーブのPre Delayをmsで変更する。 */
1085
+ setReverbPreDelay: (ms: number) => void;
1086
+ /** マスタディレイの掛かり具合を 0-100 で変更する。 */
1087
+ setDelayAmount: (amount: number) => void;
1011
1088
  /** リモートから受信したトラック個別楽器を適用する(`onTrackInstrumentChange` は発火しない)。 */
1012
1089
  applyTrackInstrument: (trackIndex: number, instrumentName: string) => void;
1013
1090
  /**
@@ -1528,6 +1605,17 @@ type MmlMeta = {
1528
1605
  drumVolume?: number;
1529
1606
  /** マスタリバーブの掛かり具合 0-100(全トラック共通、`#reverb=` で埋め込む) */
1530
1607
  reverb?: number;
1608
+ /**
1609
+ * マスタリバーブのDecay(残響の長さ)を10倍した整数(0.3〜4.0秒 → 3〜40)。
1610
+ * `#reverbdecay=` で埋め込む。省略時は22(2.2秒)。
1611
+ */
1612
+ reverbDecay?: number;
1613
+ /** マスタリバーブのPre Delay(ms、0〜150)。`#reverbpredelay=` で埋め込む。省略時は0。 */
1614
+ reverbPreDelay?: number;
1615
+ /** マスタディレイの掛かり具合 0-100(全トラック共通、`#delay=` で埋め込む) */
1616
+ delay?: number;
1617
+ /** マスタディレイの音価("4"|"8"|"8d"|"16")。`#delaydiv=` で埋め込む。省略時は"8"。 */
1618
+ delayDivision?: string;
1531
1619
  /** DAWの動作モード(simple | advanced) */
1532
1620
  mode?: "simple" | "advanced";
1533
1621
  /**
@@ -1545,6 +1633,12 @@ type MmlMeta = {
1545
1633
  * トラックごとのステレオ幅 0-200。`#t<n>width=<値>` で埋め込む。省略時は100(原音のまま)。
1546
1634
  */
1547
1635
  trackWidth?: Record<number, number>;
1636
+ /** トラックごとのEQ低域ゲイン -12〜+12dB。`#t<n>eqlo=<値>` で埋め込む。省略時は0(無変化)。 */
1637
+ trackEqLow?: Record<number, number>;
1638
+ /** トラックごとのEQ中域ゲイン -12〜+12dB。`#t<n>eqmid=<値>` で埋め込む。省略時は0(無変化)。 */
1639
+ trackEqMid?: Record<number, number>;
1640
+ /** トラックごとのEQ高域ゲイン -12〜+12dB。`#t<n>eqhi=<値>` で埋め込む。省略時は0(無変化)。 */
1641
+ trackEqHigh?: Record<number, number>;
1548
1642
  };
1549
1643
  /** MMLからトップレベル宣言を抽出する */
1550
1644
  declare const parseMmlMeta: (mml: string) => MmlMeta;
@@ -1890,6 +1984,14 @@ type DtmStudioOptions = {
1890
1984
  drumVolume?: number;
1891
1985
  /** マスタリバーブの掛かり具合 0-100。既定0(オフ)。全トラックへ一律で掛かる。 */
1892
1986
  reverbAmount?: number;
1987
+ /** マスタリバーブのDecay(残響の長さ、秒)。既定2.2、範囲0.3〜4.0。 */
1988
+ reverbDecay?: number;
1989
+ /** マスタリバーブのPre Delay(ms)。既定0、範囲0〜150。 */
1990
+ reverbPreDelay?: number;
1991
+ /** マスタディレイの掛かり具合 0-100。既定0(オフ)。テンポに同期したエコー。 */
1992
+ delayAmount?: number;
1993
+ /** マスタディレイの音価(既定 "8" = 8分音符)。 */
1994
+ delayDivision?: DelayDivision;
1893
1995
  /**
1894
1996
  * 最終出力先の AudioNode。未指定時は audioCtx.destination(スピーカー)。
1895
1997
  * MediaStreamAudioDestinationNode や GainNode を指定できます。
@@ -2091,6 +2193,12 @@ type DtmStudio = {
2091
2193
  setVolume: (volume: number) => void;
2092
2194
  /** マスタリバーブの掛かり具合を 0-100 で変更する。 */
2093
2195
  setReverbAmount: (amount: number) => void;
2196
+ /** マスタリバーブのDecay(残響の長さ)を秒で変更する。 */
2197
+ setReverbDecay: (seconds: number) => void;
2198
+ /** マスタリバーブのPre Delayをmsで変更する。 */
2199
+ setReverbPreDelay: (ms: number) => void;
2200
+ /** マスタディレイの掛かり具合を 0-100 で変更する。 */
2201
+ setDelayAmount: (amount: number) => void;
2094
2202
  /** AudioContext を閉じ、生成物を破棄する。 */
2095
2203
  dispose: () => void;
2096
2204
  };
package/dist/index.d.ts CHANGED
@@ -140,6 +140,17 @@ type ClipMeter = {
140
140
  dispose: () => void;
141
141
  };
142
142
 
143
+ /**
144
+ * マスタディレイ(テンポ同期エコー)— send/return バス。
145
+ *
146
+ * リバーブ({@link file://./reverb.ts})と同じ設計: masterGain の並列センドとして
147
+ * 独立に存在し、各ボーカルトラックが個別のセンド量(`e`トークン)で参加を決める。
148
+ * リバーブと違い、ディレイは曲のBPMに同期しないと不自然に聞こえるため、音価
149
+ * (8分・付点8分等)を選ばせて実秒数へ変換する方式にしている(DTMツールの定番UX)。
150
+ */
151
+ /** 選べる音価。value は保存用の短いキー、beats は四分音符を1とした拍数。 */
152
+ type DelayDivision = "4" | "8" | "8d" | "16";
153
+
143
154
  /**
144
155
  * 自動ビブラート(ロングトーンに自動で掛けるピッチLFO)の定数と曲線生成。
145
156
  *
@@ -304,7 +315,7 @@ type VoiceModel = {
304
315
  * {@link renderToCache} 済みのバッファを絶対時刻 t0(AudioContextクロック秒)へスケジュールする。
305
316
  * t0 は未来の任意時刻でよく、再生はオーディオスレッドが担うのでメインスレッドのもたつきに影響されない。
306
317
  */
307
- scheduleCached?: (key: string, t0: number, peak: number, pan: number, reverbSend?: number, destination?: AudioNode) => void;
318
+ scheduleCached?: (key: string, t0: number, peak: number, pan: number, reverbSend?: number, delaySend?: number, destination?: AudioNode) => void;
308
319
  /** スケジュール済みの発音をすべて即停止する(停止・一時停止・シーク時)。 */
309
320
  stopAll?: () => void;
310
321
  };
@@ -317,7 +328,7 @@ type VoiceModel = {
317
328
  * 戻り値の VoiceModel は (音節, PlayNoteEvent) を受け取り、
318
329
  * `ctx.currentTime + e.when` のタイミングで destination へ発音する。
319
330
  */
320
- declare const createKlattVoice: (ctx: AudioContext, destination: AudioNode, reverbBus?: AudioNode) => VoiceModel;
331
+ declare const createKlattVoice: (ctx: AudioContext, destination: AudioNode, reverbBus?: AudioNode, delayBus?: AudioNode) => VoiceModel;
321
332
  /** koe音源(.koe)が置かれているパブリックバケットのベースURL */
322
333
  declare const KOE_BASE_URL = "https://pub-12482a6b5cbc4c9e906b2e1904cabae5.r2.dev";
323
334
  /**
@@ -380,6 +391,11 @@ type KoeVoiceOptions = {
380
391
  * (=トラックごとの `r` トークンを書いてもリバーブが掛からない)。
381
392
  */
382
393
  reverbBus?: AudioNode;
394
+ /**
395
+ * マスタディレイのバス(センド先)。指定時のみ、ノートごとの `delaySend` に応じて
396
+ * ドライ経路とは別にこのノードへ送る。未指定ならディレイ送りは常にスキップされる。
397
+ */
398
+ delayBus?: AudioNode;
383
399
  };
384
400
  /**
385
401
  * @onjmin/koe の音源(UTAU由来 .koe)で1音節を歌う {@link VoiceModel} を生成する。
@@ -425,6 +441,11 @@ type StreamVoiceTrack = {
425
441
  * リバーブバスへ送るかを個別に決める。
426
442
  */
427
443
  reverbSend?: number;
444
+ /**
445
+ * マスタディレイへのセンド量 0-1。既定0(ディレイが掛からない)。マスタディレイ自体の
446
+ * つまみ(音価・掛かり具合)とは独立に、このトラックをどれだけディレイバスへ送るかを決める。
447
+ */
448
+ delaySend?: number;
428
449
  /**
429
450
  * フォルマント/ジェンダーファクター 0-1。既定0.5(無変化)。koe音源(Worldline)限定
430
451
  * — klattフォールバックには効かない。0.5未満で低め/太め、0.5超で高め/細めに寄る。
@@ -532,6 +553,12 @@ type SingingVoicesOptions = {
532
553
  * Convolver 入力を渡す想定)。
533
554
  */
534
555
  reverbBus?: AudioNode;
556
+ /**
557
+ * マスタディレイのバス(センド先)。指定すると、各歌詞トラックの `delay`(`e`トークン)
558
+ * に応じて klatt/koe いずれの音源もこのノードへセンドできるようになる。未指定なら
559
+ * トラック側で `e` を指定してもディレイは掛からない。
560
+ */
561
+ delayBus?: AudioNode;
535
562
  /**
536
563
  * トラックID → チャンネルストリップ入口ノードの解決関数。指定すると、各トラックの
537
564
  * 発音は共有の `destination`(singingVoices内部マスタ)へ直結する代わりに、この
@@ -645,6 +672,7 @@ type LyricSyncData = {
645
672
  vocalOctave: number;
646
673
  vocalVibrato?: boolean;
647
674
  vocalReverb?: number;
675
+ vocalDelay?: number;
648
676
  vocalGender?: number;
649
677
  vocalBreathiness?: number;
650
678
  };
@@ -729,6 +757,11 @@ type PlayNoteEvent = {
729
757
  * 反映する。合成側はドライ経路とは別にこの割合だけリバーブバスへ送ればよい。
730
758
  */
731
759
  reverbSend?: number;
760
+ /**
761
+ * マスタディレイへのセンド量 0-1(既定0)。歌詞トラックの個別ディレイ送り設定を反映する。
762
+ * リバーブと同じくドライ経路とは別にこの割合だけディレイバスへ送ればよい。
763
+ */
764
+ delaySend?: number;
732
765
  /**
733
766
  * 発音先の上書き(未指定なら合成側の既定destinationへ)。トラック単位チャンネルストリップ
734
767
  * (コンプレッサー/ステレオワイド)の入口ノードを渡すことを想定。
@@ -787,6 +820,13 @@ type LyricTrack = {
787
820
  * MMLでは `@@n klatt r50 …` のように r トークンで付与する。
788
821
  */
789
822
  reverb?: number;
823
+ /**
824
+ * このボーカルトラック個別のディレイセンド量 0-100。既定0(マスタディレイの影響を受けない)。
825
+ * マスタディレイのつまみ(テンポ同期した音価・掛かり具合そのもの)とは別軸で、
826
+ * 「このトラックをどれだけディレイバスへ送るか」を個別に決める。
827
+ * MMLでは `@@n klatt e50 …` のように e トークンで付与する。
828
+ */
829
+ delay?: number;
790
830
  /**
791
831
  * フォルマント/ジェンダーファクター 0-100。既定50(無変化)。
792
832
  * ピッチはそのままに声の太さ/細さ(年齢・性別感)だけを動かす。
@@ -878,6 +918,17 @@ type DawOptions = {
878
918
  onTrackCompressionChange?: (trackId: string, amount: number) => void;
879
919
  /** トラック単位のステレオ幅 0-200 が変化したときに呼ばれる。 */
880
920
  onTrackWidthChange?: (trackId: string, width: number) => void;
921
+ /** トラック単位EQの低域(シェルフ)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
922
+ onTrackEqLowChange?: (trackId: string, db: number) => void;
923
+ /** トラック単位EQの中域(ピーキング)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
924
+ onTrackEqMidChange?: (trackId: string, db: number) => void;
925
+ /** トラック単位EQの高域(シェルフ)ゲイン -12〜+12dB が変化したときに呼ばれる。 */
926
+ onTrackEqHighChange?: (trackId: string, db: number) => void;
927
+ /**
928
+ * BPMが変化したときに呼ばれる(MML読込・スライダー操作・MIDI取り込み等、経路に依らず単一の窓口)。
929
+ * テンポ同期エフェクト(ディレイ等)が実時間へ再計算するために使う。
930
+ */
931
+ onBpmChange?: (bpm: number) => void;
881
932
  /**
882
933
  * 表示・出力設定(ズーム / 和音分解モード / 和音伴奏トラック無視)が変化したときに呼ばれる。
883
934
  * 利用側が選択状態を永続化する用途に使う。
@@ -912,6 +963,26 @@ type DawOptions = {
912
963
  reverbAmount?: number;
913
964
  /** マスタリバーブのつまみが動かされたときに呼ばれる(0-100)。実際の音声処理は呼び出し側(studio)が担う。 */
914
965
  onReverbChange?: (amount: number) => void;
966
+ /** マスタリバーブのDecay(残響の長さ、秒)。既定2.2、範囲0.3〜4.0。 */
967
+ reverbDecay?: number;
968
+ /** マスタリバーブのDecayが変化したときに呼ばれる(秒)。 */
969
+ onReverbDecayChange?: (seconds: number) => void;
970
+ /** マスタリバーブのPre Delay(原音から残響が立ち上がるまでの遅延、ms)。既定0、範囲0〜150。 */
971
+ reverbPreDelay?: number;
972
+ /** マスタリバーブのPre Delayが変化したときに呼ばれる(ms)。 */
973
+ onReverbPreDelayChange?: (ms: number) => void;
974
+ /**
975
+ * マスタディレイの掛かり具合 0-100。既定0(オフ)。テンポに同期したエコー。
976
+ * 全トラック共通のバス自体は用意されるが、実際に送る量はボーカルトラック個別の
977
+ * ディレイ送り(`e`トークン)で決める(リバーブと同じ send/return の考え方)。
978
+ */
979
+ delayAmount?: number;
980
+ /** マスタディレイのつまみが動かされたときに呼ばれる(0-100)。 */
981
+ onDelayChange?: (amount: number) => void;
982
+ /** マスタディレイの音価(既定 "8" = 8分音符)。曲のBPMに同期した実秒数へ変換される。 */
983
+ delayDivision?: DelayDivision;
984
+ /** マスタディレイの音価が変更されたときに呼ばれる。 */
985
+ onDelayDivisionChange?: (division: DelayDivision) => void;
915
986
  parseMidi?: ParseMidiFn;
916
987
  /**
917
988
  * 動作モード({@link DawMode})。
@@ -1008,6 +1079,12 @@ type DawInstance = {
1008
1079
  setDrumVolume: (volume: number) => void;
1009
1080
  /** マスタリバーブの掛かり具合を 0-100 で変更する。 */
1010
1081
  setReverbAmount: (amount: number) => void;
1082
+ /** マスタリバーブのDecay(残響の長さ)を秒で変更する。 */
1083
+ setReverbDecay: (seconds: number) => void;
1084
+ /** マスタリバーブのPre Delayをmsで変更する。 */
1085
+ setReverbPreDelay: (ms: number) => void;
1086
+ /** マスタディレイの掛かり具合を 0-100 で変更する。 */
1087
+ setDelayAmount: (amount: number) => void;
1011
1088
  /** リモートから受信したトラック個別楽器を適用する(`onTrackInstrumentChange` は発火しない)。 */
1012
1089
  applyTrackInstrument: (trackIndex: number, instrumentName: string) => void;
1013
1090
  /**
@@ -1528,6 +1605,17 @@ type MmlMeta = {
1528
1605
  drumVolume?: number;
1529
1606
  /** マスタリバーブの掛かり具合 0-100(全トラック共通、`#reverb=` で埋め込む) */
1530
1607
  reverb?: number;
1608
+ /**
1609
+ * マスタリバーブのDecay(残響の長さ)を10倍した整数(0.3〜4.0秒 → 3〜40)。
1610
+ * `#reverbdecay=` で埋め込む。省略時は22(2.2秒)。
1611
+ */
1612
+ reverbDecay?: number;
1613
+ /** マスタリバーブのPre Delay(ms、0〜150)。`#reverbpredelay=` で埋め込む。省略時は0。 */
1614
+ reverbPreDelay?: number;
1615
+ /** マスタディレイの掛かり具合 0-100(全トラック共通、`#delay=` で埋め込む) */
1616
+ delay?: number;
1617
+ /** マスタディレイの音価("4"|"8"|"8d"|"16")。`#delaydiv=` で埋め込む。省略時は"8"。 */
1618
+ delayDivision?: string;
1531
1619
  /** DAWの動作モード(simple | advanced) */
1532
1620
  mode?: "simple" | "advanced";
1533
1621
  /**
@@ -1545,6 +1633,12 @@ type MmlMeta = {
1545
1633
  * トラックごとのステレオ幅 0-200。`#t<n>width=<値>` で埋め込む。省略時は100(原音のまま)。
1546
1634
  */
1547
1635
  trackWidth?: Record<number, number>;
1636
+ /** トラックごとのEQ低域ゲイン -12〜+12dB。`#t<n>eqlo=<値>` で埋め込む。省略時は0(無変化)。 */
1637
+ trackEqLow?: Record<number, number>;
1638
+ /** トラックごとのEQ中域ゲイン -12〜+12dB。`#t<n>eqmid=<値>` で埋め込む。省略時は0(無変化)。 */
1639
+ trackEqMid?: Record<number, number>;
1640
+ /** トラックごとのEQ高域ゲイン -12〜+12dB。`#t<n>eqhi=<値>` で埋め込む。省略時は0(無変化)。 */
1641
+ trackEqHigh?: Record<number, number>;
1548
1642
  };
1549
1643
  /** MMLからトップレベル宣言を抽出する */
1550
1644
  declare const parseMmlMeta: (mml: string) => MmlMeta;
@@ -1890,6 +1984,14 @@ type DtmStudioOptions = {
1890
1984
  drumVolume?: number;
1891
1985
  /** マスタリバーブの掛かり具合 0-100。既定0(オフ)。全トラックへ一律で掛かる。 */
1892
1986
  reverbAmount?: number;
1987
+ /** マスタリバーブのDecay(残響の長さ、秒)。既定2.2、範囲0.3〜4.0。 */
1988
+ reverbDecay?: number;
1989
+ /** マスタリバーブのPre Delay(ms)。既定0、範囲0〜150。 */
1990
+ reverbPreDelay?: number;
1991
+ /** マスタディレイの掛かり具合 0-100。既定0(オフ)。テンポに同期したエコー。 */
1992
+ delayAmount?: number;
1993
+ /** マスタディレイの音価(既定 "8" = 8分音符)。 */
1994
+ delayDivision?: DelayDivision;
1893
1995
  /**
1894
1996
  * 最終出力先の AudioNode。未指定時は audioCtx.destination(スピーカー)。
1895
1997
  * MediaStreamAudioDestinationNode や GainNode を指定できます。
@@ -2091,6 +2193,12 @@ type DtmStudio = {
2091
2193
  setVolume: (volume: number) => void;
2092
2194
  /** マスタリバーブの掛かり具合を 0-100 で変更する。 */
2093
2195
  setReverbAmount: (amount: number) => void;
2196
+ /** マスタリバーブのDecay(残響の長さ)を秒で変更する。 */
2197
+ setReverbDecay: (seconds: number) => void;
2198
+ /** マスタリバーブのPre Delayをmsで変更する。 */
2199
+ setReverbPreDelay: (ms: number) => void;
2200
+ /** マスタディレイの掛かり具合を 0-100 で変更する。 */
2201
+ setDelayAmount: (amount: number) => void;
2094
2202
  /** AudioContext を閉じ、生成物を破棄する。 */
2095
2203
  dispose: () => void;
2096
2204
  };