@onjmin/dtm 0.1.79 → 0.1.81

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
@@ -1862,6 +1862,10 @@ type DtmStudio = {
1862
1862
  * getDaw() で現在の DawInstance を取得できる(mountPresetSelect の getDaw に渡せる)。
1863
1863
  */
1864
1864
  mountModeSwitch: (target: HTMLElement, options: ModeSwitchOptions) => ModeSwitchInstance;
1865
+ /** マスタ音量を 0-100 で変更する。 */
1866
+ setMasterVolume: (volume: number) => void;
1867
+ /** マスタ音量を 0-100 で変更する(`setMasterVolume` のエイリアス)。 */
1868
+ setVolume: (volume: number) => void;
1865
1869
  /** AudioContext を閉じ、生成物を破棄する。 */
1866
1870
  dispose: () => void;
1867
1871
  };
package/dist/index.d.ts CHANGED
@@ -1862,6 +1862,10 @@ type DtmStudio = {
1862
1862
  * getDaw() で現在の DawInstance を取得できる(mountPresetSelect の getDaw に渡せる)。
1863
1863
  */
1864
1864
  mountModeSwitch: (target: HTMLElement, options: ModeSwitchOptions) => ModeSwitchInstance;
1865
+ /** マスタ音量を 0-100 で変更する。 */
1866
+ setMasterVolume: (volume: number) => void;
1867
+ /** マスタ音量を 0-100 で変更する(`setMasterVolume` のエイリアス)。 */
1868
+ setVolume: (volume: number) => void;
1865
1869
  /** AudioContext を閉じ、生成物を破棄する。 */
1866
1870
  dispose: () => void;
1867
1871
  };
package/dist/index.js CHANGED
@@ -7062,9 +7062,10 @@ var loadDrumFont = (ctx, pitch) => {
7062
7062
  return p;
7063
7063
  };
7064
7064
  var BAR_SEP = /[|ll→]/;
7065
+ var toHalfWidth = (str) => str.replace(/[!-~]/g, (ch) => String.fromCharCode(ch.charCodeAt(0) - 65248)).replace(/ /g, " ");
7065
7066
  var NON_EVENT_RE = /^[=_]$|^N\.C\.$|^N$/i;
7066
7067
  var buildDisplayLines = (chords, eventsCount) => {
7067
- const rawLines = chords.split("\n").map((l) => l.trim()).filter((l) => l);
7068
+ const rawLines = toHalfWidth(chords).split("\n").map((l) => l.trim()).filter((l) => l);
7068
7069
  const displayLines = [];
7069
7070
  let eventCounter = 0;
7070
7071
  let colorIdx = 0;
@@ -7798,7 +7799,7 @@ var mountChordPlayer = (target, chords, options = {}) => {
7798
7799
  if (beatAbsSec >= now - 0.01) {
7799
7800
  const isDownbeat = beat % 4 === 0;
7800
7801
  const pitch = isDownbeat ? DRUM_KEYS.kick : DRUM_KEYS.hihatClosed;
7801
- const velocity = isDownbeat ? 0.7 : 0.45;
7802
+ const velocity = (isDownbeat ? 0.7 : 0.45) * (masterVolume / 100);
7802
7803
  const wafDrum = _drumCache.get(pitch);
7803
7804
  if (wafDrum) {
7804
7805
  wafDrum.play({
@@ -14027,7 +14028,7 @@ var createDtmStudio = async (options = {}) => {
14027
14028
  masterGain.connect(audioCtx.destination);
14028
14029
  const drumGain = audioCtx.createGain();
14029
14030
  drumGain.gain.value = options.drumVolume ?? 1;
14030
- drumGain.connect(audioCtx.destination);
14031
+ drumGain.connect(masterGain);
14031
14032
  const resumeAudio = () => {
14032
14033
  if (audioCtx.state === "closed") return Promise.resolve();
14033
14034
  return audioCtx.resume();
@@ -14793,6 +14794,10 @@ var createDtmStudio = async (options = {}) => {
14793
14794
  mountedEditors.length = 0;
14794
14795
  void audioCtx.close();
14795
14796
  };
14797
+ const setMasterVolume = (volume) => {
14798
+ const g = Math.max(0, Math.min(100, volume)) / 100;
14799
+ masterGain.gain.setValueAtTime(g, audioCtx.currentTime);
14800
+ };
14796
14801
  return {
14797
14802
  audioContext: audioCtx,
14798
14803
  singingVoices,
@@ -14809,6 +14814,8 @@ var createDtmStudio = async (options = {}) => {
14809
14814
  defaultPreset,
14810
14815
  mountPresetSelect,
14811
14816
  mountModeSwitch,
14817
+ setMasterVolume,
14818
+ setVolume: setMasterVolume,
14812
14819
  dispose
14813
14820
  };
14814
14821
  };
package/dist/index.mjs CHANGED
@@ -6939,9 +6939,10 @@ var loadDrumFont = (ctx, pitch) => {
6939
6939
  return p;
6940
6940
  };
6941
6941
  var BAR_SEP = /[|ll→]/;
6942
+ var toHalfWidth = (str) => str.replace(/[!-~]/g, (ch) => String.fromCharCode(ch.charCodeAt(0) - 65248)).replace(/ /g, " ");
6942
6943
  var NON_EVENT_RE = /^[=_]$|^N\.C\.$|^N$/i;
6943
6944
  var buildDisplayLines = (chords, eventsCount) => {
6944
- const rawLines = chords.split("\n").map((l) => l.trim()).filter((l) => l);
6945
+ const rawLines = toHalfWidth(chords).split("\n").map((l) => l.trim()).filter((l) => l);
6945
6946
  const displayLines = [];
6946
6947
  let eventCounter = 0;
6947
6948
  let colorIdx = 0;
@@ -7675,7 +7676,7 @@ var mountChordPlayer = (target, chords, options = {}) => {
7675
7676
  if (beatAbsSec >= now - 0.01) {
7676
7677
  const isDownbeat = beat % 4 === 0;
7677
7678
  const pitch = isDownbeat ? DRUM_KEYS.kick : DRUM_KEYS.hihatClosed;
7678
- const velocity = isDownbeat ? 0.7 : 0.45;
7679
+ const velocity = (isDownbeat ? 0.7 : 0.45) * (masterVolume / 100);
7679
7680
  const wafDrum = _drumCache.get(pitch);
7680
7681
  if (wafDrum) {
7681
7682
  wafDrum.play({
@@ -13903,7 +13904,7 @@ var createDtmStudio = async (options = {}) => {
13903
13904
  masterGain.connect(audioCtx.destination);
13904
13905
  const drumGain = audioCtx.createGain();
13905
13906
  drumGain.gain.value = options.drumVolume ?? 1;
13906
- drumGain.connect(audioCtx.destination);
13907
+ drumGain.connect(masterGain);
13907
13908
  const resumeAudio = () => {
13908
13909
  if (audioCtx.state === "closed") return Promise.resolve();
13909
13910
  return audioCtx.resume();
@@ -14669,6 +14670,10 @@ var createDtmStudio = async (options = {}) => {
14669
14670
  mountedEditors.length = 0;
14670
14671
  void audioCtx.close();
14671
14672
  };
14673
+ const setMasterVolume = (volume) => {
14674
+ const g = Math.max(0, Math.min(100, volume)) / 100;
14675
+ masterGain.gain.setValueAtTime(g, audioCtx.currentTime);
14676
+ };
14672
14677
  return {
14673
14678
  audioContext: audioCtx,
14674
14679
  singingVoices,
@@ -14685,6 +14690,8 @@ var createDtmStudio = async (options = {}) => {
14685
14690
  defaultPreset,
14686
14691
  mountPresetSelect,
14687
14692
  mountModeSwitch,
14693
+ setMasterVolume,
14694
+ setVolume: setMasterVolume,
14688
14695
  dispose
14689
14696
  };
14690
14697
  };
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.79",
5
+ "version": "0.1.81",
6
6
  "description": "MMLを中間言語に用いた、モバイルファーストなDAW / ピアノロール打ち込みコンポーネント",
7
7
  "homepage": "https://onjmin.github.io/dtm",
8
8
  "repository": {