57 lines
1.6 KiB
TypeScript
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()
|