71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
import { appConfig } from '../config';
|
|
|
|
export type GardenAudioChordQuality = 'major' | 'minor';
|
|
|
|
export interface GardenAudioChord {
|
|
rootOffset: number;
|
|
quality: GardenAudioChordQuality;
|
|
}
|
|
|
|
export interface GardenAudioColorVoice {
|
|
scaleDegreeOffset: number;
|
|
velocityMultiplier: number;
|
|
panOffset: number;
|
|
}
|
|
|
|
export interface GardenAudioVibeProfile {
|
|
rootMidi: number;
|
|
scale: Array<number>;
|
|
brightness: number;
|
|
delayTimeMultiplier: number;
|
|
progression: Array<GardenAudioChord>;
|
|
}
|
|
|
|
export interface GardenAudioConfig {
|
|
masterVolume: number;
|
|
fadeInSeconds: number;
|
|
updateRampSeconds: number;
|
|
highPassFrequencyHz: number;
|
|
fallbackVibeId: string;
|
|
compressor: {
|
|
thresholdDb: number;
|
|
kneeDb: number;
|
|
ratio: number;
|
|
attackSeconds: number;
|
|
releaseSeconds: number;
|
|
};
|
|
delay: {
|
|
timeSeconds: number;
|
|
feedback: number;
|
|
wetGain: number;
|
|
};
|
|
piano: {
|
|
maxVoices: number;
|
|
gain: number;
|
|
sustainSeconds: number;
|
|
sustainLevel: number;
|
|
releaseSeconds: number;
|
|
lowpassHz: number;
|
|
};
|
|
input: {
|
|
pressureFallback: number;
|
|
};
|
|
rhythm: {
|
|
bpm: number;
|
|
stepsPerBeat: number;
|
|
stepsPerBar: number;
|
|
lookaheadSeconds: number;
|
|
speedForFullEnergyPixelsPerSecond: number;
|
|
sparseActivity: number;
|
|
};
|
|
eraser: {
|
|
minIntervalSeconds: number;
|
|
noiseGain: number;
|
|
filterMinHz: number;
|
|
filterMaxHz: number;
|
|
};
|
|
colorVoices: [GardenAudioColorVoice, GardenAudioColorVoice, GardenAudioColorVoice];
|
|
vibes: Record<string, GardenAudioVibeProfile>;
|
|
}
|
|
|
|
export const gardenAudioConfig: GardenAudioConfig = appConfig.audio;
|