API Documentation - noktirnal42/AudioBloomAI GitHub Wiki

API Documentation

AudioBloomCore

VisualizationData

public struct VisualizationData: Sendable, Equatable {
    public let values: [Float]
    public let isSignificantEvent: Bool
    public let timestamp: Date
}

AudioBridge.PerformanceMetrics

public struct PerformanceMetrics: Sendable {
    public var framesPerSecond: Double
    public var eventsPerMinute: Double
    public var averageLatency: Double
    public var errorRate: Double
    public var averageProcessingTime: Double
    public var conversionEfficiency: Double
}

Key Components

  • Audio configuration management
  • Visualization preferences
  • Performance tuning
  • State persistence

AudioDataPublisher

public protocol AudioDataPublisher {
    func publishAudioData(_ data: AudioData)
    func subscribe(_ subscriber: AudioDataSubscriber)
    func unsubscribe(_ subscriber: AudioDataSubscriber)
}

Features

  • Real-time audio data distribution
  • Subscriber management
  • Data transformation
  • Error handling

AudioProcessor

AudioFeatureExtractor

public protocol AudioFeatureExtractor {
    func extractFeatures(from buffer: AudioBuffer) -> AudioFeatures
    var configuration: FeatureExtractionConfig { get set }
}

Capabilities

  • Frequency analysis
  • Amplitude detection
  • Pattern recognition
  • Real-time processing

AudioBufferManager

public protocol AudioBufferManager {
    func prepareBuffer(size: Int) -> AudioBuffer
    func processBuffer(_ buffer: AudioBuffer)
    func releaseBuffer(_ buffer: AudioBuffer)
}

Features

  • Buffer allocation
  • Memory management
  • Processing queue
  • Resource optimization

Visualizer

VisualizationRenderer

public protocol VisualizationRenderer {
    func render(audioFeatures: AudioFeatures)
    func updateRenderState(_ state: RenderState)
    var configuration: RenderConfiguration { get set }
}

Capabilities

  • Metal shader management
  • Frame rendering
  • State handling
  • Performance optimization

VisualizationController

public protocol VisualizationController {
    func updateVisualization(with features: AudioFeatures)
    func switchEffect(to effect: VisualizationEffect)
    func configureEffect(_ effect: VisualizationEffect, parameters: EffectParameters)
}

Features

  • Effect management
  • Transition handling
  • Parameter control
  • State coordination

Data Types

AudioData

public struct AudioData: Sendable {
    public let samples: [Float]
    public let levels: (left: Float, right: Float)
    public let sampleRate: Double
    public let timestamp: Date
    public var frequencyData: [Float]
}

AudioFeatures

public struct AudioFeatures {
    let frequencies: [Float]
    let amplitudes: [Float]
    let tempo: Float
    let timestamp: TimeInterval
}

VisualizationEffect

public struct VisualizationEffect {
    let type: EffectType
    var parameters: EffectParameters
    var state: EffectState
}

Error Handling

AudioBridge.AudioBridgeError

public enum AudioBridgeError: Error, CustomStringConvertible, Sendable {
    case connectionFailed
    case dataConversionFailed
    case processingFailed
}

VisualizationError

public enum VisualizationError: Error {
    case shaderCompilationFailed
    case renderingFailed
    case invalidEffectState
    case resourceLimit
}

Performance Guidelines

Audio Processing

  • Buffer size recommendations
  • Processing thread management
  • Memory usage optimization
  • Error recovery strategies

Visualization

  • Frame rate targets
  • Metal resource management
  • State transition handling
  • Memory constraints

Best Practices

Implementation Guidelines

  • Error handling patterns
  • Resource management
  • State synchronization
  • Performance optimization

Threading Considerations

  • Main thread usage
  • Background processing
  • Synchronization methods
  • Thread safety with Sendable conformance
  • Actor-based concurrency
  • Proper lock usage

Modular Design

  • Clear separation of concerns
  • Single responsibility principle
  • Clean import hierarchies
  • Minimal cross-component dependencies
  • Well-defined public interfaces

Version Compatibility

Current Version

  • Swift 6 compatibility
  • macOS 15+ support
  • Metal API requirements
  • Minimum system specifications

Future Considerations

  • API evolution
  • Backward compatibility
  • Deprecation policies
  • Migration strategies