@onjmin/dtm 0.1.70 → 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 CHANGED
@@ -14222,7 +14222,7 @@ var createDtmStudio = async (options = {}) => {
14222
14222
  }
14223
14223
  }
14224
14224
  const playNote4 = (e) => {
14225
- const trackIdx = tracks.findIndex((t) => t.id === e.trackId);
14225
+ const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
14226
14226
  const overrideKey = trackIdx >= 0 ? trackInstOverrides.get(trackIdx) : void 0;
14227
14227
  let sfInst;
14228
14228
  if (overrideKey) {
@@ -14230,7 +14230,7 @@ var createDtmStudio = async (options = {}) => {
14230
14230
  } else {
14231
14231
  sfInst = resolveSoundFont(
14232
14232
  editorPreset,
14233
- e.trackId,
14233
+ role,
14234
14234
  isAdvancedMode ? "advanced" : "simple"
14235
14235
  );
14236
14236
  }
@@ -14566,33 +14566,50 @@ var createDtmStudio = async (options = {}) => {
14566
14566
  });
14567
14567
  };
14568
14568
  const playSingingMMLInstance = (mml, opts = {}) => {
14569
- const { placements } = parseMML(mml);
14570
- const trackIndices = [...new Set(placements.map((p) => p.trackIndex))].sort(
14571
- (a, b) => a - b
14572
- );
14573
- const isAdvancedMode = trackIndices.some((idx) => idx >= 4);
14574
- const playerPreset = defaultPreset;
14575
- void loadPreset(
14576
- playerPreset,
14577
- trackIndices.map(String),
14578
- 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")
14579
14578
  );
14580
- const playPlayerNote = (e) => {
14581
- const { role } = resolveTrackIdxAndRole(e.trackId);
14582
- let sfInst = resolveSoundFont(
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(
14583
14593
  playerPreset,
14584
- role,
14594
+ loadTrackIds,
14585
14595
  isAdvancedMode ? "advanced" : "simple"
14586
- );
14587
- if (!sfInst) {
14588
- void loadPreset(
14589
- playerPreset,
14590
- [role],
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,
14591
14608
  isAdvancedMode ? "advanced" : "simple"
14592
14609
  );
14593
14610
  sfInst = resolveSoundFont(
14594
14611
  playerPreset,
14595
- role,
14612
+ roleFromIdx,
14596
14613
  isAdvancedMode ? "advanced" : "simple"
14597
14614
  );
14598
14615
  }
package/dist/index.mjs CHANGED
@@ -14098,7 +14098,7 @@ var createDtmStudio = async (options = {}) => {
14098
14098
  }
14099
14099
  }
14100
14100
  const playNote4 = (e) => {
14101
- const trackIdx = tracks.findIndex((t) => t.id === e.trackId);
14101
+ const { trackIdx, role } = resolveTrackIdxAndRole(e.trackId);
14102
14102
  const overrideKey = trackIdx >= 0 ? trackInstOverrides.get(trackIdx) : void 0;
14103
14103
  let sfInst;
14104
14104
  if (overrideKey) {
@@ -14106,7 +14106,7 @@ var createDtmStudio = async (options = {}) => {
14106
14106
  } else {
14107
14107
  sfInst = resolveSoundFont(
14108
14108
  editorPreset,
14109
- e.trackId,
14109
+ role,
14110
14110
  isAdvancedMode ? "advanced" : "simple"
14111
14111
  );
14112
14112
  }
@@ -14442,33 +14442,50 @@ var createDtmStudio = async (options = {}) => {
14442
14442
  });
14443
14443
  };
14444
14444
  const playSingingMMLInstance = (mml, opts = {}) => {
14445
- const { placements } = parseMML(mml);
14446
- const trackIndices = [...new Set(placements.map((p) => p.trackIndex))].sort(
14447
- (a, b) => a - b
14448
- );
14449
- const isAdvancedMode = trackIndices.some((idx) => idx >= 4);
14450
- const playerPreset = defaultPreset;
14451
- void loadPreset(
14452
- playerPreset,
14453
- trackIndices.map(String),
14454
- 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")
14455
14454
  );
14456
- const playPlayerNote = (e) => {
14457
- const { role } = resolveTrackIdxAndRole(e.trackId);
14458
- let sfInst = resolveSoundFont(
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(
14459
14469
  playerPreset,
14460
- role,
14470
+ loadTrackIds,
14461
14471
  isAdvancedMode ? "advanced" : "simple"
14462
- );
14463
- if (!sfInst) {
14464
- void loadPreset(
14465
- playerPreset,
14466
- [role],
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,
14467
14484
  isAdvancedMode ? "advanced" : "simple"
14468
14485
  );
14469
14486
  sfInst = resolveSoundFont(
14470
14487
  playerPreset,
14471
- role,
14488
+ roleFromIdx,
14472
14489
  isAdvancedMode ? "advanced" : "simple"
14473
14490
  );
14474
14491
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "onjmin",
3
3
  "license": "MIT",
4
4
  "name": "@onjmin/dtm",
5
- "version": "0.1.70",
5
+ "version": "0.1.71",
6
6
  "description": "MMLを中間言語に用いた、モバイルファーストなDAW / ピアノロール打ち込みコンポーネント",
7
7
  "homepage": "https://onjmin.github.io/dtm",
8
8
  "repository": {