Spaces:
Sleeping
Sleeping
| // Enhanced visualization types for advanced particle system | |
| export interface ParticleSystemParams { | |
| enabled: boolean | |
| sphereRadius: number | |
| innerSphereRadius: number | |
| rotationSpeed: number | |
| rotationSpeedMin: number | |
| rotationSpeedMax: number | |
| rotationSmoothness: number | |
| particleCount: number | |
| particleSize: number | |
| particleLifetime: number | |
| minFrequency: number | |
| maxFrequency: number | |
| minFrequencyBeat: number | |
| maxFrequencyBeat: number | |
| noiseScale: number | |
| dynamicNoiseScale: boolean | |
| minNoiseScale: number | |
| maxNoiseScale: number | |
| noiseStep: number | |
| noiseSpeed: number | |
| turbulenceStrength: number | |
| colorStart: string | |
| colorEnd: string | |
| volumeChangeThreshold: number | |
| peakSensitivity: number | |
| beatThreshold: number | |
| baseWaveStrength: number | |
| beatStrength: number | |
| gainMultiplier: number | |
| } | |
| export interface PeakDetection { | |
| energyHistory: number[] | |
| historyLength: number | |
| lastPeakTime: number | |
| minTimeBetweenPeaks: number | |
| } | |
| export interface ParticleSphere { | |
| index: number | |
| params: ParticleSystemParams | |
| positions: Float32Array | |
| velocities: Float32Array | |
| basePositions: Float32Array | |
| lifetimes: Float32Array | |
| maxLifetimes: Float32Array | |
| beatEffects: Float32Array | |
| colors: Float32Array | |
| lastNoiseScale: number | |
| lastValidVolume: number | |
| lastRotationSpeed: number | |
| peakDetection: PeakDetection | |
| } | |
| export interface AudioAnalysisData { | |
| average: number | |
| frequencies: Uint8Array | |
| peakDetected: boolean | |
| rangeEnergy: number | |
| rangeEnergyBeat: number | |
| } | |
| export interface FogParams { | |
| enabled: boolean | |
| color: string | |
| near: number | |
| far: number | |
| } | |
| export interface VisualizationPreset { | |
| name: string | |
| spheres: ParticleSystemParams[] | |
| fog?: FogParams | |
| } | |
| export interface VisualizationState { | |
| // Enhanced particle system state | |
| spheres: ParticleSphere[] | |
| beatManager?: { | |
| currentWaveRadius: number | |
| waveStrength: number | |
| isWaveActive: boolean | |
| } | |
| // Legacy tree visualization state (for backward compatibility) | |
| deepPulseIntensity: number | |
| midGlowIntensity: number | |
| highShimmerIntensity: number | |
| worldBreathRate: number | |
| // Animation state | |
| lastTime: number | |
| isAnimating: boolean | |
| } | |
| // Default frequency ranges for different spheres | |
| export const DEFAULT_FREQUENCY_RANGES = [ | |
| { minFrequency: 20, maxFrequency: 80 }, // Sub-bass | |
| { minFrequency: 120, maxFrequency: 250 }, // Bass | |
| { minFrequency: 250, maxFrequency: 800 }, // Mid | |
| { minFrequency: 1000, maxFrequency: 4000 }, // High mid | |
| { minFrequency: 5000, maxFrequency: 10000 } // High | |
| ] as const | |
| export const DEFAULT_SPHERE_PARAMS: ParticleSystemParams = { | |
| enabled: false, | |
| sphereRadius: 1.0, | |
| innerSphereRadius: 0.25, | |
| rotationSpeed: 0.001, | |
| rotationSpeedMin: 0, | |
| rotationSpeedMax: 0.065, | |
| rotationSmoothness: 0.3, | |
| particleCount: 20000, | |
| particleSize: 0.003, | |
| particleLifetime: 3.0, | |
| minFrequency: 20, | |
| maxFrequency: 80, | |
| minFrequencyBeat: 20, | |
| maxFrequencyBeat: 80, | |
| noiseScale: 4.0, | |
| dynamicNoiseScale: true, | |
| minNoiseScale: 0.5, | |
| maxNoiseScale: 5.0, | |
| noiseStep: 0.2, | |
| noiseSpeed: 0.1, | |
| turbulenceStrength: 0.005, | |
| colorStart: '#ff3366', | |
| colorEnd: '#3366ff', | |
| volumeChangeThreshold: 0.1, | |
| peakSensitivity: 1.1, | |
| beatThreshold: 200, | |
| baseWaveStrength: 20.0, | |
| beatStrength: 0.01, | |
| gainMultiplier: 1 | |
| } | |
| // Legacy types for backward compatibility | |
| export interface WorldTreeNode { | |
| id: string; | |
| x: number; | |
| y: number; | |
| size: number; | |
| glyphType: 'root' | 'trunk' | 'branch' | 'leaf'; | |
| intensity: number; // 0-1, driven by audio | |
| connections: string[]; // IDs of connected nodes | |
| } | |
| export interface TreeBranch { | |
| id: string; | |
| startNode: string; | |
| endNode: string; | |
| strokeWidth: number; | |
| pathData: string; // SVG path | |
| energy: number; // Current energy flowing through | |
| pulsePhase: number; // Animation phase | |
| } | |
| export interface GlyphSystem { | |
| coreGlyphs: WorldTreeNode[]; | |
| arterialPathways: TreeBranch[]; | |
| fractalBranches: TreeBranch[]; | |
| emberParticles: Particle[]; | |
| } | |
| export interface Particle { | |
| id: string; | |
| x: number; | |
| y: number; | |
| vx: number; | |
| vy: number; | |
| life: number; | |
| maxLife: number; | |
| size: number; | |
| opacity: number; | |
| } | |
| export interface VisualizationParams { | |
| worldBreathRate: number; // Base breathing animation speed | |
| deepPulseIntensity: number; // Trunk/root pulse strength | |
| midGlowIntensity: number; // Core glyph glow | |
| highShimmerCount: number; // Number of fractal branches/particles | |
| noiseScale: number; // Perlin noise scale for organic movement | |
| colorPalette: { | |
| primary: string; // Deep earth tones | |
| secondary: string; // Burnished metal | |
| accent: string; // Mystical glow | |
| ember: string; // Particle color | |
| }; | |
| } | |
| export interface InteractionState { | |
| isDormant: boolean; | |
| isAwakening: boolean; | |
| isAlive: boolean; | |
| lastInteraction: number; | |
| } |