Severian's picture
Upload 32 files
6a03d7f verified
export interface FrequencyMapping {
deepFreq: { min: number; max: number }; // 20-250Hz - Deep Earth Pulse
midFreq: { min: number; max: number }; // 250-4000Hz - Heartwood Resonance
highFreq: { min: number; max: number }; // 4000-20000Hz - Canopy Shiver
}
export interface AudioData {
frequencies: Uint8Array;
deepEnergy: number; // Normalized 0-1
midEnergy: number; // Normalized 0-1
highEnergy: number; // Normalized 0-1
overallAmplitude: number; // Normalized 0-1
peakDetected: boolean;
beatDetected: boolean;
}
export interface PeakDetection {
energyHistory: number[];
historyLength: number;
lastPeakTime: number;
minTimeBetweenPeaks: number;
sensitivity: number;
}
export interface BeatManager {
currentWaveRadius: number;
waveStrength: number;
isWaveActive: boolean;
triggerWave: (energy: number) => void;
update: (deltaTime: number) => void;
getWaveForce: (distance: number) => number;
}
export interface Track {
id: string;
title: string;
artist: string;
url: string;
duration?: number;
}
export interface PlaybackState {
isPlaying: boolean;
currentTrack: Track | null;
currentTime: number;
volume: number;
tracks: Track[];
}
export interface AudioEngine {
initialize: () => Promise<void>;
loadTrack: (track: Track) => Promise<void>;
play: () => Promise<void>;
pause: () => void;
seekTo: (time: number) => void;
setVolume: (volume: number) => void;
getAudioData: () => AudioData;
getCurrentTime: () => number;
getDuration: () => number;
getAudioElement: () => HTMLAudioElement | null;
isPlaying: () => boolean;
cleanup: () => void;
setOnTrackEndedCallback: (callback: (() => void) | null) => void;
}