Skip to content

Commit c440915

Browse files
refactor: retain source name in decoded audio
1 parent d712e9d commit c440915

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

packages/app/src/app.tsx

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,9 @@ export function App() {
110110
: "";
111111

112112
const handleAudioFileMutation = useMutation({
113-
mutationFn: async (file: File | undefined) => {
114-
if (file) {
115-
return decodeAudioFile(file);
116-
}
117-
return null;
118-
},
113+
mutationFn: decodeAudioFile,
119114
});
120-
const decodedAudio = handleAudioFileMutation.data ?? null;
115+
const decodedAudio = handleAudioFileMutation.data;
121116

122117
const [runProgress, setRunProgress] = useState<RunProgress | null>(null);
123118

@@ -171,9 +166,7 @@ export function App() {
171166
const durationMs = performance.now() - started;
172167
const archiveBlob = await createStemArchive(nextOutputs);
173168
const archive = {
174-
name: stemArchiveFilename(
175-
handleAudioFileMutation.variables?.name ?? "stems",
176-
),
169+
name: stemArchiveFilename(decodedAudio.name),
177170
url: URL.createObjectURL(archiveBlob),
178171
};
179172
outputCleanupRef.current.push(() => URL.revokeObjectURL(archive.url));
@@ -237,9 +230,12 @@ export function App() {
237230
type="file"
238231
id="file"
239232
accept="audio/*"
240-
onChange={(event) =>
241-
handleAudioFileMutation.mutate(event.target.files?.[0])
242-
}
233+
onChange={(event) => {
234+
const file = event.target.files?.[0];
235+
if (file) {
236+
handleAudioFileMutation.mutate(file);
237+
}
238+
}}
243239
/>
244240
{audioFileStatusText && (
245241
<p className="text-muted mt-3.5 text-sm" id="audio-status">

packages/app/src/lib/audio/decode.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { AUDIO_SAMPLE_RATE } from "./constants";
22

33
export interface DecodedAudio {
4+
name: string;
45
left: Float32Array;
56
right: Float32Array;
67
duration: number;
@@ -19,6 +20,7 @@ export async function decodeAudioFile(file: File): Promise<DecodedAudio> {
1920
const right = buffer.numberOfChannels > 1 ? buffer.getChannelData(1) : left;
2021

2122
return {
23+
name: file.name,
2224
left,
2325
right,
2426
duration: buffer.duration,

0 commit comments

Comments
 (0)