Files
bruitiste/src/services/ParameterManager.ts

57 lines
1.6 KiB
TypeScript

import { engineSettings, effectSettings, lfoSettings } from '../stores/settings'
import type { TileState } from '../types/tiles'
import type { LFOSettings, LFOConfig } from '../stores/settings'
export class ParameterManager {
loadTileParams(tile: TileState): void {
Object.entries(tile.engineParams).forEach(([key, value]) => {
engineSettings.setKey(key as any, value)
})
Object.entries(tile.effectParams).forEach(([key, value]) => {
effectSettings.setKey(key as any, value as any)
})
if (tile.lfoConfigs) {
Object.entries(tile.lfoConfigs).forEach(([key, value]) => {
lfoSettings.setKey(key as keyof LFOSettings, value)
})
}
}
saveTileParams(tile: TileState): TileState {
return {
...tile,
engineParams: { ...engineSettings.get() },
effectParams: { ...effectSettings.get() },
lfoConfigs: JSON.parse(JSON.stringify(lfoSettings.get()))
}
}
getEngineParams(): Record<string, number> {
return engineSettings.get() as Record<string, number>
}
getEffectParams(): Record<string, number | boolean | string> {
return effectSettings.get()
}
getLFOConfigs(): LFOSettings {
return lfoSettings.get()
}
setEngineParam(key: string, value: number): void {
engineSettings.setKey(key as any, value)
}
setEffectParam(key: string, value: number | boolean | string): void {
effectSettings.setKey(key as any, value as any)
}
setLFOConfig(lfoKey: keyof LFOSettings, config: LFOConfig): void {
lfoSettings.setKey(lfoKey, config)
}
}
export const parameterManager = new ParameterManager()