4track 0.1.2 → 0.1.4
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.
|
@@ -577,21 +577,6 @@ export class AudioEngine {
|
|
|
577
577
|
}
|
|
578
578
|
/** Loads a .4trk file, restoring all track buffers, mixer settings, and master volume. */
|
|
579
579
|
async importProject(file) {
|
|
580
|
-
// Stop any in-progress recording or playback
|
|
581
|
-
if (this.playState === "recording")
|
|
582
|
-
this.stopRecording();
|
|
583
|
-
this.stopAllPlayback();
|
|
584
|
-
this.playState = "stopped";
|
|
585
|
-
this.stopMonitoring();
|
|
586
|
-
// Clear all existing track data before loading
|
|
587
|
-
for (const track of this.tracks) {
|
|
588
|
-
if (!track.hidden) {
|
|
589
|
-
track.buffer = null;
|
|
590
|
-
track.hasContent = false;
|
|
591
|
-
track.trimStart = 0;
|
|
592
|
-
track.level = 0;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
580
|
const { masterVolume } = await _importProject(file, this.tracks, () => this.ensureContext());
|
|
596
581
|
this.setMasterVolume(masterVolume);
|
|
597
582
|
this.rewind();
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
let selectedTrack = $state(0)
|
|
38
38
|
let speed = $state(0)
|
|
39
39
|
let recordEngaged = $state(false)
|
|
40
|
+
let resetTransport: (() => void) | undefined = $state()
|
|
40
41
|
|
|
41
42
|
async function fetchWithProgress(url: string): Promise<File> {
|
|
42
43
|
const response = await fetch(url)
|
|
@@ -83,6 +84,7 @@
|
|
|
83
84
|
const file =
|
|
84
85
|
typeof source === "string" ? await fetchWithProgress(source) : source
|
|
85
86
|
await engine!.importProject(file)
|
|
87
|
+
resetTransport?.()
|
|
86
88
|
status = "ready"
|
|
87
89
|
} catch (e) {
|
|
88
90
|
status = "error"
|
|
@@ -194,7 +196,7 @@
|
|
|
194
196
|
|
|
195
197
|
<div class="cell-center" style="grid-area: 2 / 6 / 3 / 8">
|
|
196
198
|
<div class="mic-status">
|
|
197
|
-
<div class="ui-label">mic status</div>
|
|
199
|
+
<div class="ui-label">mic status XXX22</div>
|
|
198
200
|
<div
|
|
199
201
|
class="mic-status-light"
|
|
200
202
|
title="Microphone status: {engine.micStatus}"
|
|
@@ -285,6 +287,7 @@
|
|
|
285
287
|
{selectedTrack}
|
|
286
288
|
bind:speed
|
|
287
289
|
bind:recordEngaged
|
|
290
|
+
bind:resetTransport
|
|
288
291
|
/>
|
|
289
292
|
</div>
|
|
290
293
|
</div>
|
|
@@ -20,11 +20,13 @@
|
|
|
20
20
|
selectedTrack,
|
|
21
21
|
speed = $bindable(0),
|
|
22
22
|
recordEngaged = $bindable(false),
|
|
23
|
+
resetTransport = $bindable<() => void>(),
|
|
23
24
|
}: {
|
|
24
25
|
engine: AudioEngine
|
|
25
26
|
selectedTrack: number
|
|
26
27
|
speed: number
|
|
27
28
|
recordEngaged: boolean
|
|
29
|
+
resetTransport?: () => void
|
|
28
30
|
} = $props()
|
|
29
31
|
|
|
30
32
|
let btns = $state({
|
|
@@ -74,6 +76,8 @@
|
|
|
74
76
|
})
|
|
75
77
|
}
|
|
76
78
|
|
|
79
|
+
resetTransport = reset
|
|
80
|
+
|
|
77
81
|
function clicky(btnType: string) {
|
|
78
82
|
switch (btnType) {
|
|
79
83
|
case "play":
|
|
@@ -4,7 +4,8 @@ type $$ComponentProps = {
|
|
|
4
4
|
selectedTrack: number;
|
|
5
5
|
speed: number;
|
|
6
6
|
recordEngaged: boolean;
|
|
7
|
+
resetTransport?: () => void;
|
|
7
8
|
};
|
|
8
|
-
declare const TransportButtons: import("svelte").Component<$$ComponentProps, {}, "speed" | "recordEngaged">;
|
|
9
|
+
declare const TransportButtons: import("svelte").Component<$$ComponentProps, {}, "speed" | "recordEngaged" | "resetTransport">;
|
|
9
10
|
type TransportButtons = ReturnType<typeof TransportButtons>;
|
|
10
11
|
export default TransportButtons;
|