@onjmin/dtm 0.1.69 → 0.1.71
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.js +62 -30
- package/dist/index.mjs +62 -30
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -13949,6 +13949,23 @@ var TRACK_ROLES = [
|
|
|
13949
13949
|
"t13",
|
|
13950
13950
|
"t14"
|
|
13951
13951
|
];
|
|
13952
|
+
var resolveTrackIdxAndRole = (trackId) => {
|
|
13953
|
+
const roleIdx = TRACK_ROLES.indexOf(trackId);
|
|
13954
|
+
if (roleIdx >= 0) {
|
|
13955
|
+
return { trackIdx: roleIdx, role: trackId };
|
|
13956
|
+
}
|
|
13957
|
+
if (trackId.startsWith("t")) {
|
|
13958
|
+
const parsed2 = Number(trackId.slice(1));
|
|
13959
|
+
const validIdx2 = Number.isNaN(parsed2) ? 0 : parsed2;
|
|
13960
|
+
return {
|
|
13961
|
+
trackIdx: validIdx2,
|
|
13962
|
+
role: TRACK_ROLES[validIdx2] ?? `t${validIdx2}`
|
|
13963
|
+
};
|
|
13964
|
+
}
|
|
13965
|
+
const parsed = Number(trackId);
|
|
13966
|
+
const validIdx = Number.isNaN(parsed) ? 0 : parsed;
|
|
13967
|
+
return { trackIdx: validIdx, role: TRACK_ROLES[validIdx] ?? `t${validIdx}` };
|
|
13968
|
+
};
|
|
13952
13969
|
var resolveDefaultVoiceWorkerUrl = () => {
|
|
13953
13970
|
try {
|
|
13954
13971
|
return new URL("./voice-worker.js", import_meta.url).href;
|
|
@@ -14205,7 +14222,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14205
14222
|
}
|
|
14206
14223
|
}
|
|
14207
14224
|
const playNote4 = (e) => {
|
|
14208
|
-
const trackIdx =
|
|
14225
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14209
14226
|
const overrideKey = trackIdx >= 0 ? trackInstOverrides.get(trackIdx) : void 0;
|
|
14210
14227
|
let sfInst;
|
|
14211
14228
|
if (overrideKey) {
|
|
@@ -14213,7 +14230,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14213
14230
|
} else {
|
|
14214
14231
|
sfInst = resolveSoundFont(
|
|
14215
14232
|
editorPreset,
|
|
14216
|
-
|
|
14233
|
+
role,
|
|
14217
14234
|
isAdvancedMode ? "advanced" : "simple"
|
|
14218
14235
|
);
|
|
14219
14236
|
}
|
|
@@ -14512,19 +14529,19 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14512
14529
|
loadPlayerTrackInstruments()
|
|
14513
14530
|
]);
|
|
14514
14531
|
const playPlayerNote = (e) => {
|
|
14515
|
-
const
|
|
14516
|
-
const overrideKey = playerTrackInstKeys.get(
|
|
14532
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14533
|
+
const overrideKey = playerTrackInstKeys.get(trackIdx);
|
|
14517
14534
|
let sfInst;
|
|
14518
14535
|
if (overrideKey) {
|
|
14519
14536
|
sfInst = soundFonts.get(overrideKey);
|
|
14520
14537
|
} else {
|
|
14521
|
-
const
|
|
14522
|
-
|
|
14538
|
+
const roleFromIdx = getRoleForTrackIndex(
|
|
14539
|
+
trackIdx,
|
|
14523
14540
|
isAdvancedMode ? "advanced" : "simple"
|
|
14524
14541
|
);
|
|
14525
14542
|
sfInst = resolveSoundFont(
|
|
14526
14543
|
playerPreset,
|
|
14527
|
-
|
|
14544
|
+
roleFromIdx,
|
|
14528
14545
|
isAdvancedMode ? "advanced" : "simple"
|
|
14529
14546
|
);
|
|
14530
14547
|
}
|
|
@@ -14549,34 +14566,50 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14549
14566
|
});
|
|
14550
14567
|
};
|
|
14551
14568
|
const playSingingMMLInstance = (mml, opts = {}) => {
|
|
14552
|
-
const
|
|
14553
|
-
const
|
|
14554
|
-
|
|
14555
|
-
);
|
|
14556
|
-
const
|
|
14557
|
-
|
|
14558
|
-
|
|
14559
|
-
|
|
14560
|
-
|
|
14561
|
-
isAdvancedMode ? "advanced" : "simple"
|
|
14569
|
+
const parsed = parseMML(mml, {});
|
|
14570
|
+
const meta = parsed.meta ?? {};
|
|
14571
|
+
const playerPreset = meta.instrument && INSTRUMENT_PRESETS[meta.instrument] ? meta.instrument : defaultPreset;
|
|
14572
|
+
const isAdvancedMode = meta.mode === "advanced" || parsed.placements.some((p) => p.trackIndex >= 4);
|
|
14573
|
+
const trackIndices = [
|
|
14574
|
+
...new Set(parsed.placements.map((p) => p.trackIndex))
|
|
14575
|
+
];
|
|
14576
|
+
const trackIds = trackIndices.map(
|
|
14577
|
+
(idx) => getRoleForTrackIndex(idx, isAdvancedMode ? "advanced" : "simple")
|
|
14562
14578
|
);
|
|
14563
|
-
const
|
|
14564
|
-
|
|
14565
|
-
|
|
14566
|
-
|
|
14579
|
+
const loadTrackIds = trackIds.length > 0 ? trackIds : [...TRACK_ROLES];
|
|
14580
|
+
const playerTrackInstKeys = /* @__PURE__ */ new Map();
|
|
14581
|
+
const loadPlayerTrackInstruments = async () => {
|
|
14582
|
+
if (!meta.trackInstruments) return;
|
|
14583
|
+
await listReady;
|
|
14584
|
+
for (const [idxStr, name] of Object.entries(meta.trackInstruments)) {
|
|
14585
|
+
const key = resolveNameToKey(name);
|
|
14586
|
+
if (!key) continue;
|
|
14587
|
+
playerTrackInstKeys.set(Number(idxStr), key);
|
|
14588
|
+
await loadInstrument(key);
|
|
14589
|
+
}
|
|
14590
|
+
};
|
|
14591
|
+
void Promise.all([
|
|
14592
|
+
loadPreset(
|
|
14567
14593
|
playerPreset,
|
|
14568
|
-
|
|
14594
|
+
loadTrackIds,
|
|
14569
14595
|
isAdvancedMode ? "advanced" : "simple"
|
|
14570
|
-
)
|
|
14571
|
-
|
|
14572
|
-
|
|
14573
|
-
|
|
14574
|
-
|
|
14596
|
+
),
|
|
14597
|
+
loadPlayerTrackInstruments()
|
|
14598
|
+
]);
|
|
14599
|
+
const playPlayerNote = (e) => {
|
|
14600
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14601
|
+
const overrideKey = playerTrackInstKeys.get(trackIdx);
|
|
14602
|
+
let sfInst;
|
|
14603
|
+
if (overrideKey) {
|
|
14604
|
+
sfInst = soundFonts.get(overrideKey);
|
|
14605
|
+
} else {
|
|
14606
|
+
const roleFromIdx = getRoleForTrackIndex(
|
|
14607
|
+
trackIdx,
|
|
14575
14608
|
isAdvancedMode ? "advanced" : "simple"
|
|
14576
14609
|
);
|
|
14577
14610
|
sfInst = resolveSoundFont(
|
|
14578
14611
|
playerPreset,
|
|
14579
|
-
|
|
14612
|
+
roleFromIdx,
|
|
14580
14613
|
isAdvancedMode ? "advanced" : "simple"
|
|
14581
14614
|
);
|
|
14582
14615
|
}
|
|
@@ -14602,8 +14635,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14602
14635
|
});
|
|
14603
14636
|
};
|
|
14604
14637
|
const playNoteEvent = (e) => {
|
|
14605
|
-
const
|
|
14606
|
-
const role = TRACK_ROLES[idx] ?? "melody";
|
|
14638
|
+
const { role } = resolveTrackIdxAndRole(e.trackId);
|
|
14607
14639
|
let sfInst = resolveSoundFont(defaultPreset, role, "simple");
|
|
14608
14640
|
if (!sfInst) {
|
|
14609
14641
|
void loadPreset(defaultPreset, [role], "simple");
|
package/dist/index.mjs
CHANGED
|
@@ -13825,6 +13825,23 @@ var TRACK_ROLES = [
|
|
|
13825
13825
|
"t13",
|
|
13826
13826
|
"t14"
|
|
13827
13827
|
];
|
|
13828
|
+
var resolveTrackIdxAndRole = (trackId) => {
|
|
13829
|
+
const roleIdx = TRACK_ROLES.indexOf(trackId);
|
|
13830
|
+
if (roleIdx >= 0) {
|
|
13831
|
+
return { trackIdx: roleIdx, role: trackId };
|
|
13832
|
+
}
|
|
13833
|
+
if (trackId.startsWith("t")) {
|
|
13834
|
+
const parsed2 = Number(trackId.slice(1));
|
|
13835
|
+
const validIdx2 = Number.isNaN(parsed2) ? 0 : parsed2;
|
|
13836
|
+
return {
|
|
13837
|
+
trackIdx: validIdx2,
|
|
13838
|
+
role: TRACK_ROLES[validIdx2] ?? `t${validIdx2}`
|
|
13839
|
+
};
|
|
13840
|
+
}
|
|
13841
|
+
const parsed = Number(trackId);
|
|
13842
|
+
const validIdx = Number.isNaN(parsed) ? 0 : parsed;
|
|
13843
|
+
return { trackIdx: validIdx, role: TRACK_ROLES[validIdx] ?? `t${validIdx}` };
|
|
13844
|
+
};
|
|
13828
13845
|
var resolveDefaultVoiceWorkerUrl = () => {
|
|
13829
13846
|
try {
|
|
13830
13847
|
return new URL("./voice-worker.js", import.meta.url).href;
|
|
@@ -14081,7 +14098,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14081
14098
|
}
|
|
14082
14099
|
}
|
|
14083
14100
|
const playNote4 = (e) => {
|
|
14084
|
-
const trackIdx =
|
|
14101
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14085
14102
|
const overrideKey = trackIdx >= 0 ? trackInstOverrides.get(trackIdx) : void 0;
|
|
14086
14103
|
let sfInst;
|
|
14087
14104
|
if (overrideKey) {
|
|
@@ -14089,7 +14106,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14089
14106
|
} else {
|
|
14090
14107
|
sfInst = resolveSoundFont(
|
|
14091
14108
|
editorPreset,
|
|
14092
|
-
|
|
14109
|
+
role,
|
|
14093
14110
|
isAdvancedMode ? "advanced" : "simple"
|
|
14094
14111
|
);
|
|
14095
14112
|
}
|
|
@@ -14388,19 +14405,19 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14388
14405
|
loadPlayerTrackInstruments()
|
|
14389
14406
|
]);
|
|
14390
14407
|
const playPlayerNote = (e) => {
|
|
14391
|
-
const
|
|
14392
|
-
const overrideKey = playerTrackInstKeys.get(
|
|
14408
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14409
|
+
const overrideKey = playerTrackInstKeys.get(trackIdx);
|
|
14393
14410
|
let sfInst;
|
|
14394
14411
|
if (overrideKey) {
|
|
14395
14412
|
sfInst = soundFonts.get(overrideKey);
|
|
14396
14413
|
} else {
|
|
14397
|
-
const
|
|
14398
|
-
|
|
14414
|
+
const roleFromIdx = getRoleForTrackIndex(
|
|
14415
|
+
trackIdx,
|
|
14399
14416
|
isAdvancedMode ? "advanced" : "simple"
|
|
14400
14417
|
);
|
|
14401
14418
|
sfInst = resolveSoundFont(
|
|
14402
14419
|
playerPreset,
|
|
14403
|
-
|
|
14420
|
+
roleFromIdx,
|
|
14404
14421
|
isAdvancedMode ? "advanced" : "simple"
|
|
14405
14422
|
);
|
|
14406
14423
|
}
|
|
@@ -14425,34 +14442,50 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14425
14442
|
});
|
|
14426
14443
|
};
|
|
14427
14444
|
const playSingingMMLInstance = (mml, opts = {}) => {
|
|
14428
|
-
const
|
|
14429
|
-
const
|
|
14430
|
-
|
|
14431
|
-
);
|
|
14432
|
-
const
|
|
14433
|
-
|
|
14434
|
-
|
|
14435
|
-
|
|
14436
|
-
|
|
14437
|
-
isAdvancedMode ? "advanced" : "simple"
|
|
14445
|
+
const parsed = parseMML(mml, {});
|
|
14446
|
+
const meta = parsed.meta ?? {};
|
|
14447
|
+
const playerPreset = meta.instrument && INSTRUMENT_PRESETS[meta.instrument] ? meta.instrument : defaultPreset;
|
|
14448
|
+
const isAdvancedMode = meta.mode === "advanced" || parsed.placements.some((p) => p.trackIndex >= 4);
|
|
14449
|
+
const trackIndices = [
|
|
14450
|
+
...new Set(parsed.placements.map((p) => p.trackIndex))
|
|
14451
|
+
];
|
|
14452
|
+
const trackIds = trackIndices.map(
|
|
14453
|
+
(idx) => getRoleForTrackIndex(idx, isAdvancedMode ? "advanced" : "simple")
|
|
14438
14454
|
);
|
|
14439
|
-
const
|
|
14440
|
-
|
|
14441
|
-
|
|
14442
|
-
|
|
14455
|
+
const loadTrackIds = trackIds.length > 0 ? trackIds : [...TRACK_ROLES];
|
|
14456
|
+
const playerTrackInstKeys = /* @__PURE__ */ new Map();
|
|
14457
|
+
const loadPlayerTrackInstruments = async () => {
|
|
14458
|
+
if (!meta.trackInstruments) return;
|
|
14459
|
+
await listReady;
|
|
14460
|
+
for (const [idxStr, name] of Object.entries(meta.trackInstruments)) {
|
|
14461
|
+
const key = resolveNameToKey(name);
|
|
14462
|
+
if (!key) continue;
|
|
14463
|
+
playerTrackInstKeys.set(Number(idxStr), key);
|
|
14464
|
+
await loadInstrument(key);
|
|
14465
|
+
}
|
|
14466
|
+
};
|
|
14467
|
+
void Promise.all([
|
|
14468
|
+
loadPreset(
|
|
14443
14469
|
playerPreset,
|
|
14444
|
-
|
|
14470
|
+
loadTrackIds,
|
|
14445
14471
|
isAdvancedMode ? "advanced" : "simple"
|
|
14446
|
-
)
|
|
14447
|
-
|
|
14448
|
-
|
|
14449
|
-
|
|
14450
|
-
|
|
14472
|
+
),
|
|
14473
|
+
loadPlayerTrackInstruments()
|
|
14474
|
+
]);
|
|
14475
|
+
const playPlayerNote = (e) => {
|
|
14476
|
+
const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
|
|
14477
|
+
const overrideKey = playerTrackInstKeys.get(trackIdx);
|
|
14478
|
+
let sfInst;
|
|
14479
|
+
if (overrideKey) {
|
|
14480
|
+
sfInst = soundFonts.get(overrideKey);
|
|
14481
|
+
} else {
|
|
14482
|
+
const roleFromIdx = getRoleForTrackIndex(
|
|
14483
|
+
trackIdx,
|
|
14451
14484
|
isAdvancedMode ? "advanced" : "simple"
|
|
14452
14485
|
);
|
|
14453
14486
|
sfInst = resolveSoundFont(
|
|
14454
14487
|
playerPreset,
|
|
14455
|
-
|
|
14488
|
+
roleFromIdx,
|
|
14456
14489
|
isAdvancedMode ? "advanced" : "simple"
|
|
14457
14490
|
);
|
|
14458
14491
|
}
|
|
@@ -14478,8 +14511,7 @@ var createDtmStudio = async (options = {}) => {
|
|
|
14478
14511
|
});
|
|
14479
14512
|
};
|
|
14480
14513
|
const playNoteEvent = (e) => {
|
|
14481
|
-
const
|
|
14482
|
-
const role = TRACK_ROLES[idx] ?? "melody";
|
|
14514
|
+
const { role } = resolveTrackIdxAndRole(e.trackId);
|
|
14483
14515
|
let sfInst = resolveSoundFont(defaultPreset, role, "simple");
|
|
14484
14516
|
if (!sfInst) {
|
|
14485
14517
|
void loadPreset(defaultPreset, [role], "simple");
|
package/package.json
CHANGED