TooB Parametric EQ UI

This commit is contained in:
Robin E. R. Davies
2025-09-01 15:59:29 -04:00
parent 865ac45bda
commit 5434f40ca1
27 changed files with 1375 additions and 132 deletions
+49 -43
View File
@@ -45,7 +45,7 @@ import FilePropertyDirectoryTree from './FilePropertyDirectoryTree';
import AudioFileMetadata from './AudioFileMetadata';
import { pathFileName } from './FileUtils';
import { AlsaSequencerConfiguration, AlsaSequencerPortSelection } from './AlsaSequencer';
import {getDefaultModGuiPreference} from './ModGuiHost';
import { getDefaultModGuiPreference } from './ModGuiHost';
export enum State {
Loading,
@@ -96,11 +96,10 @@ export class HostVersion {
} else {
this.hostName = "Unknown Host";
remainder = "v0.0.0";
}
}
const args = remainder.split(","); // make make provisions for more.
if (args.length >= 1)
{
if (args.length >= 1) {
let versionString = args[0].trim();
if (versionString.startsWith('v')) {
versionString = versionString.substring(1).trim();
@@ -119,7 +118,7 @@ export class HostVersion {
this.majorVersion = parseInt(parts[0]);
this.minorVersion = parseInt(parts[1]);
this.buildNumber = parseInt(parts[2]);
}
}
}
}
lessThan(major: number, minor: number, build: number): boolean {
@@ -133,7 +132,7 @@ export class HostVersion {
hostName: string = "";
releaseType: string = "";
majorVersion: number = 0;
minorVersion: number = 0;
minorVersion: number = 0;
buildNumber: number = 0;
}
export type PedalboardItemEnabledChangeCallback = (instanceId: number, isEnabled: boolean) => void;
@@ -533,7 +532,7 @@ export class PiPedalModel //implements PiPedalModel
favorites: ObservableProperty<FavoritesList> = new ObservableProperty<FavoritesList>({});
alsaSequencerConfiguration : ObservableProperty<AlsaSequencerConfiguration> = new ObservableProperty<AlsaSequencerConfiguration>(new AlsaSequencerConfiguration());
alsaSequencerConfiguration: ObservableProperty<AlsaSequencerConfiguration> = new ObservableProperty<AlsaSequencerConfiguration>(new AlsaSequencerConfiguration());
presets: ObservableProperty<PresetIndex> = new ObservableProperty<PresetIndex>
(
@@ -652,11 +651,10 @@ export class PiPedalModel //implements PiPedalModel
return true;
}
private updateEnabledItems(pedalboard: Pedalboard)
{
private updateEnabledItems(pedalboard: Pedalboard) {
for (let item of pedalboard.itemsGenerator()) {
this.updatePedalboardItemEnabled(item.instanceId, item.isEnabled);
this.updatePedalboardItemUseModUi(item.instanceId, item.useModUi);
this.updatePedalboardItemUseModUi(item.instanceId, item.useModUi);
}
}
@@ -1358,9 +1356,8 @@ export class PiPedalModel //implements PiPedalModel
this.state.set(State.Ready);
if (this.androidHost) {
this.hostVersion = new HostVersion(this.androidHost.getHostVersion());
if (!this.hostVersion.lessThan(1,1,16))
{
this.androidHost.setServerVersion(this.serverVersion?.serverVersion??"");
if (!this.hostVersion.lessThan(1, 1, 16)) {
this.androidHost.setServerVersion(this.serverVersion?.serverVersion ?? "");
this.canKeepScreenOn = true;
this.keepScreenOn.set(this.androidHost.getKeepScreenOn())
this.canSetScreenOrientation = true;
@@ -1424,7 +1421,8 @@ export class PiPedalModel //implements PiPedalModel
if (pedalboard === undefined) throw new PiPedalStateError("Pedalboard not ready.");
let newPedalboard = pedalboard.clone();
let item = newPedalboard.getItem(instanceId);
let item = newPedalboard.tryGetItem(instanceId);
if (!item) return;
let changed = false;
for (let i = 0; i < controlValues.length; ++i) {
@@ -1780,7 +1778,7 @@ export class PiPedalModel //implements PiPedalModel
// null -> we've never seen a value.
item.pathProperties[fileProperty.patchProperty] = "null";
}
newPedalboard.selectedPlugin = item.instanceId;
newPedalboard.selectedPlugin = item.instanceId;
this.setModelPedalboard(newPedalboard);
this.updateServerPedalboard()
return item.instanceId;
@@ -2372,14 +2370,19 @@ export class PiPedalModel //implements PiPedalModel
let result = new Promise<Type>((resolve, reject) => {
let pedalboard = this.pedalboard.get();
if (pedalboard) {
let item = pedalboard.getItem(instanceId);
if (item) {
if (item.pathProperties.hasOwnProperty(uri)) {
let value = item.pathProperties[uri];
let jsonValue = JSON.parse(value);
resolve(jsonValue as Type);
}
try {
let item = pedalboard.getItem(instanceId);
if (item) {
if (item.pathProperties.hasOwnProperty(uri)) {
let value = item.pathProperties[uri];
let jsonValue = JSON.parse(value);
resolve(jsonValue as Type);
}
}
} catch (error) {
reject(error);
return;
}
}
if (!this.webSocket) {
@@ -2618,9 +2621,13 @@ export class PiPedalModel //implements PiPedalModel
}
private handleNotifyPatchProperty(clientHandle: number, instanceId: number, propertyUri: string, jsonObject: any) {
let pedalboard = this.pedalboard.get();
let pedalboardItem = pedalboard.getItem(instanceId);
if (pedalboardItem) {
pedalboardItem.pathProperties[propertyUri] = JSON.stringify(jsonObject);
try {
let pedalboardItem = pedalboard.tryGetItem(instanceId);
if (pedalboardItem) {
pedalboardItem.pathProperties[propertyUri] = JSON.stringify(jsonObject);
}
} catch (ignored) {
// e.g. notification for a pedalboard item that is no longer valid.
}
for (let i = 0; i < this.monitorPatchPropertyListeners.length; ++i) {
let listener = this.monitorPatchPropertyListeners[i];
@@ -3390,9 +3397,8 @@ export class PiPedalModel //implements PiPedalModel
this.webSocket?.send("setAlsaSequencerConfiguration", alsaSequencerConfiguration);
}
async getAlsaSequencerConfiguration(): Promise<AlsaSequencerConfiguration> {
if (this.webSocket)
{
let result = await this.webSocket.request<any>("getAlsaSequencerConfiguration");
if (this.webSocket) {
let result = await this.webSocket.request<any>("getAlsaSequencerConfiguration");
return new AlsaSequencerConfiguration().deserialize(result);
}
throw new Error("No connection.");
@@ -3417,7 +3423,7 @@ export class PiPedalModel //implements PiPedalModel
listener.onEnabledChanged(instanceId, enabled);
}
}
}
}
}
private updatePedalboardItemUseModUi(instanceId: number, useModUi: boolean) {
@@ -3434,18 +3440,18 @@ export class PiPedalModel //implements PiPedalModel
addPedalboardItemEnabledChangeListener(
instanceId: number,
onEnabledChanged: PedalboardItemEnabledChangeCallback
) : ListenHandle{
): ListenHandle {
let handle = ++this.nextListenHandle;
let currentValue = this.getPedalboardItemEnabled(instanceId);
let entry: PedalboardItemEnabledChangeItem = {
instanceId: instanceId,
handle: handle,
currentValue: currentValue,
let entry: PedalboardItemEnabledChangeItem = {
instanceId: instanceId,
handle: handle,
currentValue: currentValue,
onEnabledChanged: onEnabledChanged
};
this.pedalboardItemEnabledChangeListeners.push( entry);
this.pedalboardItemEnabledChangeListeners.push(entry);
onEnabledChanged(instanceId, currentValue);
@@ -3453,20 +3459,20 @@ export class PiPedalModel //implements PiPedalModel
}
addPedalboardItemUseModUiChangeListener(
instanceId: number,
onUseModUiChanged : PedalboardItemUseModUiChangeCallback
) : ListenHandle{
onUseModUiChanged: PedalboardItemUseModUiChangeCallback
): ListenHandle {
let handle = ++this.nextListenHandle;
let currentValue = this.getPedalboardItemUseModUi(instanceId);
let entry: PedalboardItemUseModUiChangeItem = {
instanceId: instanceId,
handle: handle,
currentValue: currentValue,
let entry: PedalboardItemUseModUiChangeItem = {
instanceId: instanceId,
handle: handle,
currentValue: currentValue,
onUseModUiChanged: onUseModUiChanged
};
this.pedalboardItemUseModUiChangeListeners.push( entry);
this.pedalboardItemUseModUiChangeListeners.push(entry);
onUseModUiChanged(instanceId, currentValue);
@@ -3493,7 +3499,7 @@ export class PiPedalModel //implements PiPedalModel
return false;
}
setKeepScreenOn(keepScreenOn: boolean): void {
setKeepScreenOn(keepScreenOn: boolean): void {
if (this.canKeepScreenOn) {
this.keepScreenOn.set(keepScreenOn);
if (this.androidHost) {