@onjmin/dtm 0.1.71 → 0.1.73
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 +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +10 -7
- package/dist/index.mjs +10 -7
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -957,6 +957,8 @@ type PlayMmlOptions = {
|
|
|
957
957
|
onStop?: () => void;
|
|
958
958
|
/** 再生中のステップ更新(1/192小節ごと)時のコールバック */
|
|
959
959
|
onTick?: (step: number) => void;
|
|
960
|
+
/** 再生開始位置(ステップ単位)。指定すると途中から再生する。 */
|
|
961
|
+
startStep?: number;
|
|
960
962
|
};
|
|
961
963
|
type MmlPlayback = {
|
|
962
964
|
/** 再生を止める(ループ中でも停止)。 */
|
package/dist/index.d.ts
CHANGED
|
@@ -957,6 +957,8 @@ type PlayMmlOptions = {
|
|
|
957
957
|
onStop?: () => void;
|
|
958
958
|
/** 再生中のステップ更新(1/192小節ごと)時のコールバック */
|
|
959
959
|
onTick?: (step: number) => void;
|
|
960
|
+
/** 再生開始位置(ステップ単位)。指定すると途中から再生する。 */
|
|
961
|
+
startStep?: number;
|
|
960
962
|
};
|
|
961
963
|
type MmlPlayback = {
|
|
962
964
|
/** 再生を止める(ループ中でも停止)。 */
|
package/dist/index.js
CHANGED
|
@@ -3548,7 +3548,7 @@ var playPlacements = (placements, options) => {
|
|
|
3548
3548
|
const seq = createSequencer({
|
|
3549
3549
|
getTracks: () => seqTracks,
|
|
3550
3550
|
getBpm: () => bpm,
|
|
3551
|
-
getPlayStartStep: () => 0,
|
|
3551
|
+
getPlayStartStep: () => options.startStep ?? 0,
|
|
3552
3552
|
getDrumPattern: () => drumPattern,
|
|
3553
3553
|
getSoloTrackId: () => null,
|
|
3554
3554
|
getLoop: () => options.loop ?? false,
|
|
@@ -3594,7 +3594,7 @@ var playPlacements = (placements, options) => {
|
|
|
3594
3594
|
if (ctx.state === "suspended") resumes.push(ctx.resume());
|
|
3595
3595
|
if (resumes.length > 0) await Promise.all(resumes);
|
|
3596
3596
|
if (!playing) return;
|
|
3597
|
-
seq.start(0);
|
|
3597
|
+
seq.start(options.startStep ?? 0);
|
|
3598
3598
|
})();
|
|
3599
3599
|
const stop = () => {
|
|
3600
3600
|
if (!playing) return;
|
|
@@ -13242,7 +13242,7 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13242
13242
|
const seq = createSequencer({
|
|
13243
13243
|
getTracks: () => seqTracks,
|
|
13244
13244
|
getBpm: () => bpm,
|
|
13245
|
-
getPlayStartStep: () => 0,
|
|
13245
|
+
getPlayStartStep: () => options.startStep ?? 0,
|
|
13246
13246
|
getDrumPattern: () => drumPattern,
|
|
13247
13247
|
getSoloTrackId: () => null,
|
|
13248
13248
|
getLoop: () => options.loop ?? false,
|
|
@@ -13253,7 +13253,10 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13253
13253
|
const namedIdx = TRACK_ID_BY_INDEX2.indexOf(
|
|
13254
13254
|
e.trackId
|
|
13255
13255
|
);
|
|
13256
|
-
|
|
13256
|
+
let trackIdx = namedIdx >= 0 ? namedIdx : Number(e.trackId);
|
|
13257
|
+
if (Number.isNaN(trackIdx) && e.trackId.startsWith("t")) {
|
|
13258
|
+
trackIdx = Number(e.trackId.slice(1));
|
|
13259
|
+
}
|
|
13257
13260
|
if (lyricTracks.has(trackIdx)) return;
|
|
13258
13261
|
options.onPlayNote?.(e);
|
|
13259
13262
|
synth?.playNote(e);
|
|
@@ -13340,7 +13343,7 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13340
13343
|
Object.fromEntries([...customVocalByKey].map(([k, d]) => [k, d.url]))
|
|
13341
13344
|
);
|
|
13342
13345
|
}
|
|
13343
|
-
const streamTracks = buildStreamTracks(0);
|
|
13346
|
+
const streamTracks = buildStreamTracks(options.startStep ?? 0);
|
|
13344
13347
|
await voices.loadModels(streamTracks.map((t) => t.model));
|
|
13345
13348
|
if (!playing || destroyed) {
|
|
13346
13349
|
return playback;
|
|
@@ -13380,14 +13383,14 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13380
13383
|
loopStartSec = loopStartStep * secondsPerStep;
|
|
13381
13384
|
loopLengthSec = (loopEndStep - loopStartStep) * secondsPerStep;
|
|
13382
13385
|
}
|
|
13383
|
-
seq.start(0);
|
|
13386
|
+
seq.start(options.startStep ?? 0);
|
|
13384
13387
|
voices.setVolume(trackVolume / 100 * (masterVolume / 100));
|
|
13385
13388
|
voices.startStream(streamTracks, seq.getStartTime(), {
|
|
13386
13389
|
loopLengthSec,
|
|
13387
13390
|
loopStartSec
|
|
13388
13391
|
});
|
|
13389
13392
|
} else {
|
|
13390
|
-
seq.start(0);
|
|
13393
|
+
seq.start(options.startStep ?? 0);
|
|
13391
13394
|
}
|
|
13392
13395
|
} catch (err2) {
|
|
13393
13396
|
stop();
|
package/dist/index.mjs
CHANGED
|
@@ -3425,7 +3425,7 @@ var playPlacements = (placements, options) => {
|
|
|
3425
3425
|
const seq = createSequencer({
|
|
3426
3426
|
getTracks: () => seqTracks,
|
|
3427
3427
|
getBpm: () => bpm,
|
|
3428
|
-
getPlayStartStep: () => 0,
|
|
3428
|
+
getPlayStartStep: () => options.startStep ?? 0,
|
|
3429
3429
|
getDrumPattern: () => drumPattern,
|
|
3430
3430
|
getSoloTrackId: () => null,
|
|
3431
3431
|
getLoop: () => options.loop ?? false,
|
|
@@ -3471,7 +3471,7 @@ var playPlacements = (placements, options) => {
|
|
|
3471
3471
|
if (ctx.state === "suspended") resumes.push(ctx.resume());
|
|
3472
3472
|
if (resumes.length > 0) await Promise.all(resumes);
|
|
3473
3473
|
if (!playing) return;
|
|
3474
|
-
seq.start(0);
|
|
3474
|
+
seq.start(options.startStep ?? 0);
|
|
3475
3475
|
})();
|
|
3476
3476
|
const stop = () => {
|
|
3477
3477
|
if (!playing) return;
|
|
@@ -13119,7 +13119,7 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13119
13119
|
const seq = createSequencer({
|
|
13120
13120
|
getTracks: () => seqTracks,
|
|
13121
13121
|
getBpm: () => bpm,
|
|
13122
|
-
getPlayStartStep: () => 0,
|
|
13122
|
+
getPlayStartStep: () => options.startStep ?? 0,
|
|
13123
13123
|
getDrumPattern: () => drumPattern,
|
|
13124
13124
|
getSoloTrackId: () => null,
|
|
13125
13125
|
getLoop: () => options.loop ?? false,
|
|
@@ -13130,7 +13130,10 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13130
13130
|
const namedIdx = TRACK_ID_BY_INDEX2.indexOf(
|
|
13131
13131
|
e.trackId
|
|
13132
13132
|
);
|
|
13133
|
-
|
|
13133
|
+
let trackIdx = namedIdx >= 0 ? namedIdx : Number(e.trackId);
|
|
13134
|
+
if (Number.isNaN(trackIdx) && e.trackId.startsWith("t")) {
|
|
13135
|
+
trackIdx = Number(e.trackId.slice(1));
|
|
13136
|
+
}
|
|
13134
13137
|
if (lyricTracks.has(trackIdx)) return;
|
|
13135
13138
|
options.onPlayNote?.(e);
|
|
13136
13139
|
synth?.playNote(e);
|
|
@@ -13217,7 +13220,7 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13217
13220
|
Object.fromEntries([...customVocalByKey].map(([k, d]) => [k, d.url]))
|
|
13218
13221
|
);
|
|
13219
13222
|
}
|
|
13220
|
-
const streamTracks = buildStreamTracks(0);
|
|
13223
|
+
const streamTracks = buildStreamTracks(options.startStep ?? 0);
|
|
13221
13224
|
await voices.loadModels(streamTracks.map((t) => t.model));
|
|
13222
13225
|
if (!playing || destroyed) {
|
|
13223
13226
|
return playback;
|
|
@@ -13257,14 +13260,14 @@ var playSingingMML = async (mml, options = {}) => {
|
|
|
13257
13260
|
loopStartSec = loopStartStep * secondsPerStep;
|
|
13258
13261
|
loopLengthSec = (loopEndStep - loopStartStep) * secondsPerStep;
|
|
13259
13262
|
}
|
|
13260
|
-
seq.start(0);
|
|
13263
|
+
seq.start(options.startStep ?? 0);
|
|
13261
13264
|
voices.setVolume(trackVolume / 100 * (masterVolume / 100));
|
|
13262
13265
|
voices.startStream(streamTracks, seq.getStartTime(), {
|
|
13263
13266
|
loopLengthSec,
|
|
13264
13267
|
loopStartSec
|
|
13265
13268
|
});
|
|
13266
13269
|
} else {
|
|
13267
|
-
seq.start(0);
|
|
13270
|
+
seq.start(options.startStep ?? 0);
|
|
13268
13271
|
}
|
|
13269
13272
|
} catch (err2) {
|
|
13270
13273
|
stop();
|
package/package.json
CHANGED