# OrbLab — Animated Voice Orb Visualizer (macOS) Экспериментальный macOS-проект: анимированный orb-персонаж с аудиореактивностью, 4 стилями и панелью настроек. ## Расположение `~/Developer/OrbLab/` ## Архитектура ``` OrbLab/ ├── project.yml ← XcodeGen (не коммитить .xcodeproj) ├── OrbLab/ │ ├── Audio/AudioAnalyzer.swift ← AVAudioEngine + FFT → 8 bands │ ├── Models/OrbSettings.swift ← @ObservableObject с настройками │ ├── Views/ │ │ ├── ContentView.swift ← layout: stage + sidebar │ │ ├── Components/ │ │ │ ├── OrbSwitcherView ← роутер по OrbStyle │ │ │ ├── SettingsPanelView ← ручки управления │ │ │ └── AudioMeterView ← 8-band мини-спектр │ │ └── Styles/ │ │ ├── SiriOrbView ← blob + орбитали + частицы │ │ ├── SpotifyOrbView ← equalizer bars + сфера │ │ ├── ChatGPTOrbView ← ripple waves + shimmer arc │ │ └── MetaOrbView ← wavy mesh blobs + angular glow │ └── OrbLabApp.swift ``` ## Стили | Стиль | Описание | Техника | |-------|----------|---------| | **Siri** | Blob + glowing orbitals + particles | Canvas wobbly path + AngularGradient rings | | **Spotify** | Equalizer bars + outer rings | Canvas bars, audio-reactive height | | **ChatGPT** | Concentric ripple + shimmer arc | Canvas rings + animated arc | | **Orb Lib** | Wavy mesh blobs + angular overlay | Ellipse layers + blendMode(.plusLighter) | ## AudioAnalyzer - `AVAudioEngine` → tap на `inputNode` → 2048-sample FFT (vDSP) - Hamming window → 8 частотных бэндов (20 Hz – 18 kHz) - Smoothing 0.25 (экспоненциальный фильтр) - Выдаёт: `level: Float` (RMS, 0–1) + `bands: [Float]` (8 бэндов) ## Настройки (OrbSettings) - Colors: primary / secondary / accent - Size: 80–500 pt - Opacity, Blur radius - Speed multiplier (0.1–3.0×) - Audio sensitivity (0.1–3.0×) - Toggle: particles, orbitals, background - Orbital count, particle count - Glow intensity ## Пресеты цветов - 🌊 Siri — cyan/indigo/purple - 🟢 Spotify — green/teal/white - ⚫ GPT — gray/white - 🔥 Fire — red/orange/yellow ## Сборка ```bash cd ~/Developer/OrbLab xcodegen generate # Открыть OrbLab.xcodeproj в Xcode или: xcodebuild -project OrbLab.xcodeproj -scheme OrbLab -destination "platform=macOS" build ``` ## Заметки - `metasidd/Orb` (SPM) не компилируется на macOS — использует UIKit (UIColor, UIBezierPath). MetaOrb реализован нативно через Canvas + blendMode. - Entitlements: sandbox OFF + `com.apple.security.device.audio-input` (для микрофона без sandbox) - Deployment target: macOS 15.0 (для `.windowStyle(.hiddenTitleBar)` + `Window` scene API)