You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,7 +83,7 @@ When patching Circle's `lib/usb/gadget/` to add `CUSBAudioGadget` for combined O
83
83
## Live pitch shifting via MIDI control
84
84
85
85
-**Wrapper instantiation and bypass**: `pLivePitchWrapper` is instantiated unconditionally in `audio.cpp::setup()`. In `loopMachine::update()`, audio is routed through the wrapper ONLY when `pTheAPC->getDebugState().liveEngaged` is true. When pitch shifting is OFF, audio completely bypasses the wrapper for zero-latency passthrough.
86
-
-**signalsmith-stretch configuration**: Configured with blockSamples=1024, intervalSamples=256, yielding ~32ms total processing latency at 48kHz. Wrapper buffers input in 512-sample temp arrays and calls `m_stretch.process()` on each feedAudio/retrieveAudio call pair.
86
+
-**signalsmith-stretch configuration**: Configured with blockSamples=1024, intervalSamples=256, yielding ~32ms total processing latency at 48kHz. Wrapper buffers input in 1024-sample temp arrays and calls `m_stretch.process()` on each feedAudio/retrieveAudio call pair.
87
87
-**Pitch scale formula**: When engaged, `_applyLivePitch()` in `apcKey25Transpose.cpp` calls `pLivePitchWrapper->setPitchScale(pow(2.0f, semitones / 12.0f))`. Semitone range is ±6 depending on MIDI source.
88
88
-**CC1 (mod wheel) control**: MIDI CC 1 sets pitch via deadzone logic. Values 59-69 (center range) disengage the effect (`m_liveEngaged = false`), setting scale to 1.0. Values outside deadzone map to ±6 semitones: `semitones = ((data2 - 64) * 6.0f / 63.0f)` and engage the effect.
89
89
-**CC52 control**: MIDI CC 52 maps 0-127 linearly to ±6 semitones: `semitones = (data2 / 127.0f) * 12.0f - 6.0f`. This always engages the effect without checking a deadzone.
0 commit comments