Skip to content

Commit d96178b

Browse files
fix: order user-facing stems
1 parent 45ecb64 commit d96178b

3 files changed

Lines changed: 12 additions & 25 deletions

File tree

packages/app/src/app.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import type { SeparateRequest } from "./lib/audio/separate";
1515
import {
1616
createStemArchive,
1717
downloadBlob,
18-
orderStemFiles,
1918
toStemArchiveFilename,
2019
} from "./lib/audio/stem-archive";
2120
import { encodeWavF32 } from "./lib/audio/wav";
@@ -152,8 +151,7 @@ export function App() {
152151
progress ? updateRunProgress(progress, event, at) : progress,
153152
),
154153
});
155-
const orderedOutputs = orderStemFiles(separated, twoStems);
156-
const nextOutputs = orderedOutputs.map((output) => {
154+
const nextOutputs = separated.map((output) => {
157155
const blob = encodeWavF32(
158156
[output.left, output.right],
159157
AUDIO_SAMPLE_RATE,

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
MODEL_INPUT_LENGTH,
1212
MODEL_OUTPUT_LENGTH,
1313
MODEL_SEGMENT,
14-
SOURCES,
1514
} from "./constants";
1615
import { readModelFile, type ModelFilename, type ModelSource } from "./models";
1716

@@ -151,12 +150,18 @@ export async function separate(
151150
req.right,
152151
host,
153152
);
154-
const names = req.twoStems
155-
? [req.twoStems.source, `no_${req.twoStems.source}`]
156-
: SOURCES;
157-
return names.map((name, index) => ({
153+
const stem = (name: string, index: number): SeparatedStem => ({
158154
name,
159155
left: tracks[2 * index],
160156
right: tracks[2 * index + 1],
161-
}));
157+
});
158+
if (req.twoStems) {
159+
return [stem(`no_${req.twoStems.source}`, 1), stem(req.twoStems.source, 0)];
160+
}
161+
return [
162+
stem("vocals", 3),
163+
stem("drums", 0),
164+
stem("bass", 1),
165+
stem("other", 2),
166+
];
162167
}

packages/app/src/lib/audio/stem-archive.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,6 @@ export interface StemFile {
55
blob: Blob;
66
}
77

8-
export function orderStemFiles<T extends { name: string }>(
9-
stems: T[],
10-
twoStemSource: string | null,
11-
): T[] {
12-
if (!twoStemSource) {
13-
return stems;
14-
}
15-
16-
const order = [`no_${twoStemSource}`, twoStemSource];
17-
const rank = (name: string) => {
18-
const index = order.indexOf(name);
19-
return index === -1 ? order.length : index;
20-
};
21-
return [...stems].sort((a, b) => rank(a.name) - rank(b.name));
22-
}
23-
248
export function toStemArchiveFilename(inputFilename: string): string {
259
const basename = inputFilename.replaceAll(".", "_");
2610
return `${basename || "demucs"}.stems.zip`;

0 commit comments

Comments
 (0)