Prune snapshot values

This commit is contained in:
Robin E. R. Davies
2026-01-16 12:29:47 -05:00
parent e5e7eb0e01
commit 69e54c3052
2 changed files with 27 additions and 2 deletions
+1 -1
View File
@@ -514,7 +514,7 @@ export class Pedalboard implements Deserializable<Pedalboard> {
}
return null;
}
deleteItem_(instanceId: number,items: PedalboardItem[]): number | null
private deleteItem_(instanceId: number,items: PedalboardItem[]): number | null
{
for (let i = 0; i < items.length; ++i)
{
+26 -1
View File
@@ -1538,15 +1538,39 @@ export class PiPedalModel //implements PiPedalModel
selectSnapshot(index: number) {
this.webSocket?.send("setSnapshot", index);
}
private pruneSnapshotValues(pedalboard: Pedalboard)
{
let validPluginIds: Set<number> = new Set<number>();
for (let item of pedalboard.items) {
validPluginIds.add(item.instanceId);
}
for (let snapshot of pedalboard.snapshots) {
if (snapshot) {
let ix = 0;
while (ix < snapshot.values.length) {
let value = snapshot.values[ix];
if (validPluginIds.has(value.instanceId)) {
ix++;
} else {
snapshot.values.splice(ix, 1);
}
}
}
}
}
setSnapshots(snapshots: (Snapshot | null)[], selectedSnapshot: number) {
let pedalboard = this.pedalboard.get().clone();
pedalboard.snapshots = snapshots;
if (selectedSnapshot !== -1) {
pedalboard.selectedSnapshot = selectedSnapshot;
}
this.pruneSnapshotValues(pedalboard);
this.setModelPedalboard(pedalboard);
this.webSocket?.send("setSnapshots", { snapshots: snapshots, selectedSnapshot: selectedSnapshot });
this.webSocket?.send("setSnapshots", { snapshots: pedalboard.snapshots, selectedSnapshot: selectedSnapshot });
}
setInputVolume(volume_db: number): void {
@@ -1841,6 +1865,7 @@ export class PiPedalModel //implements PiPedalModel
let result = newPedalboard.deleteItem(instanceId);
if (result !== null) {
newPedalboard.selectedPlugin = result;
this.pruneSnapshotValues(newPedalboard);
this.setModelPedalboard(newPedalboard);
this.updateServerPedalboard();
}