🔍 VISUAL DIAGNOSTIC GUIDE - AUDIOLAB¶
Systematic Audio Troubleshooting System Version: 1.0 Last Updated: 2025-10-03
📑 Table of Contents¶
- Introduction & Philosophy
- Visual Taxonomy of Symptoms
- Diagnostic Decision Trees
- Cause-Effect Diagrams
- Intervention Protocols
- Verification Matrix
- Toolbox Reference
- Quick Reference Cards
- Educational Appendix
🎯 Introduction & Philosophy¶
This Is NOT a FAQ¶
This guide is a systematic thinking framework for audio diagnostics. Instead of listing problems and solutions, it teaches you how to think about audio issues through visual models.
The Five-Layer Methodology¶
┌──────────────────────────────────────────────────────────┐
│ AUDIOLAB DIAGNOSTIC SYSTEM │
├──────────────────────────────────────────────────────────┤
│ │
│ 🎯 LAYER 1: IDENTIFICATION │
│ └─ Visual taxonomy of symptoms │
│ │
│ 🔬 LAYER 2: ISOLATION │
│ └─ Interactive decision trees │
│ │
│ 🧠 LAYER 3: ANALYSIS │
│ └─ Cause-effect diagrams │
│ │
│ ⚡ LAYER 4: INTERVENTION │
│ └─ Step-by-step protocols │
│ │
│ ✅ LAYER 5: VERIFICATION │
│ └─ Validation checklists │
│ │
└──────────────────────────────────────────────────────────┘
How to Use This Guide¶
- Start with symptoms → Layer 1 (Identification)
- Follow decision tree → Layer 2 (Isolation)
- Understand root cause → Layer 3 (Analysis)
- Apply solution → Layer 4 (Intervention)
- Confirm fix → Layer 5 (Verification)
🎨 Visual Taxonomy of Symptoms¶
The Five Domains of Audio Problems¶
Every audio issue manifests in one or more of these domains:
🎧 AUDIO MANIFESTATION
│
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
📊 DOMAIN 🎵 DOMAIN ⏱️ DOMAIN
FREQUENCY TEMPORAL TIMING
│ │ │
│ │ │
▼ ▼ ▼
Spectrum Waveform Latency
Harmonics Transients Sync
Filtering Envelope Dropouts
Phase Dynamics Jitter
│ │ │
└────────────────────┼────────────────────┘
│
▼
💻 DOMAIN 🔌 DOMAIN
COMPUTATIONAL HARDWARE
│ │
▼ ▼
CPU Usage Interface
Memory Drivers
Threading Cables
Buffers Power
Symptom Matrix¶
╔═══════════════════════════════════════════════════════════════╗
║ SYMPTOM │ PRIMARY DOMAIN │ VISUAL PATTERN ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ 🔇 Silence │ 🔌 Hardware │ ────── ║
║ (No audio) │ 💻 Routing │ ║
║ ║
║ 📢 Distortion │ 📊 Frequency │ ╱╲╱╲╱╲╱╲╱╲ ║
║ (Harsh/saturated) │ 💻 Clipping │ (Squared waves) ║
║ ║
║ ⚡ Clicks/Pops │ ⏱️ Timing │ ───│───│─── ║
║ (Impulse noise) │ 💻 Buffer │ ↑ ↑ ║
║ ║
║ 🌊 Phasing │ 📊 Frequency │ ∿∿∿∿∿∿∿∿∿ ║
║ (Hollow sound) │ ⏱️ Phase │ (Comb filtering) ║
║ ║
║ 🐌 High Latency │ ⏱️ Timing │ Input ──→ Output ║
║ (Delayed response) │ 🔌 Hardware │ ⏰ ║
║ ║
║ 💥 CPU Spikes │ 💻 Compute │ ╱╲ ║
║ (Intermittent load) │ 💻 Threading │ ╱ ╲ ║
║ ║
║ 🎭 Glitching │ ⏱️ Timing │ ─ ─ ─ ─ ─ ║
║ (Random artifacts) │ 💻 Buffer │ (Dropouts) ║
║ ║
║ 🔊 Wrong Level │ 📊 Amplitude │ ↕️ ║
║ (Too loud/quiet) │ 💻 Gain │ (Level issue) ║
║ ║
║ 🎵 Pitch Shift │ ⏱️ Timing │ ↗️ ↘️ ║
║ (Wrong pitch) │ 🔌 Sample Rate │ (SR mismatch) ║
║ ║
║ 💀 Crash │ 💻 Memory │ ✕ ║
║ (DAW/plugin dies) │ 💻 Threading │ CRASH ║
║ ║
╚═══════════════════════════════════════════════════════════════╝
Detailed Symptom Profiles¶
⚡ Clicks & Pops¶
┌──────────────────────────────────────────────────────────┐
│ SYMPTOM: CLICKS/POPS │
├──────────────────────────────────────────────────────────┤
│ │
│ VISUAL MANIFESTATION: │
│ │
│ Normal waveform: │
│ ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿ │
│ │
│ With clicks: │
│ ∿∿∿∿│∿∿∿∿∿∿∿∿│∿∿∿∿∿∿│∿∿∿∿∿ │
│ ↑ ↑ ↑ │
│ Click Click Click │
│ │
│ CHARACTERISTICS: │
│ • Impulses of high energy │
│ • Duration: 1-10 samples │
│ • Spectrum: Broadband (all frequencies) │
│ • Periodicity: │
│ - Regular = Buffer underrun │
│ - Random = Algorithm discontinuity │
│ │
│ DOMAINS AFFECTED: │
│ ⏱️ Timing (primary) │
│ 📊 Frequency (secondary - full spectrum) │
│ 💻 Computational (root cause) │
│ │
│ PERCEPTUAL EXPERIENCE: │
│ 🎧 Audible "pop" sound │
│ 🎧 "Crackle" if frequent │
│ 🎧 Destroys musical immersion │
│ │
│ TYPICAL CAUSES: │
│ 1. Buffer underrun (CPU can't keep up) │
│ 2. Parameter discontinuity (no smoothing) │
│ 3. Sample rate mismatch │
│ 4. Denormal numbers │
│ 5. Thread contention │
│ │
└──────────────────────────────────────────────────────────┘
📢 Distortion¶
┌──────────────────────────────────────────────────────────┐
│ SYMPTOM: DISTORTION │
├──────────────────────────────────────────────────────────┤
│ │
│ VISUAL MANIFESTATION: │
│ │
│ Clean sine wave: │
│ ╱‾‾╲ │
│ ╱ ╲ │
│ ──╯ ╰── │
│ │
│ Hard clipping: │
│ ╱‾‾‾╲ │
│ ╱ ╲ ← Flat tops │
│ ──╯ ╰── │
│ │
│ Soft saturation: │
│ ╱‾╲ │
│ ╱ ╲ ← Rounded tops │
│ ──╯ ╰── │
│ │
│ SPECTRUM: │
│ │
│ Clean: │
│ │ │
│ │█ │
│ │█ │
│ └──────────────── │
│ f (single peak) │
│ │
│ Distorted: │
│ │ │
│ │█ █ █ █ █ │
│ │█ █ █ █ █ ← Harmonics │
│ └──────────────── │
│ f 2f 3f 4f 5f │
│ │
│ TYPES: │
│ • Hard clipping: Digital artifacts, harsh │
│ • Soft saturation: Musical, warm │
│ • Aliasing: Metallic, inharmonic │
│ • Bit reduction: Gritty, lo-fi │
│ │
│ DOMAINS: │
│ 📊 Frequency (harmonic addition) │
│ 💻 Algorithm (processing error) │
│ │
└──────────────────────────────────────────────────────────┘
🌊 Phasing Issues¶
┌──────────────────────────────────────────────────────────┐
│ SYMPTOM: PHASING/COMB FILTERING │
├──────────────────────────────────────────────────────────┤
│ │
│ VISUAL - WAVEFORM: │
│ │
│ Signal A: ∿∿∿∿∿∿∿∿∿∿ │
│ Signal B: ∿∿∿∿∿∿∿∿∿∿ ← Slightly delayed │
│ │ │
│ └─ Phase offset │
│ │
│ Sum: ∿∿∿∿∿∿∿∿∿∿ │
│ (Reduced amplitude due to cancellation) │
│ │
│ VISUAL - SPECTRUM: │
│ │
│ Normal: │
│ │█████████████████ │
│ │█████████████████ │
│ └────────────────── │
│ │
│ Comb filtered: │
│ │█ ░ █ ░ █ ░ █ ░ │
│ │█ ░ █ ░ █ ░ █ ░ ← Notches │
│ └────────────────── │
│ (Regular cancellations) │
│ │
│ PERCEPTUAL: │
│ 🎧 Hollow, "flanging" sound │
│ 🎧 Sounds like it's in a tunnel │
│ 🎧 Lacks bass or fullness │
│ 🎧 Moves when head position changes │
│ │
│ CAUSES: │
│ 1. Stereo signals summing with phase offset │
│ 2. Delay compensation issues in DAW │
│ 3. Plugin latency not reported correctly │
│ 4. Sample-accurate alignment problems │
│ │
└──────────────────────────────────────────────────────────┘
🔬 Diagnostic Decision Trees¶
Master Diagnostic Tree¶
🎧 AUDIO PROBLEM
│
│
┌────────────┴────────────┐
│ │
IS THERE IS THERE
AUDIO? AUDIO?
│ │
┌──────┴──────┐ ┌───────┴────────┐
│ │ │ │
NO YES NO YES
│ │ │ │
▼ ▼ ▼ ▼
🔇 ROUTE A: 🎵 ROUTE B:
No Audio Audio But
At All With Issues
Route A: No Audio Diagnostic¶
🔇 NO AUDIO AT ALL
│
│
┌────────────┴────────────┐
│ │
DO METERS DO METERS
IN DAW IN DAW
MOVE? MOVE?
│ │
┌──────┴──────┐ ┌────────┴────────┐
│ │ │ │
YES NO YES NO
│ │ │ │
▼ ▼ ▼ ▼
🎯 ROUTING 🎯 SIGNAL (Continue
ISSUE GENERATION same tree)
ISSUE
│ │
│ │
▼ ▼
┌───────────────┐ ┌─────────────────┐
│ 🔌 Hardware │ │ 💻 Processing │
│ 🎚️ DAW Mixer │ │ 🐛 Plugin Init │
│ 🎛️ Interface │ │ ⚙️ Config │
└───────────────┘ └─────────────────┘
Routing Issue Flowchart:
┌──────────────────────────────────────────────────────┐
│ 🔌 ROUTING DIAGNOSTIC PROCEDURE │
├──────────────────────────────────────────────────────┤
│ │
│ STEP 1: Physical Connections │
│ ┌────────────────────────────────────┐ │
│ │ Check: │ │
│ │ [ ] Cables connected? │ │
│ │ [ ] Correct outputs? │ │
│ │ [ ] Monitors powered on? │ │
│ │ [ ] Volume knob not at zero? │ │
│ └────────────────────────────────────┘ │
│ │
│ STEP 2: Interface Configuration │
│ ┌────────────────────────────────────┐ │
│ │ Verify: │ │
│ │ [ ] Correct interface selected │ │
│ │ [ ] Output routing configured │ │
│ │ [ ] Not muted in interface app │ │
│ └────────────────────────────────────┘ │
│ │
│ STEP 3: DAW Settings │
│ ┌────────────────────────────────────┐ │
│ │ Check: │ │
│ │ [ ] Master fader not at -∞ │ │
│ │ [ ] Track output to master │ │
│ │ [ ] Solo/mute states correct │ │
│ └────────────────────────────────────┘ │
│ │
│ VALIDATION TEST: │
│ Generate pink noise → Should hear output │
│ │
└──────────────────────────────────────────────────────┘
Route B: Audio With Problems¶
🎵 AUDIO EXISTS BUT HAS ISSUES
│
│
┌───────────────┴───────────────┐
│ │
PROBLEM IN PROBLEM IN
ALL PROJECTS? THIS PROJECT ONLY?
│ │
┌─────┴─────┐ ┌──────┴──────┐
│ │ │ │
YES NO YES NO
│ │ │ │
▼ ▼ ▼ ▼
🔧 SYSTEM 🎯 PROJECT 🎵 UNIVERSAL 📁 FILE
LEVEL SPECIFIC CONFIG SPECIFIC
│ │ │ │
│ │ │ │
▼ ▼ ▼ ▼
Driver Plugin DAW Project
Config Settings Prefs Corruption
Hardware Sample Rate Routing Bad Edits
System-Level Issues Flowchart:
┌──────────────────────────────────────────────────────┐
│ 🔧 SYSTEM-LEVEL DIAGNOSTIC │
├──────────────────────────────────────────────────────┤
│ │
│ TEST 1: Different DAW │
│ ┌────────────────────────────────────┐ │
│ │ Open plugin in different DAW │ │
│ │ │ │
│ │ Problem persists? │ │
│ │ YES → System/Plugin issue │ │
│ │ NO → Original DAW configuration │ │
│ └────────────────────────────────────┘ │
│ │
│ TEST 2: Standalone │
│ ┌────────────────────────────────────┐ │
│ │ Run plugin as standalone app │ │
│ │ │ │
│ │ Problem persists? │ │
│ │ YES → Plugin bug or system │ │
│ │ NO → Host compatibility │ │
│ └────────────────────────────────────┘ │
│ │
│ TEST 3: Different Computer │
│ ┌────────────────────────────────────┐ │
│ │ Test on another machine │ │
│ │ │ │
│ │ Problem persists? │ │
│ │ YES → Plugin bug (reproducible) │ │
│ │ NO → This computer's config │ │
│ └────────────────────────────────────┘ │
│ │
│ ISOLATION MATRIX: │
│ ┌─────────┬─────────┬──────────┬──────────┐ │
│ │ DAW 1 │ DAW 2 │ Standalone│ Result │ │
│ ├─────────┼─────────┼──────────┼──────────┤ │
│ │ ✗ │ ✗ │ ✗ │ Plugin │ │
│ │ ✗ │ ✓ │ ✓ │ DAW 1 │ │
│ │ ✗ │ ✓ │ ✗ │ Complex │ │
│ └─────────┴─────────┴──────────┴──────────┘ │
│ │
└──────────────────────────────────────────────────────┘
🧠 Cause-Effect Diagrams¶
Ishikawa (Fishbone) Diagram Template¶
🎯 SYMPTOM
│
┌───────────────────────────────────┼───────────────────────────────┐
│ │ │
│ │ │
CATEGORY 1 CATEGORY 2 CATEGORY 3
│ │ │
┌────┼────┐ ┌────┼────┐ ┌────┼────┐
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Cause Cause Cause Cause Cause Cause Cause Cause Cause
1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3
Example: Clicks & Pops Fishbone¶
⚡ CLICKS & POPS
│
┌───────────────────────────────────────┼──────────────────────────────┐
│ │ │
│ │ │
💻 PROCESSING ⏱️ TIMING/BUFFER 🔌 HARDWARE
│ │ │
┌────┼────┐ ┌────┼────┐ ┌────┼────┐
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Buffer Thread Denormal Buffer Sample Real-time USB Driver Power
Under- Race Numbers Size Rate Priority Issues Bugs Issue
run Condition Mismatch Change Not Set
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Too Lock Gradual Too Abrupt CPU Data Firmware Old
Heavy contention flush Small change spikes loss outdated driver
Process in DSP (<64) during from version
code samples playback OS
Detailed Cause Analysis: Buffer Underrun¶
┌──────────────────────────────────────────────────────────┐
│ CAUSE: BUFFER UNDERRUN │
├──────────────────────────────────────────────────────────┤
│ │
│ 📊 VISUAL MANIFESTATION: │
│ │
│ CPU Meter in DAW: │
│ ████████████░░░│████████████░░░│████████░░░ │
│ ↑ ↑ ↑ │
│ Spike Spike Spike │
│ (click) (click) (click) │
│ │
│ Audio Output: │
│ ─────────│─────────│─────────│────── │
│ Click Click Click │
│ │
│ 📐 MECHANISM: │
│ │
│ Expected Buffer Timeline: │
│ ┌──────────────────────────────────────────┐ │
│ │ Fill → Process → Fill → Process → Fill │ │
│ │ ████████▶ ████████▶ ████████▶ ████████▶ │ │
│ │ (Continuous smooth flow) │ │
│ └──────────────────────────────────────────┘ │
│ │
│ Actual (with underrun): │
│ ┌──────────────────────────────────────────┐ │
│ │ Fill → Process → WAIT → Fill → Process │ │
│ │ ████████▶ ███░░░░░▶ ████████▶ ███ │ │
│ │ ↑ │ │
│ │ DROPOUT │ │
│ │ = Click │ │
│ └──────────────────────────────────────────┘ │
│ │
│ 🎯 ROOT CAUSES: │
│ 1. CPU cannot process in real-time │
│ 2. Buffer size too small for heavy algorithm │
│ 3. Other processes interrupting │
│ 4. Thread priority not set to real-time │
│ 5. System power saving mode active │
│ │
│ 🔧 INTERVENTION PRIORITY: │
│ ⚡ QUICK: Increase buffer size │
│ 🎯 MEDIUM: Optimize algorithm │
│ 🏗️ LONG: Refactor for efficient threading │
│ │
│ ✅ VALIDATION: │
│ • CPU meter shows headroom (>30%) │
│ • Clicks disappear │
│ • Stress test: multiple plugin instances work │
│ │
└──────────────────────────────────────────────────────────┘
Fishbone: Distortion¶
📢 DISTORTION
│
┌────────────────────────────────────┼────────────────────────────┐
│ │ │
│ │ │
📊 SIGNAL LEVEL 💻 ALGORITHM ⚙️ CONFIG
│ │ │
┌────┼────┐ ┌────┼────┐ ┌────┼────┐
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Input Gain Output Overflow Aliasing Wrong Bit
Too Stage Clip (Integer) (Under- Sample Depth
Hot Error sample) Rate Setting
│ │ │ │ │ │ │
│ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼
>0dB Wrong No Fixed- No anti- 44.1k 16-bit
Input math limiter point aliasing when when
(pre- overflow filter should should
clip) be 48k be 24
⚡ Intervention Protocols¶
Protocol Template¶
╔═══════════════════════════════════════════════════════════╗
║ PROTOCOL: [PROBLEM NAME] ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ 🎭 SYMPTOMS: ║
║ • [Precise description of manifestation] ║
║ ║
║ 🎯 OBJECTIVE: ║
║ • [Desired state after intervention] ║
║ ║
║ ⚙️ COMPLEXITY: ⭐⭐⭐ ║
║ ⏱️ TIME: [Estimated duration] ║
║ 🛠️ TOOLS: [Required tools/software] ║
║ ║
╚═══════════════════════════════════════════════════════════╝
Complete Protocol: Eliminating Clicks/Pops¶
╔═══════════════════════════════════════════════════════════╗
║ PROTOCOL: CLICKS/POPS ELIMINATION ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ 🎭 SYMPTOMS: ║
║ • Audible clicks during playback ║
║ • Variable periodicity (regular or random) ║
║ • Intensity: Mild to severe ║
║ • Context: During audio processing ║
║ ║
║ 🎯 OBJECTIVE: ║
║ • Playback free of audible artifacts ║
║ • CPU usage stable < 70% ║
║ • Performance consistency in stress tests ║
║ ║
║ ⚙️ LEVEL: ⭐⭐ (Intermediate) ║
║ ⏱️ TIME: 20-45 minutes ║
║ 🛠️ TOOLS: ║
║ • LatencyMon (Windows) or similar ║
║ • Task Manager / Activity Monitor ║
║ • Audio stress test file ║
║ • DAW with CPU meter ║
║ ║
╚═══════════════════════════════════════════════════════════╝
Phase 1: Precise Diagnosis¶
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 PHASE 1: PRECISE DIAGNOSIS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1.1: Characterize the Click
┌──────────────────────────────────────────────────────┐
│ │
│ Play audio and observe: │
│ │
│ ⏱️ TIMING PATTERN: │
│ ┌────────────────────────────────────┐ │
│ │ [ ] Regular (every X seconds) │ │
│ │ [ ] At transport start/stop │ │
│ │ [ ] During parameter changes │ │
│ │ [ ] Random/intermittent │ │
│ └────────────────────────────────────┘ │
│ │
│ 🎚️ CPU CORRELATION: │
│ ┌────────────────────────────────────┐ │
│ │ Watch CPU meter in DAW: │ │
│ │ │ │
│ │ Pattern: │ │
│ │ ████████│░░░████│░░░████ │ │
│ │ ↑Click ↑Click │ │
│ │ │ │
│ │ [ ] Clicks coincide with spikes │ │
│ │ [ ] Clicks independent of CPU │ │
│ └────────────────────────────────────┘ │
│ │
│ 🎛️ BUFFER SIZE DEPENDENCY: │
│ ┌────────────────────────────────────┐ │
│ │ Test multiple buffer sizes: │ │
│ │ 64 samples → [ ] Clicks? │ │
│ │ 128 samples → [ ] Clicks? │ │
│ │ 256 samples → [ ] Clicks? │ │
│ │ 512 samples → [ ] Clicks? │ │
│ │ │ │
│ │ INTERPRETATION: │ │
│ │ • Improves with ↑buffer = CPU │ │
│ │ • Constant across sizes = Bug │ │
│ └────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
STEP 1.2: Isolate Source
┌──────────────────────────────────────────────────────┐
│ │
│ Methodical testing: │
│ │
│ 1️⃣ Bypass plugin → Clicks persist? │
│ YES = External to plugin │
│ NO = Plugin is source │
│ │
│ 2️⃣ Different DAW → Clicks persist? │
│ YES = Plugin or system issue │
│ NO = Original DAW configuration │
│ │
│ 3️⃣ Standalone mode → Clicks persist? │
│ YES = Plugin bug │
│ NO = Host/DAW interaction │
│ │
│ 4️⃣ Different project → Clicks persist? │
│ YES = Global issue │
│ NO = Project-specific problem │
│ │
│ ISOLATION MATRIX: │
│ ┌─────────┬────────┬──────┬─────────────┐ │
│ │ Bypassed│ Diff │ Stand│ Diagnosis │ │
│ │ │ DAW │ alone│ │ │
│ ├─────────┼────────┼──────┼─────────────┤ │
│ │ Gone │ n/a │ n/a │ This plugin │ │
│ │ Persist │ Gone │ n/a │ DAW config │ │
│ │ Persist │ Persist│ Gone │ Host issue │ │
│ │ Persist │ Persist│Persist│ Plugin bug │ │
│ └─────────┴────────┴──────┴─────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
Phase 2: Systematic Intervention¶
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔧 PHASE 2: SYSTEMATIC INTERVENTIONS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ROUTE A: If clicks correlate with CPU spikes
└→ PROBLEM: Computational capacity insufficient
┌──────────────────────────────────────────────────────┐
│ INTERVENTION A.1: Buffer Optimization │
├──────────────────────────────────────────────────────┤
│ │
│ Current buffer: [____] samples │
│ Target buffer: [____] samples │
│ │
│ ACTION: │
│ Audio Interface Settings → Increase Buffer Size │
│ │
│ Recommended progression: │
│ 64 → 128 → 256 → 512 → 1024 │
│ │
│ ⚖️ TRADE-OFF: │
│ Buffer ↑ = Latency ↑ but Stability ↑ │
│ │
│ Latency calculation: │
│ Latency (ms) = (Buffer Size / Sample Rate) × 1000 │
│ │
│ Example @ 48kHz: │
│ 64 samples = 1.3 ms │
│ 128 samples = 2.7 ms │
│ 256 samples = 5.3 ms ← Sweet spot for mixing │
│ 512 samples = 10.7 ms ← Safe for most work │
│ 1024 samples = 21.3 ms ← Very safe, high latency │
│ │
│ 🎯 TARGET: │
│ CPU meter shows 30%+ headroom │
│ │
│ ✅ VALIDATION: │
│ Play 5 minutes continuous → No clicks │
│ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ INTERVENTION A.2: System Optimization │
├──────────────────────────────────────────────────────┤
│ │
│ 🔹 STEP 1: Close Unnecessary Processes │
│ ┌────────────────────────────────────┐ │
│ │ Task Manager → Processes │ │
│ │ │ │
│ │ Close non-essential apps: │ │
│ │ [ ] Web browsers │ │
│ │ [ ] Cloud sync (Dropbox, OneDrive) │ │
│ │ [ ] Streaming apps (Spotify) │ │
│ │ [ ] Chat apps (Discord, Slack) │ │
│ │ [ ] Antivirus (temporarily) │ │
│ └────────────────────────────────────┘ │
│ │
│ 🔹 STEP 2: Power Settings (Windows) │
│ ┌────────────────────────────────────┐ │
│ │ Control Panel → Power Options │ │
│ │ │ │
│ │ Set: HIGH PERFORMANCE │ │
│ │ │ │
│ │ Advanced settings: │ │
│ │ • Min processor state: 100% │ │
│ │ • Max processor state: 100% │ │
│ │ • USB selective suspend: Disabled │ │
│ │ • PCIe Link State: Maximum Power │ │
│ └────────────────────────────────────┘ │
│ │
│ 🔹 STEP 2b: Power Settings (macOS) │
│ ┌────────────────────────────────────┐ │
│ │ System Preferences → Energy Saver │ │
│ │ │ │
│ │ • Prevent sleep during audio │ │
│ │ • Disable "Put hard disks to sleep"│ │
│ │ • Disable "Enable Power Nap" │ │
│ └────────────────────────────────────┘ │
│ │
│ 🔹 STEP 3: Network Optimization │
│ ┌────────────────────────────────────┐ │
│ │ Disable WiFi temporarily │ │
│ │ (WiFi scanning causes CPU spikes) │ │
│ │ │ │
│ │ Use Ethernet for online collab │ │
│ └────────────────────────────────────┘ │
│ │
│ 🔹 STEP 4: Audio Interface Driver │
│ ┌────────────────────────────────────┐ │
│ │ Check driver is up to date │ │
│ │ Use manufacturer's control panel │ │
│ │ Enable "exclusive mode" if available│ │
│ └────────────────────────────────────┘ │
│ │
│ ✅ VALIDATION: │
│ Run LatencyMon → All green indicators │
│ DPC latency < 100 μs │
│ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ INTERVENTION A.3: Plugin Optimization │
├──────────────────────────────────────────────────────┤
│ │
│ Within the plugin: │
│ │
│ 🔹 Reduce quality settings: │
│ • Oversampling: OFF or reduce factor │
│ • FFT size: Reduce if applicable │
│ • Filter order: Lower quality setting │
│ • High-quality mode: Disable │
│ │
│ 🔹 Disable non-essential features: │
│ • Visual displays (spectrum analyzers) │
│ • Metering (VU meters, phase scope) │
│ • Auto-gain compensation │
│ • Look-ahead processing │
│ │
│ 🔹 Optimize algorithm parameters: │
│ • Reduce reverb time │
│ • Lower number of voices (synths) │
│ • Decrease oversampling │
│ │
│ ✅ VALIDATION: │
│ CPU usage reduces by >20% │
│ Clicks disappear or reduce frequency │
│ │
└──────────────────────────────────────────────────────┘
ROUTE B: If clicks DON'T correlate with CPU
└→ PROBLEM: Algorithm/Timing issue
┌──────────────────────────────────────────────────────┐
│ INTERVENTION B.1: Parameter Smoothing Check │
├──────────────────────────────────────────────────────┤
│ │
│ 🎯 OBJECTIVE: │
│ Prevent abrupt discontinuities in parameters │
│ │
│ CONCEPT: │
│ │
│ Without smoothing: │
│ Parameter value: ──────┐ │
│ │← Discontinuity │
│ └──────── │
│ Result: Click! │
│ │
│ With smoothing: │
│ Parameter value: ──────╲ │
│ ╲← Smooth transition │
│ ╲ │
│ └──────── │
│ Result: Silent change │
│ │
│ CHECK IN CODE: │
│ • All setParameter() calls use smoothing │
│ • Smoothing time: 10-50ms typical │
│ • No direct coefficient updates │
│ │
│ TEST: │
│ Move parameters rapidly → Should be silent │
│ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ INTERVENTION B.2: Sample Rate Verification │
├──────────────────────────────────────────────────────┤
│ │
│ VERIFY CONSISTENCY: │
│ │
│ ┌─────────────────────────────────┐ │
│ │ DAW Project: [48000] Hz │ │
│ │ Audio Interface: [48000] Hz │ │
│ │ System: [48000] Hz │ │
│ │ Plugin Internal: [48000] Hz │ │
│ └─────────────────────────────────┘ │
│ │
│ ⚠️ CRITICAL: │
│ ALL must be identical! │
│ │
│ Common mismatches: │
│ • Project: 48k, Interface: 44.1k ← BAD │
│ • DAW: 48k, Plugin assumes: 44.1k ← BAD │
│ │
│ If mismatch found: │
│ 1. Close project │
│ 2. Set interface to desired rate │
│ 3. Create new project at same rate │
│ 4. Reload plugin │
│ 5. Verify plugin received correct SR │
│ │
│ HOW TO CHECK: │
│ • Interface control panel │
│ • DAW project settings │
│ • Plugin may show SR in UI │
│ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ INTERVENTION B.3: Zero-Crossing Detection │
├──────────────────────────────────────────────────────┤
│ │
│ For algorithms that splice/cut audio: │
│ │
│ CONCEPT: │
│ │
│ Bad cut: │
│ ───╱──│ ← Cut here │
│ ────╲─│ Discontinuity! Click! │
│ │
│ Good cut: │
│ ───╱╲─│── ← Cut at zero crossing │
│ 0 │
│ ↑ Smooth, no click! │
│ │
│ IMPLEMENTATION: │
│ • Detect when signal ≈ 0 │
│ • Only modify/cut at those points │
│ • Apply small crossfade anyway (safety) │
│ │
│ CODE PATTERN: │
│ ``` │
│ // Find zero crossing │
│ while (abs(signal[i]) > threshold) { │
│ i++; │
│ if (i > searchLimit) break; │
│ } │
│ // Now safe to cut at i │
│ ``` │
│ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ INTERVENTION B.4: Denormal Prevention │
├──────────────────────────────────────────────────────┤
│ │
│ PROBLEM: │
│ Very small numbers (< 1e-38) cause CPU to spike │
│ │
│ CONCEPT: │
│ │
│ Normal processing: │
│ Value: 0.5 → 0.1 → 0.01 → ... → 0.0 │
│ CPU: ███ ███ ███ ███ │
│ │
│ Denormal hell: │
│ Value: ... → 1e-39 → 1e-40 → ... │
│ CPU: ████████████████████ ← Spike! │
│ │
│ SOLUTIONS: │
│ │
│ Method 1: DC Offset │
│ ``` │
│ output += 1e-20; │
│ output -= 1e-20; │
│ ``` │
│ │
│ Method 2: Flush-to-Zero (FTZ) │
│ ``` │
│ _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); │
│ ``` │
│ │
│ Method 3: Manual check │
│ ``` │
│ if (abs(value) < 1e-15) value = 0.0; │
│ ``` │
│ │
│ WHERE TO APPLY: │
│ • Feedback loops (reverbs, delays) │
│ • Filter states │
│ • Envelope outputs │
│ │
└──────────────────────────────────────────────────────┘
Phase 3: Validation¶
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ PHASE 3: EXHAUSTIVE VALIDATION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TEST SUITE:
┌──────────────────────────────────────────────────────┐
│ TEST 1: Continuous Playback │
│ ┌────────────────────────────────────┐ │
│ │ Duration: 10 minutes minimum │ │
│ │ │ │
│ │ Success criteria: │ │
│ │ [ ] No audible clicks │ │
│ │ [ ] CPU stable < 70% │ │
│ │ [ ] No DAW warnings/errors │ │
│ │ [ ] Output level consistent │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ TEST 2: Parameter Automation │
│ ┌────────────────────────────────────┐ │
│ │ Move ALL parameters: │ │
│ │ • Full range (min to max) │ │
│ │ • Fast and slow movements │ │
│ │ • Simultaneous multi-param │ │
│ │ │ │
│ │ Success criteria: │ │
│ │ [ ] No clicks during changes │ │
│ │ [ ] Smooth parameter response │ │
│ │ [ ] No zipper noise │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ TEST 3: Stress Test │
│ ┌────────────────────────────────────┐ │
│ │ Load multiple instances (5-10) │ │
│ │ │ │
│ │ Play all simultaneously: │ │
│ │ • Complex source material │ │
│ │ • Full parameter automation │ │
│ │ • Run for 5 minutes │ │
│ │ │ │
│ │ Success criteria: │ │
│ │ [ ] System remains stable │ │
│ │ [ ] No clicks even under load │ │
│ │ [ ] CPU < 85% at peak │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ TEST 4: Edge Cases │
│ ┌────────────────────────────────────┐ │
│ │ Test critical transitions: │ │
│ │ [ ] Transport start/stop │ │
│ │ [ ] Loop boundaries │ │
│ │ [ ] Bypass on/off │ │
│ │ [ ] Project load/save │ │
│ │ [ ] Sample rate change (if sup.) │ │
│ │ [ ] Buffer size change │ │
│ │ │ │
│ │ Success criteria: │ │
│ │ All transitions silent and smooth │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
VALIDATION CHECKLIST:
┌──────────────────────────────────────────────────────┐
│ ✅ ALL TESTS MUST PASS │
│ │
│ If ANY test fails: │
│ 1. Document which test failed │
│ 2. Note exact conditions │
│ 3. Return to Phase 2 │
│ 4. Try next intervention │
│ 5. Re-run full test suite │
│ │
│ Only mark as RESOLVED when: │
│ ✓ All 4 tests pass completely │
│ ✓ Results consistent across 3 runs │
│ ✓ No degradation over time │
│ │
└──────────────────────────────────────────────────────┘
Phase 4: Documentation¶
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 PHASE 4: DOCUMENTATION & PREVENTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
INCIDENT REPORT:
┌──────────────────────────────────────────────────────┐
│ 📝 CLICKS/POPS RESOLUTION REPORT │
├──────────────────────────────────────────────────────┤
│ Date: _______________ │
│ System: _____________ │
│ DAW: ________________ │
│ Plugin Version: _____ │
│ │
│ ORIGINAL SYMPTOM: │
│ ________________________________________________ │
│ ________________________________________________ │
│ │
│ ROOT CAUSE IDENTIFIED: │
│ [ ] Buffer underrun │
│ [ ] Parameter discontinuity │
│ [ ] Sample rate mismatch │
│ [ ] Denormals │
│ [ ] Other: __________ │
│ │
│ SOLUTION APPLIED: │
│ ________________________________________________ │
│ ________________________________________________ │
│ │
│ FINAL SETTINGS: │
│ Buffer size: _______ samples │
│ Sample rate: _______ Hz │
│ Power mode: High Performance [ ] │
│ Other: _________________________________________ │
│ │
│ RESOLUTION TIME: _____ minutes │
│ │
│ LESSONS LEARNED: │
│ ________________________________________________ │
│ ________________________________________________ │
│ ________________________________________________ │
│ │
│ PREVENTION MEASURES IMPLEMENTED: │
│ ________________________________________________ │
│ ________________________________________________ │
│ │
└──────────────────────────────────────────────────────┘
BEST PRACTICES ESTABLISHED:
┌──────────────────────────────────────────────────────┐
│ 🛡️ FUTURE PREVENTION │
│ │
│ Minimum buffer size: _______ samples │
│ Target CPU headroom: > 30% │
│ Parameter smoothing: ALWAYS ON │
│ Zero-crossing: ON for audio splicing │
│ Denormal prevention: ACTIVE │
│ │
│ Regular maintenance schedule: │
│ [ ] Weekly system cleanup │
│ [ ] Monthly driver updates check │
│ [ ] Quarterly performance audit │
│ │
│ Team notification: Share findings with team │
│ Documentation: Update internal wiki │
│ │
└──────────────────────────────────────────────────────┘
✅ Verification Matrix¶
Universal Verification Template¶
╔═══════════════════════════════════════════════════════════╗
║ VERIFICATION MATRIX ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ PROBLEM: [Name] ║
║ SOLUTION APPLIED: [Description] ║
║ DATE: [___] TECHNICIAN: [___] ║
║ ║
║ ┌───────────────────────┬──────────┬─────────┬────────┐ ║
║ │ TEST CRITERIA │ EXPECTED │ ACTUAL │ ✓/✗ │ ║
║ ├───────────────────────┼──────────┼─────────┼────────┤ ║
║ │ Symptom eliminated │ None │ │ │ ║
║ │ CPU usage normal │ < 70% │ │ │ ║
║ │ Sustained playback OK │ 10 min │ │ │ ║
║ │ Parameter changes safe│ Silent │ │ │ ║
║ │ Multiple instances OK │ 5+ stable│ │ │ ║
║ │ Stress test passed │ No issues│ │ │ ║
║ │ Transport reliable │ No clicks│ │ │ ║
║ │ Edge cases handled │ All pass │ │ │ ║
║ └───────────────────────┴──────────┴─────────┴────────┘ ║
║ ║
║ PASS RATE: ___/8 (Must be 8/8 to mark RESOLVED) ║
║ ║
║ OVERALL STATUS: ║
║ [ ] RESOLVED - All tests pass ║
║ [ ] PARTIAL - Some tests fail ║
║ [ ] UNRESOLVED - Most tests fail ║
║ ║
║ IF PARTIAL/UNRESOLVED: ║
║ Next steps: ________________________________________ ║
║ ____________________________________________________ ║
║ ║
╚═══════════════════════════════════════════════════════════╝
🛠️ Toolbox Reference¶
Essential Diagnostic Tools¶
╔═══════════════════════════════════════════════════════════╗
║ DIAGNOSTIC TOOLBOX ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ 🔍 SYSTEM DIAGNOSTICS ║
║ ├─ LatencyMon (Win) │ DPC/ISR latency analysis ║
║ ├─ Task Manager │ Process monitoring ║
║ ├─ Activity Monitor (Mac)│ System resource usage ║
║ └─ HWiNFO │ Hardware monitoring ║
║ ║
║ 📊 AUDIO ANALYSIS ║
║ ├─ Audacity │ Waveform analysis ║
║ ├─ iZotope RX │ Spectrogram/repair ║
║ ├─ SPAN (Voxengo) │ Spectrum analyzer (free) ║
║ └─ Oscilloscope plugin │ Real-time waveform ║
║ ║
║ 🧪 TESTING UTILITIES ║
║ ├─ Signal generator │ Test tones (sine, noise) ║
║ ├─ Null test │ A/B comparison ║
║ ├─ Plugin Doctor │ Plugin analysis tool ║
║ └─ Room EQ Wizard │ Acoustic measurement ║
║ ║
║ 🔧 SYSTEM UTILITIES ║
║ ├─ Process Lasso │ CPU priority management ║
║ ├─ VoiceMeeter │ Virtual audio routing ║
║ ├─ ASIO4ALL (Win) │ Universal ASIO driver ║
║ └─ BlackHole (Mac) │ Virtual audio device ║
║ ║
╚═══════════════════════════════════════════════════════════╝
Tool Usage Guide¶
LatencyMon (Windows)¶
┌──────────────────────────────────────────────────────┐
│ LATENCYMON USAGE │
├──────────────────────────────────────────────────────┤
│ │
│ PURPOSE: Identify system processes causing DPC │
│ (Deferred Procedure Call) latency │
│ │
│ HOW TO USE: │
│ 1. Download from resplendence.com/latencymon │
│ 2. Run as Administrator │
│ 3. Click Start button │
│ 4. Play audio in your DAW │
│ 5. Let run for 5-10 minutes │
│ 6. Click Stop and analyze results │
│ │
│ INTERPRETING RESULTS: │
│ │
│ ✅ GOOD: │
│ Highest measured interrupt: < 100 μs │
│ Average: < 50 μs │
│ Message: "Your system is suitable..." │
│ │
│ ⚠️ WARNING: │
│ Highest: 100-500 μs │
│ May experience clicks occasionally │
│ │
│ ❌ BAD: │
│ Highest: > 500 μs │
│ Clicks very likely │
│ │
│ COMMON CULPRITS: │
│ • Network adapters (WiFi scanning) │
│ • USB devices │
│ • Video drivers (GPU) │
│ • Antivirus software │
│ │
│ SOLUTIONS: │
│ 1. Update drivers for offending devices │
│ 2. Disable WiFi during audio work │
│ 3. Remove problematic USB devices │
│ 4. Configure antivirus to exclude DAW │
│ │
└──────────────────────────────────────────────────────┘
📋 Quick Reference Cards¶
Card 1: Problem Identification Matrix¶
┌─────────────────────────────────────────────────────┐
│ QUICK SYMPTOM → DOMAIN REFERENCE │
├─────────────────────────────────────────────────────┤
│ │
│ SYMPTOM → PRIMARY DOMAIN │
│ ─────────────────────────────────────────────── │
│ 🔇 No audio → 🔌 Hardware/Routing │
│ 📢 Distortion → 📊 Frequency/Clipping │
│ ⚡ Clicks/Pops → 💻 CPU/Buffer │
│ 🌊 Phasing → ⏱️ Timing/Phase │
│ 🐌 High Latency → 🔌 Driver/Buffer │
│ 💥 CPU Spikes → 💻 Algorithm │
│ 🎭 Glitches → ⏱️ Buffer/Threading │
│ 🔊 Wrong Level → 📊 Gain Staging │
│ 🎵 Pitch Issues → ⏱️ Sample Rate │
│ 💀 Crashes → 💻 Memory/Threading │
│ │
└─────────────────────────────────────────────────────┘
Card 2: First Response Protocol¶
┌─────────────────────────────────────────────────────┐
│ FIRST RESPONSE TO ANY AUDIO PROBLEM │
├─────────────────────────────────────────────────────┤
│ │
│ 1. 🎧 Can you HEAR the problem? │
│ Document the audible characteristic │
│ │
│ 2. 📊 What does it LOOK like? │
│ Check waveform, meters, spectrum │
│ │
│ 3. ⏱️ WHEN does it happen? │
│ Always? On start? During parameter changes? │
│ │
│ 4. 🔄 Can you REPRODUCE it? │
│ Consistent? Intermittent? Random? │
│ │
│ 5. 🎯 Is it PROJECT-specific? │
│ Test in different projects │
│ │
│ 6. 💻 Check CPU meter │
│ Does problem correlate with CPU usage? │
│ │
│ 7. 🎚️ Try different BUFFER SIZE │
│ 64 → 128 → 256 → 512 │
│ │
│ 8. 📝 DOCUMENT everything │
│ You'll need this for diagnosis │
│ │
└─────────────────────────────────────────────────────┘
Card 3: Nuclear Option (Emergency)¶
┌─────────────────────────────────────────────────────┐
│ ⚠️ NUCLEAR OPTION - WHEN EVERYTHING IS BROKEN │
├─────────────────────────────────────────────────────┤
│ │
│ Use this as LAST RESORT when nothing else works │
│ │
│ 1. Close ALL applications │
│ 2. Disconnect from internet (disable WiFi) │
│ 3. Reboot computer (fresh start) │
│ 4. Set power plan: High Performance │
│ 5. Disable antivirus temporarily │
│ 6. Open ONLY your DAW (nothing else) │
│ 7. Increase buffer size to 512 or 1024 │
│ 8. Load single instance of plugin │
│ 9. Test with simple sine wave │
│ │
│ If STILL broken after this: │
│ → Hardware problem (interface, cable, etc.) │
│ → Driver corruption (reinstall drivers) │
│ → Plugin bug (report to developer) │
│ → System incompatibility │
│ │
│ This eliminates ALL variables and establishes │
│ baseline functionality. Then add back one │
│ element at a time to identify the culprit. │
│ │
└─────────────────────────────────────────────────────┘
🎓 Educational Appendix¶
Understanding Digital Audio Flow¶
┌──────────────────────────────────────────────────────┐
│ COMPLETE DIGITAL AUDIO SIGNAL CHAIN │
├──────────────────────────────────────────────────────┤
│ │
│ 1. ANALOG INPUT │
│ ┌─────────┐ │
│ │Microphone│ │
│ │ or │ │
│ │Instrument│ │
│ └────┬─────┘ │
│ │ (Analog voltage) │
│ ▼ │
│ │
│ 2. AUDIO INTERFACE - ADC │
│ ┌──────────────────┐ │
│ │ Analog to Digital│ │
│ │ Conversion │ │
│ └────────┬─────────┘ │
│ │ (Digital samples @ sample rate) │
│ ▼ │
│ │
│ 3. DRIVER LAYER │
│ ┌──────────────────┐ │
│ │ ASIO / CoreAudio │ │
│ │ Driver │ │
│ └────────┬─────────┘ │
│ │ (Buffered blocks) │
│ ▼ │
│ │
│ 4. DAW HOST │
│ ┌──────────────────┐ │
│ │ Audio Engine │ │
│ │ Routing │ │
│ └────────┬─────────┘ │
│ │ (Audio + MIDI) │
│ ▼ │
│ │
│ 5. PLUGIN PROCESSING │
│ ┌──────────────────┐ │
│ │ Your DSP Code │ │
│ │ process() │ │
│ └────────┬─────────┘ │
│ │ (Processed audio) │
│ ▼ │
│ │
│ 6. DAW MIXING & MASTER │
│ ┌──────────────────┐ │
│ │ Mix Bus │ │
│ │ Master Fader │ │
│ └────────┬─────────┘ │
│ │ (Final mix) │
│ ▼ │
│ │
│ 7. AUDIO INTERFACE - DAC │
│ ┌──────────────────┐ │
│ │ Digital to Analog│ │
│ │ Conversion │ │
│ └────────┬─────────┘ │
│ │ (Analog voltage) │
│ ▼ │
│ │
│ 8. ANALOG OUTPUT │
│ ┌──────────┐ │
│ │ Monitors │ │
│ │Headphones│ │
│ └──────────┘ │
│ │
│ TIMING: All steps must complete within buffer time │
│ Buffer time = BufferSize / SampleRate │
│ Example: 256 samples @ 48kHz = 5.3ms │
│ │
└──────────────────────────────────────────────────────┘
Buffer Management Explained¶
┌──────────────────────────────────────────────────────┐
│ BUFFER MANAGEMENT: HOW IT WORKS │
├──────────────────────────────────────────────────────┤
│ │
│ CONCEPT: │
│ Audio is processed in BLOCKS (buffers), not samples │
│ │
│ DOUBLE BUFFERING (Typical): │
│ │
│ ┌────────────────────────────────────────┐ │
│ │ TIME → │ │
│ ├────────────────────────────────────────┤ │
│ │ │ │
│ │ Buffer A: ████████ (Being played) │ │
│ │ Buffer B: ████████ (Processing)│ │
│ │ │ │
│ │ Then they swap: │ │
│ │ │ │
│ │ Buffer A: ████████ (Processing)│ │
│ │ Buffer B: ████████ (Being played) │ │
│ │ │ │
│ └────────────────────────────────────────┘ │
│ │
│ WHAT CAN GO WRONG: │
│ │
│ 1. UNDERRUN (Most common): │
│ ┌────────────────────────────────────────┐ │
│ │ Buffer A: ████████ (Playing) │ │
│ │ Buffer B: ███░░░ (Not ready!) │ │
│ │ ↑ │ │
│ │ Processing took │ │
│ │ too long! │ │
│ │ = CLICK │ │
│ └────────────────────────────────────────┘ │
│ │
│ 2. BUFFER TOO SMALL: │
│ Less time to process │
│ = Higher CPU requirement │
│ = More likely to underrun │
│ │
│ 3. BUFFER TOO LARGE: │
│ More time to process │
│ = Higher latency │
│ = Sluggish response │
│ │
│ FINDING THE SWEET SPOT: │
│ ┌────────────────────────────────────────┐ │
│ │ Buffer Latency Stability │ │
│ ├────────────────────────────────────────┤ │
│ │ 64 Very Low Low (risky) │ │
│ │ 128 Low Medium │ │
│ │ 256 Medium High ← RECOMMENDED│ │
│ │ 512 High Very High │ │
│ │ 1024 Very High Maximum │ │
│ └────────────────────────────────────────┘ │
│ │
│ RULE OF THUMB: │
│ • Recording: 128-256 (low latency needed) │
│ • Mixing: 256-512 (stability priority) │
│ • Mastering: 512-1024 (max quality) │
│ │
└──────────────────────────────────────────────────────┘
🎯 Summary¶
This Visual Diagnostic Guide provides:
- ✅ 5-layer systematic approach to troubleshooting
- ✅ Visual symptom taxonomy for quick identification
- ✅ Decision trees for methodical isolation
- ✅ Cause-effect diagrams for understanding root causes
- ✅ Step-by-step protocols for interventions
- ✅ Verification matrix for confirming solutions
- ✅ Tool reference for diagnostics
- ✅ Quick reference cards for emergencies
- ✅ Educational appendix for deep understanding
Use this guide as a thinking framework, not a cookbook.
Every audio problem is unique, but the diagnostic methodology remains constant.
Master the system. Solve any audio issue. 🎧🔍