WIP
This commit is contained in:
parent
34ac200437
commit
39b0160064
136 changed files with 7129 additions and 1950 deletions
|
|
@ -1,3 +1,5 @@
|
|||
import { appConfig } from '../config';
|
||||
|
||||
export type GardenAudioChordQuality = 'major' | 'minor';
|
||||
|
||||
export interface GardenAudioChord {
|
||||
|
|
@ -7,7 +9,6 @@ export interface GardenAudioChord {
|
|||
|
||||
export interface GardenAudioColorVoice {
|
||||
scaleDegreeOffset: number;
|
||||
octaveOffset: number;
|
||||
velocityMultiplier: number;
|
||||
panOffset: number;
|
||||
}
|
||||
|
|
@ -21,19 +22,11 @@ export interface GardenAudioVibeProfile {
|
|||
}
|
||||
|
||||
export interface GardenAudioConfig {
|
||||
enabled: boolean;
|
||||
masterVolume: number;
|
||||
fadeInSeconds: number;
|
||||
updateRampSeconds: number;
|
||||
highPassFrequencyHz: number;
|
||||
fallbackVibeId: string;
|
||||
startup: {
|
||||
calmDurationSeconds: number;
|
||||
initialTempoMultiplier: number;
|
||||
initialEnergyMultiplier: number;
|
||||
initialActivityCeiling: number;
|
||||
initialTapIntervalMultiplier: number;
|
||||
};
|
||||
compressor: {
|
||||
thresholdDb: number;
|
||||
kneeDb: number;
|
||||
|
|
@ -42,7 +35,6 @@ export interface GardenAudioConfig {
|
|||
releaseSeconds: number;
|
||||
};
|
||||
delay: {
|
||||
enabled: boolean;
|
||||
timeSeconds: number;
|
||||
feedback: number;
|
||||
wetGain: number;
|
||||
|
|
@ -54,7 +46,6 @@ export interface GardenAudioConfig {
|
|||
sustainLevel: number;
|
||||
releaseSeconds: number;
|
||||
lowpassHz: number;
|
||||
preloadOnStart: boolean;
|
||||
};
|
||||
input: {
|
||||
pressureFallback: number;
|
||||
|
|
@ -64,25 +55,10 @@ export interface GardenAudioConfig {
|
|||
stepsPerBeat: number;
|
||||
stepsPerBar: number;
|
||||
lookaheadSeconds: number;
|
||||
swing: number;
|
||||
minTailSeconds: number;
|
||||
maxTailSeconds: number;
|
||||
tailDistanceForMaxPixels: number;
|
||||
tailDurationForMaxSeconds: number;
|
||||
tailDecayPower: number;
|
||||
minTapIntervalSeconds: number;
|
||||
speedForFullEnergyPixelsPerSecond: number;
|
||||
sparseActivity: number;
|
||||
arpeggioActivity: number;
|
||||
fullChordActivity: number;
|
||||
bassActivity: number;
|
||||
melodySteps: Array<number>;
|
||||
chordSteps: Array<number>;
|
||||
bassSteps: Array<number>;
|
||||
melodyPattern: Array<number>;
|
||||
};
|
||||
eraser: {
|
||||
enabled: boolean;
|
||||
minIntervalSeconds: number;
|
||||
noiseGain: number;
|
||||
filterMinHz: number;
|
||||
|
|
@ -92,163 +68,4 @@ export interface GardenAudioConfig {
|
|||
vibes: Record<string, GardenAudioVibeProfile>;
|
||||
}
|
||||
|
||||
const majorProgression: Array<GardenAudioChord> = [
|
||||
{ rootOffset: 0, quality: 'major' },
|
||||
{ rootOffset: 9, quality: 'minor' },
|
||||
{ rootOffset: 5, quality: 'major' },
|
||||
{ rootOffset: 7, quality: 'major' },
|
||||
];
|
||||
|
||||
const minorProgression: Array<GardenAudioChord> = [
|
||||
{ rootOffset: 0, quality: 'minor' },
|
||||
{ rootOffset: 8, quality: 'major' },
|
||||
{ rootOffset: 3, quality: 'major' },
|
||||
{ rootOffset: 10, quality: 'major' },
|
||||
];
|
||||
|
||||
const majorPentatonic = [0, 2, 4, 7, 9];
|
||||
const minorPentatonic = [0, 3, 5, 7, 10];
|
||||
|
||||
export const gardenAudioConfig: GardenAudioConfig = {
|
||||
enabled: true,
|
||||
masterVolume: 0.32,
|
||||
fadeInSeconds: 0.45,
|
||||
updateRampSeconds: 0.08,
|
||||
highPassFrequencyHz: 45,
|
||||
fallbackVibeId: 'candy-rain',
|
||||
startup: {
|
||||
calmDurationSeconds: 6,
|
||||
initialTempoMultiplier: 1.18,
|
||||
initialEnergyMultiplier: 0.62,
|
||||
initialActivityCeiling: 0.52,
|
||||
initialTapIntervalMultiplier: 2.2,
|
||||
},
|
||||
compressor: {
|
||||
thresholdDb: -18,
|
||||
kneeDb: 18,
|
||||
ratio: 2.4,
|
||||
attackSeconds: 0.006,
|
||||
releaseSeconds: 0.18,
|
||||
},
|
||||
delay: {
|
||||
enabled: true,
|
||||
timeSeconds: 0.42,
|
||||
feedback: 0.12,
|
||||
wetGain: 0.048,
|
||||
},
|
||||
piano: {
|
||||
maxVoices: 32,
|
||||
gain: 0.42,
|
||||
sustainSeconds: 0.52,
|
||||
sustainLevel: 0.34,
|
||||
releaseSeconds: 0.16,
|
||||
lowpassHz: 9000,
|
||||
preloadOnStart: true,
|
||||
},
|
||||
input: {
|
||||
pressureFallback: 0.48,
|
||||
},
|
||||
rhythm: {
|
||||
bpm: 82,
|
||||
stepsPerBeat: 4,
|
||||
stepsPerBar: 16,
|
||||
lookaheadSeconds: 0.14,
|
||||
swing: 0.08,
|
||||
minTailSeconds: 0.45,
|
||||
maxTailSeconds: 7.2,
|
||||
tailDistanceForMaxPixels: 1400,
|
||||
tailDurationForMaxSeconds: 3.8,
|
||||
tailDecayPower: 1.85,
|
||||
minTapIntervalSeconds: 0.16,
|
||||
speedForFullEnergyPixelsPerSecond: 1800,
|
||||
sparseActivity: 0.1,
|
||||
arpeggioActivity: 0.32,
|
||||
fullChordActivity: 0.62,
|
||||
bassActivity: 0.48,
|
||||
melodySteps: [0, 3, 6, 10, 12, 14],
|
||||
chordSteps: [0, 8],
|
||||
bassSteps: [0],
|
||||
melodyPattern: [0, 2, 4, 5, 4, 2, 1, 3],
|
||||
},
|
||||
eraser: {
|
||||
enabled: true,
|
||||
minIntervalSeconds: 0.12,
|
||||
noiseGain: 0.028,
|
||||
filterMinHz: 650,
|
||||
filterMaxHz: 3600,
|
||||
},
|
||||
colorVoices: [
|
||||
{
|
||||
scaleDegreeOffset: 0,
|
||||
octaveOffset: 0,
|
||||
velocityMultiplier: 0.92,
|
||||
panOffset: -0.14,
|
||||
},
|
||||
{
|
||||
scaleDegreeOffset: 1,
|
||||
octaveOffset: 0,
|
||||
velocityMultiplier: 1,
|
||||
panOffset: 0,
|
||||
},
|
||||
{
|
||||
scaleDegreeOffset: 2,
|
||||
octaveOffset: 1,
|
||||
velocityMultiplier: 0.86,
|
||||
panOffset: 0.14,
|
||||
},
|
||||
],
|
||||
vibes: {
|
||||
'candy-rain': {
|
||||
rootMidi: 57,
|
||||
scale: majorPentatonic,
|
||||
brightness: 1.04,
|
||||
delayTimeMultiplier: 0.92,
|
||||
progression: majorProgression,
|
||||
},
|
||||
'sunlit-moss': {
|
||||
rootMidi: 53,
|
||||
scale: majorPentatonic,
|
||||
brightness: 0.92,
|
||||
delayTimeMultiplier: 1.08,
|
||||
progression: [
|
||||
{ rootOffset: 0, quality: 'major' },
|
||||
{ rootOffset: 7, quality: 'major' },
|
||||
{ rootOffset: 9, quality: 'minor' },
|
||||
{ rootOffset: 5, quality: 'major' },
|
||||
],
|
||||
},
|
||||
'coral-tide': {
|
||||
rootMidi: 50,
|
||||
scale: minorPentatonic,
|
||||
brightness: 1,
|
||||
delayTimeMultiplier: 1.12,
|
||||
progression: minorProgression,
|
||||
},
|
||||
'moon-orchid': {
|
||||
rootMidi: 49,
|
||||
scale: minorPentatonic,
|
||||
brightness: 0.9,
|
||||
delayTimeMultiplier: 1.24,
|
||||
progression: minorProgression,
|
||||
},
|
||||
'peach-neon': {
|
||||
rootMidi: 56,
|
||||
scale: majorPentatonic,
|
||||
brightness: 1.08,
|
||||
delayTimeMultiplier: 0.86,
|
||||
progression: majorProgression,
|
||||
},
|
||||
'frost-bloom': {
|
||||
rootMidi: 62,
|
||||
scale: majorPentatonic,
|
||||
brightness: 0.88,
|
||||
delayTimeMultiplier: 1.32,
|
||||
progression: [
|
||||
{ rootOffset: 0, quality: 'major' },
|
||||
{ rootOffset: 5, quality: 'major' },
|
||||
{ rootOffset: 9, quality: 'minor' },
|
||||
{ rootOffset: 7, quality: 'major' },
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
export const gardenAudioConfig: GardenAudioConfig = appConfig.audio;
|
||||
|
|
|
|||
Loading…
Reference in a new issue