본문으로 건너뛰기
cccskills
무료GitHub에 공개

audio-performance-debug

Profiling strategy for audio CPU issues — xruns, spikes, and buffer underruns. Use when the user reports CPU overload, audio glitches under load, or performance regressions. Trigger on phrases like "I'm getting xruns", "my plugin causes CPU spikes", "dropouts under high voice count", "audio thread is too slow", "how do I profile my DSP". References audio-numerics-review for denormal slowdown and audio-dsp-review for lock contention.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(2)

  • SKILL.md4.4 KB
  • references/performance-patterns.md8.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Audio Performance Debug

Audio performance requires good worst-case complexity, not average-case — the audio thread fires on a hard deadline every buffer, regardless of what else is happening.

Step 1 — Identify the symptom

Measure before guessing. Different symptoms point to different root causes.

SymptomMeasurement approach
Consistent high CPU averageCPU meter in DAW; perf stat / Instruments Time Profiler
Sporadic xruns / dropoutsHost xrun log; correlate with system events (GC, network, page fault)
CPU spikes on note-onProfile with many simultaneous note-on events; watch for allocation spikes
Latency reporting wrongLog getLatencySamples() before and after prepareToPlay at varying buffer sizes
Gets worse with more voicesProfile with 1 vs 8 vs 32 voices; O(N²) shows quadratic growth
Memory bandwidth pressureperf mem / VTune memory bandwidth counter; cache miss rate

Step 2 — Locate the hotspot

  • Build a release (optimized) binary before profiling — debug builds are not representative.
  • Use a reproducible test case: fixed buffer size, fixed voice count, looped audio.
  • Attach a profiler to the audio thread specifically, not the whole process.
  • Identify the top-3 hottest functions by exclusive CPU time, not inclusive.
  • Check whether the spike is periodic (every N buffers → container rehash or GC) or random (OS jitter, page fault).
PlatformProfilerNotes
macOSInstruments — Time ProfilerFilter to audio I/O thread; use "hide system libraries" to focus on your code
macOSInstruments — AllocationsCatch allocations on the audio thread during a session
Linuxperf record -g + perf report--call-graph dwarf for C++ templates; perf stat for cache miss ratio
WindowsVTune Profiler — HotspotsUse "Platform Profiler" preset; filter to realtime thread
Cross-platformTracyFrame-level instrumentation; zero-cost when disabled; shows per-buffer timing
JUCEjuce::PerformanceCounterInline timer around suspect blocks; logs to console

Step 3 — Fix patterns

Anti-patternWhy it hurtsOptimization
O(N²) voice loopQuadratic growth — 32 voices = 1024 iterations per sampleRestructure to O(N): batch per-voice work, use SIMD across voices
Wrong FFT sizePower-of-two FFT on non-power-of-two frames → zero-padding wasteSize FFT to next power-of-two; or use prime-factor FFT (FFTW FFTW_MEASURE)
Unnecessary buffer copymemcpy of full buffer each callbackProcess in-place; pass pointer + length; avoid intermediate staging buffers
std::map / unordered_map lookup on audio threadO(log N) / amortized O(1) but with cache misses; unordered_map rehash = allocReplace with std::array + index, or a sorted std::array with lower_bound
unordered_map insertTriggers rehash → heap allocation on audio threadPre-populate at prepareToPlay; never insert during playback
Heap allocation on audio threadnew/delete acquires global allocator lockPre-allocate in prepareToPlay; use pool or ring buffer; see audio-dsp-review
First-touch page faultOS maps physical pages on first write → stallprepareToPlay: allocate AND write to every byte of every buffer
Scalar loop over samplesCompiler may not auto-vectorize complex loopsUse JUCE FloatVectorOperations, xsimd, or explicit SIMD intrinsics
Denormal-induced slowdownSubnormal FP values cause 100× slowdown on x86Set FTZ+DAZ in prepareToPlay; see audio-numerics-review
Lock contentionMutex held by UI thread blocks audio threadReplace with atomics or SPSC queue; see audio-dsp-review

For anti-pattern code examples and platform profiler workflows see references/performance-patterns.md.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

au-review

무료

Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to review an AudioUnit plugin, check an AUv3 app extension, audit property or parameter handling, or asks "is my AUComponent thread-safe?" or "why does my AU crash in Logic?". Trigger on phrases like "review my AudioUnit", "check my AUv3", "is my render block safe?", or when you see AURenderCallback, internalRenderBlock, kAudioUnitProperty_*, or AUAudioUnit in the code.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops, crackling, silence, DC offset, aliasing, phase issues, or latency problems. Trigger on phrases like "why do I hear clicks?", "my output has DC offset", "there's aliasing in my oscillator", "phase is wrong in mono", "dropout when CPU spikes". Pairs with audio-dsp-review (realtime safety) and audio-numerics-review (numeric correctness) — use those to fix once the cause is found.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

Reviews audio DSP and audio processing code for realtime safety violations. Use whenever the user asks to review, audit, or check audio processing code — including plugin process callbacks, audio engine render functions, DSP implementations, or any code that runs on the audio thread. Trigger on phrases like "review my processBlock", "check this DSP code", "is this safe for the audio thread?", "review my JUCE plugin", or when you see an audio callback and spot potential realtime violations. Flag issues proactively even when the user hasn't explicitly asked for a review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

Explains DSP math concepts to developers who need the theory behind an algorithm. Use whenever the user asks how a signal-processing concept works, wants intuition behind a formula, or hits a math-shaped bug. Trigger on phrases like "how does a Fourier transform work", "explain z-transforms", "what is convolution", "why does my biquad ring", "what is windowing for", "what causes aliasing", or "how do I convert gain to dB". Also trigger when the user pastes DSP code and asks why it behaves a certain way.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness issues — filters, feedback loops, fixed-point arithmetic, accumulation loops, or any numeric computation in audio code. Trigger on "check this filter for NaN", "why does my reverb blow up?", "is this numerically stable?", "why do I hear DC in my output?". Pairs with audio-dsp-review (realtime safety); this skill covers numeric correctness. Flag issues proactively.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

Traces and documents signal paths, bus/aux architecture, and sidechain connections in audio systems. Surfaces hidden coupling between audio components. Use when the user asks to trace a signal chain, explain audio routing, understand an audio graph, locate sidechain sources, or describe how audio flows through a plugin or engine. Trigger on phrases like "trace this signal chain", "explain this audio routing", "what calls what in this audio graph", "where does the sidechain come from", "how does audio flow through this plugin".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kunitoki/sonic-skills222026년 5월 21일 업데이트

kunitoki의 스킬 모두 보기

이 스킬의 문제 신고