How tone-3000/tone3000-plugin works
TONE3000 is a JUCE audio plugin and standalone app for browsing or locally loading NAM amp models and impulse responses, arranging them into signal chains, and processing live audio. The main workflow is user or host audio → plugin UI and tone selection → model loading into chain blocks → audio processing → output. The README documents the processing order and product capabilities; sampled source supports some implementation details, but not every UI-service connection, so uncertain wiring is omitted.
Main entry points: Processor.cpp Audio processor · ToneBrowser.cpp Tone browser · Tone3000Client.cpp API client · PluginRoot.cpp Plugin screens
Components 28
Native interface
- Plugin editor
plugin/ui/NativeEditor.cpp - Plugin screens
plugin/ui/views/PluginRoot.cpp - Tone browser
plugin/ui/views/browser/ToneBrowser.cpp
Tone discovery
- Search query
plugin/ui/model/ToneQuery.cpp - API client
plugin/ui/services/Tone3000Client.cpp - OAuth session
plugin/ui/services/OAuth.cpp - OAuth callback
plugin/ui/services/LoopbackServer.cpp - Tone load flow
plugin/ui/services/ToneLoadFlow.cpp - Model loading
plugin/ui/services/ModelLoads.cpp - Local file loading
plugin/ui/services/LocalFiles.cpp
Audio engine
- Audio processor
plugin/src/Processor.cpp - NAM / IR chain
plugin/src/ProcessorChain.cpp - NAM engine
plugin/src/NamEngine.cpp - Chain blocks
plugin/include/ChainBlock.h - Noise gate
plugin/include/NoiseGate.h - Stereo processing
plugin/include/Spread.h - Spectrum analysis
plugin/src/BlockSpectrum.cpp - Tuner detection
plugin/src/TunerDetector.cpp
Controls and persistence
- Chain state
plugin/ui/model/ChainState.cpp - Chain store
plugin/ui/services/ChainStore.cpp - Preset manager
plugin/src/PresetManager.cpp - MIDI mapping
plugin/src/MidiMapper.cpp
Host integration
- Audio settings
plugin/src/StandaloneAudioSettings.cpp - State autosave
plugin/src/StandaloneStateAutosave.cpp
Other components
- Plugin user
- DAW / host
- Audio device
- TONE3000 API
Connections 30
- Plugin user → Plugin editor: operates
- DAW / host → Audio processor: supplies audio
- Audio processor → DAW / host: returns audio
- Plugin editor → Plugin screens: displays
- Plugin screens → Tone browser: opens browser
- Tone browser → Search query: builds search
- Tone browser → API client: requests catalog
- API client → TONE3000 API: sends requests
- OAuth session → OAuth callback: receives redirect
- OAuth session → API client: exchanges credentials
- Tone browser → Tone load flow: selects tone
- Tone load flow → Model loading: loads model
- Tone load flow → API client: downloads tone
- Plugin user → Local file loading: chooses local files
- Local file loading → Model loading: provides files
- Model loading → Audio processor: installs model
- Audio processor → Noise gate: processes input
- Audio processor → NAM / IR chain: runs chain
- NAM / IR chain → Chain blocks: processes blocks
- Chain blocks → NAM engine: runs NAM
- Audio processor → Stereo processing: applies stereo stage
- Audio processor → Spectrum analysis: feeds analysis
- Audio processor → Tuner detection: feeds pitch detection
- Plugin screens → Chain state: edits chain
- Chain state → Chain store: persists changes
- Audio processor → Preset manager: loads and saves presets
- Audio processor → MIDI mapping: handles MIDI input
- Audio device → Audio settings: provides audio I/O
- Audio settings → Audio processor: configures I/O
- Audio processor → State autosave: saves standalone state