tap.vca~ — standalone VCA (clean / warm / swing), + swing drive on the 808 noise voices#53
Merged
Merged
Conversation
A new MSP external wrapping the extracted taptools::vca kernel (submodule pin bumped to 253d550). The left inlet is audio; the right inlet is the gain / control voltage (signal for per-sample modulation, or a float). - circuit clean (default): pure linear multiply, bit-identical to *~. - circuit warm: the TB-303 one-transistor class-A stage — the same kernel tap.303~ runs — biased-tanh saturation applied after the gain, so the even-harmonic warmth and compression track the control voltage, with an output DC block (dcblock) that sheds the shaper's signal-dependent offset. - drive/bias shape the warm circuit (stock at the 303's 2.0 / 0.3). Full vertical slice: wrapper + CMake + wrapper test (attribute defaults, forwarding, clamping) + maxref + help patcher. REVIVAL.md §7 and the 303/808 plans note the extraction; when the flagged 808 circuit-sim phase models the swing VCA's harmonics, that character lands here as a third circuit mode. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
…tap.vca~ Bumps the kernel pin to 1b3c284 (vca.h mode_swing + swing_vca drive). - tap.808.snare~/clap~/tom~ gain a `drive` circuit-bend attribute (0..12, default 0 = the calibrated linear model, bit-identical). Raised, it engages the swing VCA's symmetric harmonic saturation on the noise path — grit and compression that ride the envelope. Wrapper tests + maxrefs updated. - tap.vca~ gains `circuit swing` (the TR-808 swing-type VCA, the same stage), alongside clean/warm; `drive` now documented for both warm and swing. REVIVAL.md §7 and plans/tap.808.md record the swing mode landing; the heavier WDF @circuit pass stays A/B-gated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
Pulls in the bit-identical rimshot unification (its inline swing-VCA tanh is now the shared vca.h swing_shape) and the calibration notebook / render-tool drive knobs. No change to the built externals' behavior; keeps the Max package built against the complete feature kernel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
Satisfies the Tap House CI style gate:
- clang-format-18 over the touched source/projects/*.cpp (tap.vca~ + the
tap.808.{snare,clap,tom}~ drive attributes) — layout only.
- braces around the tap.vca~ circuit setter's if/else-if
(readability-braces-around-statements).
No behavior change; the affected wrapper tests still pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
tap/TapTools#17 merged (rebase), rewriting the feature commits onto main with new SHAs — so the previous pin (8e02ac5, a feature-branch commit) is no longer on kernel main. Re-point submodules/taptools at the merged main tip, which carries the identical swing-VCA kernel. No change to the built externals. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Ships
tap.vca~, a new MSP external built on the sharedvca.hkernel, and exposes the TR-808 swing-VCAdriveon the noise-voice wrappers. Pins the kernel from tap/TapTools#17 (thevca.hextraction + swing mode + calibration notebook).New object —
tap.vca~A voltage-controlled amplifier: left inlet audio, right inlet the gain / control voltage (signal for per-sample modulation, or a float). Three circuits:
*~.drive/biasexposed (stock 3032.0/0.3).Full vertical slice: wrapper +
CMakeLists.txt+ wrapper test (defaults, forwarding, clamping) +docs/tap.vca~.maxref.xml+help/tap.vca~.maxhelp.808 wrappers
tap.808.snare~/clap~/tom~gain adrivecircuit-bend attribute (0..12, default 0 = the calibrated linear model, bit-identical). Raised, it engages the swing VCA's symmetric harmonic saturation on the noise path. Wrapper tests + maxrefs updated.Per the calibration notebook in tap/TapTools#17,
drivestays a creative bend, not a promoted default — the data shows the linear model already matches the real 808 on these voices. (The tonal rimshot, where swing is a fidelity win, already ships saturated in the kernel; no wrapper change needed.)Testing
ctestgreen for the affected wrappers (tap.vca_tilde,tap.808.{snare,clap,tom}_tilde); all objects build against the pinned kernel. macOS-universal / in-Max runtime validation remains the standing local gate (unchanged by this PR).🤖 Generated with Claude Code
https://claude.ai/code/session_01GQDkcxQY5w8AV5cJdiHMHS
Generated by Claude Code