audio-mixer-ui 1.1.0 → 1.1.2
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/audio-mixer-ui.js +185 -155
- package/dist/audio-mixer-ui.umd.cjs +7 -7
- package/package.json +3 -3
package/dist/audio-mixer-ui.js
CHANGED
|
@@ -46,16 +46,16 @@ var Dl = function() {
|
|
|
46
46
|
}, l;
|
|
47
47
|
}()
|
|
48
48
|
);
|
|
49
|
-
}(), Nl = typeof window < "u" && typeof document < "u" && window.document === document,
|
|
49
|
+
}(), Nl = typeof window < "u" && typeof document < "u" && window.document === document, cl = function() {
|
|
50
50
|
return typeof global < "u" && global.Math === Math ? global : typeof self < "u" && self.Math === Math ? self : typeof window < "u" && window.Math === Math ? window : Function("return this")();
|
|
51
51
|
}(), mU = function() {
|
|
52
|
-
return typeof requestAnimationFrame == "function" ? requestAnimationFrame.bind(
|
|
52
|
+
return typeof requestAnimationFrame == "function" ? requestAnimationFrame.bind(cl) : function(d) {
|
|
53
53
|
return setTimeout(function() {
|
|
54
54
|
return d(Date.now());
|
|
55
55
|
}, 1e3 / 60);
|
|
56
56
|
};
|
|
57
|
-
}(),
|
|
58
|
-
function
|
|
57
|
+
}(), cU = 2;
|
|
58
|
+
function bU(d, l) {
|
|
59
59
|
var U = !1, F = !1, t = 0;
|
|
60
60
|
function Z() {
|
|
61
61
|
U && (U = !1, d()), F && Q();
|
|
@@ -66,7 +66,7 @@ function cU(d, l) {
|
|
|
66
66
|
function Q() {
|
|
67
67
|
var n = Date.now();
|
|
68
68
|
if (U) {
|
|
69
|
-
if (n - t <
|
|
69
|
+
if (n - t < cU)
|
|
70
70
|
return;
|
|
71
71
|
F = !0;
|
|
72
72
|
} else
|
|
@@ -79,7 +79,7 @@ var WU = 20, sU = ["top", "right", "bottom", "left", "width", "height", "size",
|
|
|
79
79
|
/** @class */
|
|
80
80
|
function() {
|
|
81
81
|
function d() {
|
|
82
|
-
this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh =
|
|
82
|
+
this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = bU(this.refresh.bind(this), WU);
|
|
83
83
|
}
|
|
84
84
|
return d.prototype.addObserver = function(l) {
|
|
85
85
|
~this.observers_.indexOf(l) || this.observers_.push(l), this.connected_ || this.connect_();
|
|
@@ -127,9 +127,9 @@ var WU = 20, sU = ["top", "right", "bottom", "left", "width", "height", "size",
|
|
|
127
127
|
return d;
|
|
128
128
|
}, Zl = function(d) {
|
|
129
129
|
var l = d && d.ownerDocument && d.ownerDocument.defaultView;
|
|
130
|
-
return l ||
|
|
130
|
+
return l || cl;
|
|
131
131
|
}, ql = ul(0, 0, 0, 0);
|
|
132
|
-
function
|
|
132
|
+
function bl(d) {
|
|
133
133
|
return parseFloat(d) || 0;
|
|
134
134
|
}
|
|
135
135
|
function Ll(d) {
|
|
@@ -137,13 +137,13 @@ function Ll(d) {
|
|
|
137
137
|
l[U - 1] = arguments[U];
|
|
138
138
|
return l.reduce(function(F, t) {
|
|
139
139
|
var Z = d["border-" + t + "-width"];
|
|
140
|
-
return F +
|
|
140
|
+
return F + bl(Z);
|
|
141
141
|
}, 0);
|
|
142
142
|
}
|
|
143
143
|
function BU(d) {
|
|
144
144
|
for (var l = ["top", "right", "bottom", "left"], U = {}, F = 0, t = l; F < t.length; F++) {
|
|
145
145
|
var Z = t[F], a = d["padding-" + Z];
|
|
146
|
-
U[Z] =
|
|
146
|
+
U[Z] = bl(a);
|
|
147
147
|
}
|
|
148
148
|
return U;
|
|
149
149
|
}
|
|
@@ -155,7 +155,7 @@ function JU(d) {
|
|
|
155
155
|
var l = d.clientWidth, U = d.clientHeight;
|
|
156
156
|
if (!l && !U)
|
|
157
157
|
return ql;
|
|
158
|
-
var F = Zl(d).getComputedStyle(d), t = BU(F), Z = t.left + t.right, a = t.top + t.bottom, Q =
|
|
158
|
+
var F = Zl(d).getComputedStyle(d), t = BU(F), Z = t.left + t.right, a = t.top + t.bottom, Q = bl(F.width), n = bl(F.height);
|
|
159
159
|
if (F.boxSizing === "border-box" && (Math.round(Q + Z) !== l && (Q -= Ll(F, "left", "right") + Z), Math.round(n + a) !== U && (n -= Ll(F, "top", "bottom") + a)), !GU(d)) {
|
|
160
160
|
var V = Math.round(Q + Z) - l, R = Math.round(n + a) - U;
|
|
161
161
|
Math.abs(V) !== 1 && (Q -= V), Math.abs(R) !== 1 && (n -= R);
|
|
@@ -285,7 +285,7 @@ var NU = (
|
|
|
285
285
|
};
|
|
286
286
|
});
|
|
287
287
|
var YU = function() {
|
|
288
|
-
return typeof
|
|
288
|
+
return typeof cl.ResizeObserver < "u" ? cl.ResizeObserver : wl;
|
|
289
289
|
}();
|
|
290
290
|
function Ul(d) {
|
|
291
291
|
const l = k(0), U = k(0);
|
|
@@ -341,12 +341,12 @@ const v = (d, l) => {
|
|
|
341
341
|
"2096b4c3": W.value,
|
|
342
342
|
"757f26aa": m.value,
|
|
343
343
|
"744b71b7": o.value,
|
|
344
|
-
d898db12:
|
|
344
|
+
d898db12: b.value,
|
|
345
345
|
"3a8d2f7c": J.value
|
|
346
346
|
}));
|
|
347
347
|
const l = d, U = w("root"), { width: F, height: t } = Ul(U), Z = X(() => Math.min(F.value, t.value)), a = X(() => Math.max(F.value, t.value)), Q = X(() => F.value > t.value), n = X(() => Q.value ? "h-slide" : "v-slide"), V = _(d, "value");
|
|
348
348
|
X(() => Math.pow(1 - V.value, 0.5) * 180 + 20), X(() => Math.pow(V.value, 0.5) * 180 + 20);
|
|
349
|
-
const R = X(() => Z.value * 0.8), e = X(() => Z.value * l.thumbLength * 0.8), m = X(() => (Q.value ? e : R).value + "px"), W = X(() => (Q.value ? R : e).value + "px"),
|
|
349
|
+
const R = X(() => Z.value * 0.8), e = X(() => Z.value * l.thumbLength * 0.8), m = X(() => (Q.value ? e : R).value + "px"), W = X(() => (Q.value ? R : e).value + "px"), b = X(() => Z.value * 0.1 + "px"), J = X(() => (a.value - e.value) * (V.value - l.min) / (l.max - l.min) + "px"), o = X(() => Q.value ? "90deg" : "0deg"), Y = k(!1), T = k(0), I = (i) => {
|
|
350
350
|
if (!U.value) return V.value;
|
|
351
351
|
const G = U.value.getBoundingClientRect(), L = i.clientX, tl = i.clientY;
|
|
352
352
|
let f;
|
|
@@ -2392,7 +2392,7 @@ class AU {
|
|
|
2392
2392
|
ticksPerBeat: l.ticksPerBeat
|
|
2393
2393
|
};
|
|
2394
2394
|
l.tracks.forEach((F, t) => {
|
|
2395
|
-
if (F.
|
|
2395
|
+
if (F.events.filter((Z) => Z.type === "text").forEach((Z) => {
|
|
2396
2396
|
const a = Z.text.toLowerCase();
|
|
2397
2397
|
(a.includes("compos") || a.includes("by")) && !U.composer && (U.composer = Z.text);
|
|
2398
2398
|
}), F.name) {
|
|
@@ -2436,8 +2436,8 @@ class AU {
|
|
|
2436
2436
|
let R;
|
|
2437
2437
|
R = n + U * 4 * Q.numerator / Q.denominator;
|
|
2438
2438
|
const e = Q.numerator, m = [], W = U * (4 / Q.denominator);
|
|
2439
|
-
for (let
|
|
2440
|
-
const J = n +
|
|
2439
|
+
for (let b = 0; b < e; b++) {
|
|
2440
|
+
const J = n + b * W, o = this._ticksToTime(J, l);
|
|
2441
2441
|
m.push(o);
|
|
2442
2442
|
}
|
|
2443
2443
|
Z.push({
|
|
@@ -2535,13 +2535,13 @@ class AU {
|
|
|
2535
2535
|
velocity: m.velocity
|
|
2536
2536
|
};
|
|
2537
2537
|
else if (m.type === "noteOff" && e[m.noteNumber]) {
|
|
2538
|
-
const W = e[m.noteNumber],
|
|
2538
|
+
const W = e[m.noteNumber], b = m.tick - W.tick;
|
|
2539
2539
|
t.push({
|
|
2540
2540
|
pitch: m.noteNumber,
|
|
2541
2541
|
name: this._midiNoteToName(m.noteNumber),
|
|
2542
2542
|
startTick: W.tick,
|
|
2543
2543
|
endTick: m.tick,
|
|
2544
|
-
duration:
|
|
2544
|
+
duration: b,
|
|
2545
2545
|
startTime: this._ticksToTime(W.tick, U),
|
|
2546
2546
|
endTime: this._ticksToTime(m.tick, U),
|
|
2547
2547
|
velocity: W.velocity,
|
|
@@ -2864,7 +2864,7 @@ class fU {
|
|
|
2864
2864
|
}
|
|
2865
2865
|
let e = Q[Z], m = e.sig[0];
|
|
2866
2866
|
for (; m < R && Z + 1 < Q.length; ) {
|
|
2867
|
-
const W = Q[Z + 1],
|
|
2867
|
+
const W = Q[Z + 1], b = [
|
|
2868
2868
|
e.sig[0] + W.sig[0],
|
|
2869
2869
|
// Total beats
|
|
2870
2870
|
e.sig[1]
|
|
@@ -2874,16 +2874,16 @@ class fU {
|
|
|
2874
2874
|
...W.beats || []
|
|
2875
2875
|
];
|
|
2876
2876
|
e = {
|
|
2877
|
-
sig:
|
|
2877
|
+
sig: b,
|
|
2878
2878
|
beats: J
|
|
2879
|
-
}, Q[Z] = e, Q.splice(Z + 1, 1), m =
|
|
2879
|
+
}, Q[Z] = e, Q.splice(Z + 1, 1), m = b[0];
|
|
2880
2880
|
}
|
|
2881
2881
|
if (m > R) {
|
|
2882
|
-
const W = R,
|
|
2882
|
+
const W = R, b = m - R, J = e.beats ? e.beats.slice(0, W) : [], o = e.beats ? e.beats.slice(W) : [], Y = {
|
|
2883
2883
|
sig: [W, e.sig[1]],
|
|
2884
2884
|
beats: J
|
|
2885
2885
|
}, T = {
|
|
2886
|
-
sig: [
|
|
2886
|
+
sig: [b, e.sig[1]],
|
|
2887
2887
|
beats: o
|
|
2888
2888
|
};
|
|
2889
2889
|
Q[Z] = Y, Q.splice(Z + 1, 0, T), e = Y;
|
|
@@ -2901,13 +2901,13 @@ class fU {
|
|
|
2901
2901
|
for (; a < l.length; ) {
|
|
2902
2902
|
const e = l[a], m = e.barNumber, W = t[m] !== void 0 ? t[m] : 4;
|
|
2903
2903
|
t[m] === void 0 && (t[m] = W);
|
|
2904
|
-
const
|
|
2904
|
+
const b = [];
|
|
2905
2905
|
for (let o = 0; o < W; o++)
|
|
2906
|
-
|
|
2906
|
+
b.push(R), R += V;
|
|
2907
2907
|
const J = {
|
|
2908
2908
|
sig: [W, 4],
|
|
2909
2909
|
// Default to quarter notes
|
|
2910
|
-
beats:
|
|
2910
|
+
beats: b
|
|
2911
2911
|
};
|
|
2912
2912
|
this._generateBeatsForBar(F, e, J, W), a++;
|
|
2913
2913
|
}
|
|
@@ -2963,7 +2963,7 @@ class Gl {
|
|
|
2963
2963
|
constructor(l = null, U, F = null, t = null) {
|
|
2964
2964
|
if (!U)
|
|
2965
2965
|
throw new Error("Parsed MIDI data is required");
|
|
2966
|
-
this.audioEngine = l, this._audioEngineReady = !!(l && l.isInitialized), this.instrumentMap = F || {}, this.parsedData = U, this._isPlaying = !1, this._currentTime = 0, this._totalDuration = 0, this.playbackSpeed = 1, this.partChannels = /* @__PURE__ */ new Map(), this.partOutputs = /* @__PURE__ */ new Map(), this.playbackStartTime = 0, this.lookAheadTime = 0.05, this.scheduleInterval = null, this.partNotePointers = /* @__PURE__ */ new Map(), this.partProgramPointers = /* @__PURE__ */ new Map(), this.eventBus = kl(), this.beatMapper = new fU(), this.beats = [], this.structureMetadata = t, this._calculateTotalDuration();
|
|
2966
|
+
this.audioEngine = l, this._audioEngineReady = !!(l && l.isInitialized), this.instrumentMap = F || {}, this.parsedData = U, this._isPlaying = !1, this._isPreScheduling = !1, this._currentTime = 0, this._totalDuration = 0, this.playbackSpeed = 1, this.partChannels = /* @__PURE__ */ new Map(), this.partOutputs = /* @__PURE__ */ new Map(), this.playbackStartTime = 0, this.lookAheadTime = 0.05, this.scheduleInterval = null, this.partNotePointers = /* @__PURE__ */ new Map(), this.partProgramPointers = /* @__PURE__ */ new Map(), this.eventBus = kl(), this.beatMapper = new fU(), this.beats = [], this.structureMetadata = t, this._calculateTotalDuration();
|
|
2967
2967
|
const Z = t || this._createDefaultStructureMetadata();
|
|
2968
2968
|
this.beats = this.beatMapper.mapBeats(U, Z), this._audioEngineReady && (this._setupPartChannels(), this._resetNotePointers(), this._resetProgramPointers());
|
|
2969
2969
|
}
|
|
@@ -3007,17 +3007,36 @@ class Gl {
|
|
|
3007
3007
|
throw new Error("Audio engine not ready. Call setAudioEngine() first.");
|
|
3008
3008
|
this._isPlaying || (this._isPlaying = !0, this.playbackStartTime = l - this._currentTime / this.playbackSpeed, this._resetNotePointers(), this._resetProgramPointers(), this._schedulePlayback(), this._startTimeUpdateLoop());
|
|
3009
3009
|
}
|
|
3010
|
+
/**
|
|
3011
|
+
* Begin pre-scheduling notes for a future start time (used during lead-in)
|
|
3012
|
+
* Starts the scheduling loop but doesn't mark as "playing" yet
|
|
3013
|
+
* @param {number} startTime - Audio context time when playback will begin
|
|
3014
|
+
*/
|
|
3015
|
+
beginPreScheduling(l) {
|
|
3016
|
+
if (!this._audioEngineReady)
|
|
3017
|
+
throw new Error("Audio engine not ready. Call setAudioEngine() first.");
|
|
3018
|
+
this._isPreScheduling || this._isPlaying || (this._isPreScheduling = !0, this.playbackStartTime = l - this._currentTime / this.playbackSpeed, this._resetNotePointers(), this._resetProgramPointers(), this._schedulePlayback());
|
|
3019
|
+
}
|
|
3020
|
+
/**
|
|
3021
|
+
* Transition from pre-scheduling to playing state
|
|
3022
|
+
* Called when lead-in completes and main playback begins
|
|
3023
|
+
*/
|
|
3024
|
+
markAsPlaying() {
|
|
3025
|
+
if (!this._isPreScheduling)
|
|
3026
|
+
throw new Error("Cannot mark as playing - not in pre-scheduling state");
|
|
3027
|
+
this._isPreScheduling = !1, this._isPlaying = !0, this._startTimeUpdateLoop();
|
|
3028
|
+
}
|
|
3010
3029
|
/**
|
|
3011
3030
|
* Pause playback (resumable)
|
|
3012
3031
|
*/
|
|
3013
3032
|
pause() {
|
|
3014
|
-
this._isPlaying && (this._isPlaying = !1, this._stopScheduling(), this._stopTimeUpdateLoop());
|
|
3033
|
+
!this._isPlaying && !this._isPreScheduling || (this._isPlaying = !1, this._isPreScheduling = !1, this._stopScheduling(), this._stopTimeUpdateLoop());
|
|
3015
3034
|
}
|
|
3016
3035
|
/**
|
|
3017
3036
|
* Stop playback and reset to beginning
|
|
3018
3037
|
*/
|
|
3019
3038
|
stop() {
|
|
3020
|
-
this._isPlaying = !1, this._currentTime = 0, this._stopScheduling(), this._stopTimeUpdateLoop(), this._resetNotePointers(), this._resetProgramPointers();
|
|
3039
|
+
this._isPlaying = !1, this._isPreScheduling = !1, this._currentTime = 0, this._stopScheduling(), this._stopTimeUpdateLoop(), this._resetNotePointers(), this._resetProgramPointers();
|
|
3021
3040
|
}
|
|
3022
3041
|
/**
|
|
3023
3042
|
* Skip to a specific time in seconds
|
|
@@ -3233,7 +3252,7 @@ class Gl {
|
|
|
3233
3252
|
*/
|
|
3234
3253
|
_startScheduleLoop() {
|
|
3235
3254
|
this.scheduleInterval || (this.scheduleInterval = setInterval(() => {
|
|
3236
|
-
if (!this._isPlaying) return;
|
|
3255
|
+
if (!this._isPlaying && !this._isPreScheduling) return;
|
|
3237
3256
|
const l = (this.audioEngine.audioContext.currentTime - this.playbackStartTime) * this.playbackSpeed, U = l + this.lookAheadTime;
|
|
3238
3257
|
for (const [F, t] of this.partChannels) {
|
|
3239
3258
|
const Z = this.parsedData.parts[F];
|
|
@@ -3444,9 +3463,13 @@ class _U {
|
|
|
3444
3463
|
this.parsedData = l.parsedData, this.instrumentMap = F, this._audioEngineReady && this._setMidiPlayer(l);
|
|
3445
3464
|
else if (l instanceof ArrayBuffer)
|
|
3446
3465
|
this.parsedData = await this._parser.parse(l, U), this.instrumentMap = F || this._createDefaultInstrumentMap(this.parsedData.parts), this._audioEngineReady && this._setupPlayerWithAudio();
|
|
3447
|
-
else if (l && typeof l == "object" && l.parts)
|
|
3448
|
-
this.parsedData = l,
|
|
3449
|
-
|
|
3466
|
+
else if (l && typeof l == "object" && l.parts) {
|
|
3467
|
+
if (this.parsedData = l, U) {
|
|
3468
|
+
const t = typeof U == "string" ? JSON.parse(U) : U;
|
|
3469
|
+
this.parsedData.structureMetadata = t;
|
|
3470
|
+
}
|
|
3471
|
+
this.instrumentMap = F || this._createDefaultInstrumentMap(l.parts), this._audioEngineReady && this._setupPlayerWithAudio();
|
|
3472
|
+
} else
|
|
3450
3473
|
throw new Error("Invalid input type. Expected MidiPlayer, parsed MIDI data, or ArrayBuffer");
|
|
3451
3474
|
}
|
|
3452
3475
|
/**
|
|
@@ -3996,7 +4019,9 @@ class _U {
|
|
|
3996
4019
|
async _startLeadIn(l) {
|
|
3997
4020
|
this.state = "lead-in";
|
|
3998
4021
|
const U = this.startupConfig.delayMs / 1e3;
|
|
3999
|
-
this.leadInStartTime = this.audioEngine.audioContext.currentTime + U, this.leadInProgress = 0, this.leadInData = this._calculateLeadInBeats()
|
|
4022
|
+
this.leadInStartTime = this.audioEngine.audioContext.currentTime + U, this.leadInProgress = 0, this.leadInData = this._calculateLeadInBeats();
|
|
4023
|
+
const F = this.leadInStartTime + this.leadInData.duration;
|
|
4024
|
+
this.midiPlayer && this.midiPlayer.beginPreScheduling(F), this._emitEvent("leadInStarted", {
|
|
4000
4025
|
totalBeats: this.leadInData.totalBeats,
|
|
4001
4026
|
duration: this.leadInData.duration,
|
|
4002
4027
|
bars: this.leadInConfig.bars,
|
|
@@ -4096,8 +4121,10 @@ class _U {
|
|
|
4096
4121
|
* @private
|
|
4097
4122
|
*/
|
|
4098
4123
|
_completeLeadIn(l) {
|
|
4099
|
-
|
|
4100
|
-
|
|
4124
|
+
this._stopLeadIn(), this._emitEvent("leadInEnded", {}), this.leadInData = null, this.leadInProgress = null, this.leadInStartTime = null, this.state = "playing", this.midiPlayer && this.midiPlayer.markAsPlaying(), l && !this.leadInUsedMetronome && this._startMetronome(), this._emitEvent("playbackStarted", {
|
|
4125
|
+
startupDelayMs: 0,
|
|
4126
|
+
position: this.frozenTime
|
|
4127
|
+
});
|
|
4101
4128
|
}
|
|
4102
4129
|
/**
|
|
4103
4130
|
* Start MIDI playback at a specific time (for seamless lead-in transitions)
|
|
@@ -4373,12 +4400,15 @@ class _U {
|
|
|
4373
4400
|
* @private
|
|
4374
4401
|
*/
|
|
4375
4402
|
_completeMidiPlayerSetup() {
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4403
|
+
var l;
|
|
4404
|
+
this._partOutputsMap.clear();
|
|
4405
|
+
const U = ((l = this.midiPlayer.structureMetadata) == null ? void 0 : l.parts) || {}, F = Object.keys(this.midiPlayer.parsedData.parts).map((t) => {
|
|
4406
|
+
const Z = U[t] || {}, a = this.midiPlayer.parsedData.parts[t], Q = Z.order !== void 0 && typeof Z.order == "number" ? Z.order : 999, n = a.channel ?? 0, V = a.trackIndex ?? 0;
|
|
4407
|
+
return { name: t, order: Q, channel: n, trackIndex: V };
|
|
4408
|
+
});
|
|
4409
|
+
F.sort((t, Z) => t.order !== Z.order ? t.order - Z.order : t.channel !== Z.channel ? t.channel - Z.channel : t.trackIndex - Z.trackIndex), F.map((t) => t.name).forEach((t) => {
|
|
4410
|
+
const Z = this.midiPlayer.getPartOutput(t);
|
|
4411
|
+
Z && this._partOutputsMap.set(t, Z);
|
|
4382
4412
|
}), this._setupEventDelegation(), this.state = "ready";
|
|
4383
4413
|
}
|
|
4384
4414
|
/**
|
|
@@ -4473,11 +4503,11 @@ class _U {
|
|
|
4473
4503
|
t
|
|
4474
4504
|
);
|
|
4475
4505
|
if (W) {
|
|
4476
|
-
const
|
|
4477
|
-
Q.push(
|
|
4506
|
+
const b = W.latencyMs;
|
|
4507
|
+
Q.push(b), console.log(`Measurement ${e + 1}/${l}: ${b.toFixed(1)}ms (RMS: ${W.rms.toFixed(4)}, peak: ${W.peak.toFixed(4)})`);
|
|
4478
4508
|
} else
|
|
4479
4509
|
console.warn(`Measurement ${e + 1}/${l}: detection timeout (no signal above ${F} threshold)`);
|
|
4480
|
-
await new Promise((
|
|
4510
|
+
await new Promise((b) => setTimeout(b, 300));
|
|
4481
4511
|
}
|
|
4482
4512
|
if (Q.length === 0)
|
|
4483
4513
|
throw new Error(`Failed to detect any metronome onsets. Try lowering threshold (current: ${F}) or check audio routing.`);
|
|
@@ -4518,10 +4548,10 @@ class _U {
|
|
|
4518
4548
|
return;
|
|
4519
4549
|
}
|
|
4520
4550
|
l.getFloatTimeDomainData(n);
|
|
4521
|
-
let W = 0,
|
|
4551
|
+
let W = 0, b = 0;
|
|
4522
4552
|
for (let o = 0; o < Q; o++) {
|
|
4523
4553
|
const Y = Math.abs(n[o]);
|
|
4524
|
-
W += n[o] * n[o], Y >
|
|
4554
|
+
W += n[o] * n[o], Y > b && (b = Y);
|
|
4525
4555
|
}
|
|
4526
4556
|
const J = Math.sqrt(W / Q);
|
|
4527
4557
|
if (J >= t) {
|
|
@@ -4530,7 +4560,7 @@ class _U {
|
|
|
4530
4560
|
e({
|
|
4531
4561
|
latencyMs: Y,
|
|
4532
4562
|
rms: J,
|
|
4533
|
-
peak:
|
|
4563
|
+
peak: b,
|
|
4534
4564
|
detectedTime: o
|
|
4535
4565
|
});
|
|
4536
4566
|
}
|
|
@@ -4555,10 +4585,10 @@ class _U {
|
|
|
4555
4585
|
return;
|
|
4556
4586
|
}
|
|
4557
4587
|
l.getFloatTimeDomainData(Q);
|
|
4558
|
-
let W = 0,
|
|
4588
|
+
let W = 0, b = 0;
|
|
4559
4589
|
for (let Y = 0; Y < a; Y++) {
|
|
4560
4590
|
const T = Math.abs(Q[Y]);
|
|
4561
|
-
W += Q[Y] * Q[Y], T >
|
|
4591
|
+
W += Q[Y] * Q[Y], T > b && (b = T);
|
|
4562
4592
|
}
|
|
4563
4593
|
const J = Math.sqrt(W / a), o = Z.currentTime;
|
|
4564
4594
|
n.push({
|
|
@@ -4566,7 +4596,7 @@ class _U {
|
|
|
4566
4596
|
relativeTime: (o - U) * 1e3,
|
|
4567
4597
|
// ms relative to scheduled time
|
|
4568
4598
|
rms: J,
|
|
4569
|
-
peak:
|
|
4599
|
+
peak: b
|
|
4570
4600
|
});
|
|
4571
4601
|
}, F);
|
|
4572
4602
|
});
|
|
@@ -5030,66 +5060,66 @@ const h = new UF();
|
|
|
5030
5060
|
function Ql(d = {}) {
|
|
5031
5061
|
const l = Fl(), U = $(), F = fl(), t = {
|
|
5032
5062
|
soundfontUrl: d.soundfontUrl
|
|
5033
|
-
}, Z = ({ currentTime:
|
|
5034
|
-
l.setCurrentTime(
|
|
5035
|
-
}, a = ({ isPlaying:
|
|
5036
|
-
l.setPlaybackState(
|
|
5037
|
-
}, Q = (
|
|
5038
|
-
|
|
5039
|
-
}, n = ({ speed:
|
|
5040
|
-
l.setPlaybackSpeed(
|
|
5041
|
-
}, V = ({ volume:
|
|
5042
|
-
l.setMasterVolume(
|
|
5043
|
-
}, R = ({ partName:
|
|
5044
|
-
l.setPartVolume(
|
|
5045
|
-
}, e = ({ partName:
|
|
5046
|
-
l.setPartMuted(
|
|
5047
|
-
}, m = ({ partName:
|
|
5048
|
-
l.setPartSolo(
|
|
5049
|
-
}, W = ({ bars:
|
|
5050
|
-
l.setLeadInActive(!0,
|
|
5051
|
-
},
|
|
5063
|
+
}, Z = ({ currentTime: c }) => {
|
|
5064
|
+
l.setCurrentTime(c);
|
|
5065
|
+
}, a = ({ isPlaying: c }) => {
|
|
5066
|
+
l.setPlaybackState(c), F.setTransportState(c ? "playing" : "stopped"), !c && l.isLeadInActive && (l.setLeadInActive(!1), h.emitTimeAndBarUpdates(l.currentTime));
|
|
5067
|
+
}, Q = (c) => {
|
|
5068
|
+
c && (l.isLeadInActive ? c.isLeadIn && c.beat !== void 0 && l.setCurrentBar(null, c.beat, null) : (l.setCurrentBar(c.bar, c.beat, c.repeat), F.updateLastBarPosition(c.bar)));
|
|
5069
|
+
}, n = ({ speed: c }) => {
|
|
5070
|
+
l.setPlaybackSpeed(c);
|
|
5071
|
+
}, V = ({ volume: c }) => {
|
|
5072
|
+
l.setMasterVolume(c);
|
|
5073
|
+
}, R = ({ partName: c, volume: N }) => {
|
|
5074
|
+
l.setPartVolume(c, N);
|
|
5075
|
+
}, e = ({ partName: c, muted: N }) => {
|
|
5076
|
+
l.setPartMuted(c, N);
|
|
5077
|
+
}, m = ({ partName: c, solo: N }) => {
|
|
5078
|
+
l.setPartSolo(c, N);
|
|
5079
|
+
}, W = ({ bars: c }) => {
|
|
5080
|
+
l.setLeadInActive(!0, c);
|
|
5081
|
+
}, b = () => {
|
|
5052
5082
|
l.setLeadInActive(!1);
|
|
5053
5083
|
}, J = () => {
|
|
5054
5084
|
l.setStartingNotesActive(!0);
|
|
5055
5085
|
}, o = () => {
|
|
5056
5086
|
l.setStartingNotesActive(!1);
|
|
5057
|
-
}, Y = ({ mark:
|
|
5058
|
-
F.updateLastPracticeMarkUsed(
|
|
5059
|
-
}, T = ({ parts:
|
|
5060
|
-
l.initializeParts(
|
|
5061
|
-
}, I = ({ finalTime:
|
|
5062
|
-
l.setPlaybackState(!1), F.setTransportState("stopped"), console.log(`Song ended at time: ${
|
|
5063
|
-
}, g = ({ duration:
|
|
5064
|
-
console.log("Updating total duration in store to:",
|
|
5065
|
-
}, K = ({ beats:
|
|
5066
|
-
console.log(`Updating music data store with ${
|
|
5087
|
+
}, Y = ({ mark: c }) => {
|
|
5088
|
+
F.updateLastPracticeMarkUsed(c);
|
|
5089
|
+
}, T = ({ parts: c }) => {
|
|
5090
|
+
l.initializeParts(c), U.setParts(c);
|
|
5091
|
+
}, I = ({ finalTime: c }) => {
|
|
5092
|
+
l.setPlaybackState(!1), F.setTransportState("stopped"), console.log(`Song ended at time: ${c}`);
|
|
5093
|
+
}, g = ({ duration: c }) => {
|
|
5094
|
+
console.log("Updating total duration in store to:", c), U.setTotalDuration(c);
|
|
5095
|
+
}, K = ({ beats: c, practiceMarks: N, maxBar: q }) => {
|
|
5096
|
+
console.log(`Updating music data store with ${c.length} beats and ${Object.keys(N).length} practice marks`), U.updateBeats(c), U.practiceMarks = N, U.maxBar = q;
|
|
5067
5097
|
}, M = () => {
|
|
5068
|
-
h.on("timeChanged", Z), h.on("playbackStateChanged", a), h.on("barChanged", Q), h.on("speedChanged", n), h.on("masterVolumeChanged", V), h.on("partVolumeChanged", R), h.on("partMutedChanged", e), h.on("partSoloChanged", m), h.on("leadInStarted", W), h.on("leadInCompleted",
|
|
5098
|
+
h.on("timeChanged", Z), h.on("playbackStateChanged", a), h.on("barChanged", Q), h.on("speedChanged", n), h.on("masterVolumeChanged", V), h.on("partVolumeChanged", R), h.on("partMutedChanged", e), h.on("partSoloChanged", m), h.on("leadInStarted", W), h.on("leadInCompleted", b), h.on("startingNotesStarted", J), h.on("startingNotesCompleted", o), h.on("practiceMarkChanged", Y), h.on("initialized", T), h.on("songEnded", I), h.on("durationUpdated", g), h.on("musicDataExtracted", K);
|
|
5069
5099
|
}, O = () => {
|
|
5070
|
-
h.off("timeChanged", Z), h.off("playbackStateChanged", a), h.off("barChanged", Q), h.off("speedChanged", n), h.off("masterVolumeChanged", V), h.off("partVolumeChanged", R), h.off("partMutedChanged", e), h.off("partSoloChanged", m), h.off("leadInStarted", W), h.off("leadInCompleted",
|
|
5100
|
+
h.off("timeChanged", Z), h.off("playbackStateChanged", a), h.off("barChanged", Q), h.off("speedChanged", n), h.off("masterVolumeChanged", V), h.off("partVolumeChanged", R), h.off("partMutedChanged", e), h.off("partSoloChanged", m), h.off("leadInStarted", W), h.off("leadInCompleted", b), h.off("startingNotesStarted", J), h.off("startingNotesCompleted", o), h.off("practiceMarkChanged", Y), h.off("initialized", T), h.off("songEnded", I), h.off("durationUpdated", g), h.off("musicDataExtracted", K);
|
|
5071
5101
|
};
|
|
5072
5102
|
(() => {
|
|
5073
5103
|
Sl(() => {
|
|
5074
|
-
const
|
|
5104
|
+
const c = l.masterVolume;
|
|
5075
5105
|
try {
|
|
5076
|
-
h.getMasterVolume() !==
|
|
5106
|
+
h.getMasterVolume() !== c && h.setMasterVolume(c);
|
|
5077
5107
|
} catch (N) {
|
|
5078
5108
|
console.warn("Master volume sync skipped during initialization:", N.message);
|
|
5079
5109
|
}
|
|
5080
5110
|
}), Sl(() => {
|
|
5081
|
-
const
|
|
5111
|
+
const c = l.metronomeVolume;
|
|
5082
5112
|
try {
|
|
5083
|
-
h.getMetronomeVolume() !==
|
|
5113
|
+
h.getMetronomeVolume() !== c && h.setMetronomeVolume(c);
|
|
5084
5114
|
} catch (N) {
|
|
5085
5115
|
console.warn("Metronome volume sync skipped during initialization:", N.message);
|
|
5086
5116
|
}
|
|
5087
5117
|
});
|
|
5088
5118
|
})();
|
|
5089
|
-
const i = async (
|
|
5119
|
+
const i = async (c) => {
|
|
5090
5120
|
try {
|
|
5091
|
-
if (l.setLoaded(!1), M(), U.loadMusicData(
|
|
5092
|
-
const N =
|
|
5121
|
+
if (l.setLoaded(!1), M(), U.loadMusicData(c), await h.initialize(c, t), F.buildFixedNavigationPoints(), !c.midiData && c.beats && c.beats.length > 0) {
|
|
5122
|
+
const N = c.beats[0];
|
|
5093
5123
|
l.setCurrentBar(N.bar, N.beat, N.repeat), h.setTime(N.time);
|
|
5094
5124
|
}
|
|
5095
5125
|
h.updateToggleStates(l.metronomeEnabled, l.leadInEnabled), l.setLoaded(!0);
|
|
@@ -5097,43 +5127,43 @@ function Ql(d = {}) {
|
|
|
5097
5127
|
throw console.error("Failed to initialize audio engine:", N), l.setLoaded(!1), N;
|
|
5098
5128
|
}
|
|
5099
5129
|
}, G = () => {
|
|
5100
|
-
const
|
|
5101
|
-
F.setLastPlayStart(
|
|
5130
|
+
const c = l.currentBar, N = l.currentRepeat, q = l.currentTime;
|
|
5131
|
+
F.setLastPlayStart(c, N, q), F.setNavigationAction("play"), h.play();
|
|
5102
5132
|
}, L = () => {
|
|
5103
5133
|
F.setNavigationAction("pause"), h.stop();
|
|
5104
5134
|
}, tl = () => {
|
|
5105
5135
|
F.setNavigationAction("pause"), h.pause();
|
|
5106
|
-
}, f = (
|
|
5107
|
-
F.setNavigationAction("manual"), h.setTime(
|
|
5108
|
-
}, A = (
|
|
5109
|
-
F.setNavigationAction("manual"), h.setBar(
|
|
5110
|
-
}, u = (
|
|
5111
|
-
h.goToPracticeMark(
|
|
5112
|
-
}, S = (
|
|
5113
|
-
h.setPlaybackSpeed(
|
|
5114
|
-
}, E = (
|
|
5115
|
-
h.setMasterVolume(
|
|
5116
|
-
}, H = (
|
|
5117
|
-
h.setPartVolume(
|
|
5118
|
-
}, Vl = (
|
|
5119
|
-
h.setPartMuted(
|
|
5120
|
-
}, nl = (
|
|
5121
|
-
h.setPartSolo(
|
|
5122
|
-
}, Rl = (
|
|
5123
|
-
h.playLeadIn(
|
|
5136
|
+
}, f = (c) => {
|
|
5137
|
+
F.setNavigationAction("manual"), h.setTime(c);
|
|
5138
|
+
}, A = (c, N = 0) => {
|
|
5139
|
+
F.setNavigationAction("manual"), h.setBar(c, N);
|
|
5140
|
+
}, u = (c) => {
|
|
5141
|
+
h.goToPracticeMark(c);
|
|
5142
|
+
}, S = (c) => {
|
|
5143
|
+
h.setPlaybackSpeed(c);
|
|
5144
|
+
}, E = (c) => {
|
|
5145
|
+
h.setMasterVolume(c);
|
|
5146
|
+
}, H = (c, N) => {
|
|
5147
|
+
h.setPartVolume(c, N);
|
|
5148
|
+
}, Vl = (c, N) => {
|
|
5149
|
+
h.setPartMuted(c, N);
|
|
5150
|
+
}, nl = (c, N) => {
|
|
5151
|
+
h.setPartSolo(c, N);
|
|
5152
|
+
}, Rl = (c = 1) => {
|
|
5153
|
+
h.playLeadIn(c);
|
|
5124
5154
|
}, FU = () => {
|
|
5125
5155
|
h.playStartingNotes();
|
|
5126
|
-
}, rl = (
|
|
5127
|
-
N && F.leadInEnabled ? (A(
|
|
5128
|
-
}, tU = (
|
|
5129
|
-
const q = U.getBarForMark(
|
|
5156
|
+
}, rl = (c, N = !0, q = 0) => {
|
|
5157
|
+
N && F.leadInEnabled ? (A(c, q), Rl(F.leadInBars)) : (A(c, q), G());
|
|
5158
|
+
}, tU = (c, N = !0) => {
|
|
5159
|
+
const q = U.getBarForMark(c);
|
|
5130
5160
|
q && rl(q, N);
|
|
5131
5161
|
}, dU = () => {
|
|
5132
|
-
const
|
|
5133
|
-
return l.setMetronomeEnabled(
|
|
5162
|
+
const c = !l.metronomeEnabled;
|
|
5163
|
+
return l.setMetronomeEnabled(c), h.setMetronomeEnabled(c), c;
|
|
5134
5164
|
}, ZU = () => {
|
|
5135
|
-
const
|
|
5136
|
-
return l.setLeadInEnabled(
|
|
5165
|
+
const c = !l.leadInEnabled;
|
|
5166
|
+
return l.setLeadInEnabled(c), h.updateToggleStates(l.metronomeEnabled, c), c;
|
|
5137
5167
|
}, aU = () => {
|
|
5138
5168
|
h.stop(), l.setLoaded(!1), U.clear(), console.log("Audio mixer reset - ready for new score");
|
|
5139
5169
|
};
|
|
@@ -5158,15 +5188,15 @@ function Ql(d = {}) {
|
|
|
5158
5188
|
setPartVolume: H,
|
|
5159
5189
|
setPartMuted: Vl,
|
|
5160
5190
|
setPartSolo: nl,
|
|
5161
|
-
getPartLevel: (
|
|
5191
|
+
getPartLevel: (c) => h.getPartLevel(c),
|
|
5162
5192
|
// Special features
|
|
5163
5193
|
playLeadIn: Rl,
|
|
5164
5194
|
playStartingNotes: FU,
|
|
5165
5195
|
// Feature toggles
|
|
5166
5196
|
toggleMetronome: dU,
|
|
5167
5197
|
toggleLeadIn: ZU,
|
|
5168
|
-
setMetronomeEnabled: (
|
|
5169
|
-
l.setMetronomeEnabled(
|
|
5198
|
+
setMetronomeEnabled: (c) => {
|
|
5199
|
+
l.setMetronomeEnabled(c), h.setMetronomeEnabled(c);
|
|
5170
5200
|
},
|
|
5171
5201
|
// Complex operations
|
|
5172
5202
|
playFromBar: rl,
|
|
@@ -5201,18 +5231,18 @@ const FF = ["aria-label"], tF = {
|
|
|
5201
5231
|
}),
|
|
5202
5232
|
emits: ["update:volume", "update:mute", "update:solo"],
|
|
5203
5233
|
setup(d) {
|
|
5204
|
-
ll((
|
|
5234
|
+
ll((b) => ({
|
|
5205
5235
|
"03f87250": V.value
|
|
5206
5236
|
}));
|
|
5207
5237
|
const l = d;
|
|
5208
5238
|
Fl();
|
|
5209
5239
|
const U = Ql(), F = _(d, "volume"), t = _(d, "mute"), Z = _(d, "solo");
|
|
5210
|
-
z(F, (
|
|
5211
|
-
U.setPartVolume(l.name,
|
|
5212
|
-
}), z(t, (
|
|
5213
|
-
U.setPartMuted(l.name,
|
|
5214
|
-
}), z(Z, (
|
|
5215
|
-
U.setPartSolo(l.name,
|
|
5240
|
+
z(F, (b) => {
|
|
5241
|
+
U.setPartVolume(l.name, b);
|
|
5242
|
+
}), z(t, (b) => {
|
|
5243
|
+
U.setPartMuted(l.name, b), b && (Z.value = !1);
|
|
5244
|
+
}), z(Z, (b) => {
|
|
5245
|
+
U.setPartSolo(l.name, b), b && (t.value = !1);
|
|
5216
5246
|
});
|
|
5217
5247
|
const a = w("el"), { width: Q, height: n } = Ul(a), V = X(() => Math.min(Q.value, n.value) + "px"), R = X(
|
|
5218
5248
|
() => Q.value > n.value ? "mobile" : Q.value < 60 ? "tablet" : "desktop"
|
|
@@ -5233,14 +5263,14 @@ const FF = ["aria-label"], tF = {
|
|
|
5233
5263
|
}), sl(() => {
|
|
5234
5264
|
e && (clearInterval(e), e = null);
|
|
5235
5265
|
});
|
|
5236
|
-
const W = (
|
|
5237
|
-
if (["ArrowUp", "ArrowRight", "ArrowDown", "ArrowLeft"].includes(
|
|
5238
|
-
|
|
5239
|
-
const J =
|
|
5266
|
+
const W = (b) => {
|
|
5267
|
+
if (["ArrowUp", "ArrowRight", "ArrowDown", "ArrowLeft"].includes(b.key)) {
|
|
5268
|
+
b.preventDefault(), b.stopPropagation();
|
|
5269
|
+
const J = b.key === "ArrowUp" || b.key === "ArrowRight" ? 0.1 : -0.1;
|
|
5240
5270
|
F.value = Math.max(0, Math.min(1, F.value + J));
|
|
5241
|
-
} else
|
|
5271
|
+
} else b.key === "m" && !b.shiftKey ? (b.preventDefault(), b.stopPropagation(), t.value = !t.value) : b.key === "s" && !b.shiftKey && (b.preventDefault(), b.stopPropagation(), Z.value = !Z.value);
|
|
5242
5272
|
};
|
|
5243
|
-
return (
|
|
5273
|
+
return (b, J) => (p(), y("div", {
|
|
5244
5274
|
ref_key: "el",
|
|
5245
5275
|
ref: a,
|
|
5246
5276
|
class: C([R.value, "part"]),
|
|
@@ -5288,7 +5318,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5288
5318
|
77574882: Y.value,
|
|
5289
5319
|
"188cd0ae": T.value
|
|
5290
5320
|
}));
|
|
5291
|
-
const l = w("el"), U = w("rpt"), { width: F, height: t } = Ul(l), Z = $(), a = Fl(), Q = Ql(), n = k("1"), V = k("A"), R = k(0), e = k(2), m = k(!1), W = k(!1),
|
|
5321
|
+
const l = w("el"), U = w("rpt"), { width: F, height: t } = Ul(l), Z = $(), a = Fl(), Q = Ql(), n = k("1"), V = k("A"), R = k(0), e = k(2), m = k(!1), W = k(!1), b = k(!1), J = k(!0);
|
|
5292
5322
|
let o = null;
|
|
5293
5323
|
z(() => {
|
|
5294
5324
|
var u;
|
|
@@ -5329,17 +5359,17 @@ const FF = ["aria-label"], tF = {
|
|
|
5329
5359
|
S && S.stopPropagation(), V.value = u, W.value = !1, Q.goToPracticeMark(u), l.value && l.value.blur();
|
|
5330
5360
|
}
|
|
5331
5361
|
function i() {
|
|
5332
|
-
e.value > 1 && (
|
|
5362
|
+
e.value > 1 && (b.value = !0), a.currentRepeat < e.value && Q.setBar(a.currentBar, a.currentRepeat + 1);
|
|
5333
5363
|
}
|
|
5334
5364
|
function G() {
|
|
5335
|
-
e.value > 1 && (
|
|
5365
|
+
e.value > 1 && (b.value = !0), a.currentRepeat > 1 && Q.setBar(a.currentBar, a.currentRepeat - 1);
|
|
5336
5366
|
}
|
|
5337
5367
|
function L(u) {
|
|
5338
|
-
g.value && (u.stopPropagation(),
|
|
5368
|
+
g.value && (u.stopPropagation(), b.value = !1, W.value = !W.value);
|
|
5339
5369
|
}
|
|
5340
5370
|
function tl(u) {
|
|
5341
5371
|
var S, E;
|
|
5342
|
-
(S = l.value) != null && S.contains(u.target) || (W.value = !1), (E = U.value) != null && E.contains(u.target) || (
|
|
5372
|
+
(S = l.value) != null && S.contains(u.target) || (W.value = !1), (E = U.value) != null && E.contains(u.target) || (b.value = !1);
|
|
5343
5373
|
}
|
|
5344
5374
|
function f() {
|
|
5345
5375
|
W.value && setTimeout(() => {
|
|
@@ -5404,7 +5434,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5404
5434
|
B("div", {
|
|
5405
5435
|
ref_key: "rpt",
|
|
5406
5436
|
ref: U,
|
|
5407
|
-
class: C(["rpt-input", { edit:
|
|
5437
|
+
class: C(["rpt-input", { edit: b.value, available: e.value > 1 }])
|
|
5408
5438
|
}, [
|
|
5409
5439
|
B("div", aF, D(r(a).currentRepeat || "-"), 1),
|
|
5410
5440
|
(p(), y("svg", {
|
|
@@ -5439,7 +5469,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5439
5469
|
])) : j("", !0)
|
|
5440
5470
|
], 34));
|
|
5441
5471
|
}
|
|
5442
|
-
},
|
|
5472
|
+
}, cF = /* @__PURE__ */ v(mF, [["__scopeId", "data-v-7856f4ec"]]), bF = { class: "frame" }, WF = { class: "title" }, sF = {
|
|
5443
5473
|
__name: "BaseNumericInput",
|
|
5444
5474
|
props: /* @__PURE__ */ yl({
|
|
5445
5475
|
title: {
|
|
@@ -5529,7 +5559,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5529
5559
|
ref_key: "el",
|
|
5530
5560
|
ref: U
|
|
5531
5561
|
}, [
|
|
5532
|
-
B("div",
|
|
5562
|
+
B("div", bF, [
|
|
5533
5563
|
El(B("input", {
|
|
5534
5564
|
type: "text",
|
|
5535
5565
|
class: "input",
|
|
@@ -5672,7 +5702,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5672
5702
|
function e() {
|
|
5673
5703
|
Q.playStartingNotes();
|
|
5674
5704
|
}
|
|
5675
|
-
const m = X(() => Z.metronomeEnabled), W = X(() => Z.leadInEnabled),
|
|
5705
|
+
const m = X(() => Z.metronomeEnabled), W = X(() => Z.leadInEnabled), b = k(!1), J = k(null);
|
|
5676
5706
|
function o() {
|
|
5677
5707
|
if (U.externalMenuControl) {
|
|
5678
5708
|
F("menu-click"), Q.audioEngine.initializeAudioSystem().catch((s) => {
|
|
@@ -5680,7 +5710,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5680
5710
|
});
|
|
5681
5711
|
return;
|
|
5682
5712
|
}
|
|
5683
|
-
|
|
5713
|
+
b.value = !b.value, b.value && (Q.audioEngine.initializeAudioSystem().catch((s) => {
|
|
5684
5714
|
console.warn("Audio system pre-initialization failed:", s);
|
|
5685
5715
|
}), setTimeout(() => {
|
|
5686
5716
|
var i;
|
|
@@ -5689,7 +5719,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5689
5719
|
}, 0));
|
|
5690
5720
|
}
|
|
5691
5721
|
function Y() {
|
|
5692
|
-
|
|
5722
|
+
b.value = !1;
|
|
5693
5723
|
}
|
|
5694
5724
|
function T(s) {
|
|
5695
5725
|
J.value && !J.value.contains(s.target) && Y();
|
|
@@ -5785,7 +5815,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5785
5815
|
}, i[2] || (i[2] = [
|
|
5786
5816
|
B("path", { d: "M120-240v-80h720v80H120Zm0-200v-80h720v80H120Zm0-200v-80h720v80H120Z" }, null, -1)
|
|
5787
5817
|
]))),
|
|
5788
|
-
!d.externalMenuControl &&
|
|
5818
|
+
!d.externalMenuControl && b.value && s.$slots.menu ? (p(), y("div", {
|
|
5789
5819
|
key: 0,
|
|
5790
5820
|
class: "dropdown-menu",
|
|
5791
5821
|
onClick: Y
|
|
@@ -5814,7 +5844,7 @@ const FF = ["aria-label"], tF = {
|
|
|
5814
5844
|
}, null, 8, ["value"]),
|
|
5815
5845
|
i[10] || (i[10] = B("div", { class: "tick-t" }, "Tick", -1)),
|
|
5816
5846
|
i[11] || (i[11] = B("div", { class: "tick-focus" }, null, -1)),
|
|
5817
|
-
x(
|
|
5847
|
+
x(cF, { class: "bar" }),
|
|
5818
5848
|
x(iF, { class: "time" }),
|
|
5819
5849
|
x(hF, { class: "speed" }),
|
|
5820
5850
|
B("div", SF, [
|
|
@@ -6049,7 +6079,7 @@ const FF = ["aria-label"], tF = {
|
|
|
6049
6079
|
},
|
|
6050
6080
|
emits: ["menu-click"],
|
|
6051
6081
|
setup(d, { emit: l }) {
|
|
6052
|
-
ll((
|
|
6082
|
+
ll((b) => ({
|
|
6053
6083
|
"3e3bf6e6": e.value,
|
|
6054
6084
|
"3e499cb2": m.value,
|
|
6055
6085
|
"3a701552": W.value
|
|
@@ -6059,8 +6089,8 @@ const FF = ["aria-label"], tF = {
|
|
|
6059
6089
|
a.initializeListeners();
|
|
6060
6090
|
});
|
|
6061
6091
|
const Q = w("container"), { width: n } = Ul(Q), V = X(() => Z.isLoaded), R = X(() => {
|
|
6062
|
-
const
|
|
6063
|
-
return
|
|
6092
|
+
const b = n.value, J = t.parts.length;
|
|
6093
|
+
return b < 640 || b < xl * J + Il ? 0 : b < Ml * J + vl ? 1 : b < zl * J + gl ? 2 : 3;
|
|
6064
6094
|
}), e = X(() => {
|
|
6065
6095
|
switch (R.value) {
|
|
6066
6096
|
case 0:
|
|
@@ -6084,10 +6114,10 @@ const FF = ["aria-label"], tF = {
|
|
|
6084
6114
|
return `${zl}px `.repeat(t.parts.length) + `${gl}px`;
|
|
6085
6115
|
}
|
|
6086
6116
|
}), W = X(() => {
|
|
6087
|
-
const
|
|
6088
|
-
return R.value > 0 ? '"' +
|
|
6117
|
+
const b = [...t.parts.keys()];
|
|
6118
|
+
return R.value > 0 ? '"' + b.map((J) => "part" + J).join(" ") + ' controls"' : '"controls" ' + b.map((J) => '"part' + J + '"').join(" ");
|
|
6089
6119
|
});
|
|
6090
|
-
return (
|
|
6120
|
+
return (b, J) => (p(), y("div", {
|
|
6091
6121
|
class: "outer",
|
|
6092
6122
|
ref_key: "container",
|
|
6093
6123
|
ref: Q
|
|
@@ -6113,7 +6143,7 @@ const FF = ["aria-label"], tF = {
|
|
|
6113
6143
|
class: "controls"
|
|
6114
6144
|
}, {
|
|
6115
6145
|
menu: P(() => [
|
|
6116
|
-
al(
|
|
6146
|
+
al(b.$slots, "menu", {}, void 0, !0)
|
|
6117
6147
|
]),
|
|
6118
6148
|
_: 3
|
|
6119
6149
|
}, 8, ["external-menu-control"]),
|
|
@@ -6372,7 +6402,7 @@ new _F();
|
|
|
6372
6402
|
export {
|
|
6373
6403
|
dl as AudioButton,
|
|
6374
6404
|
Wl as AudioSlider,
|
|
6375
|
-
|
|
6405
|
+
cF as BarInput,
|
|
6376
6406
|
UU as BaseNumericInput,
|
|
6377
6407
|
pl as DEV_MODE,
|
|
6378
6408
|
_F as DummyAudioEngine,
|