Extended banks (D/E/F) + stereo mode#4
Open
HiDAl wants to merge 11 commits into
Open
Conversation
Was clamping to programsPerBank (10) instead of numBanks (5). The banks array only has numBanks elements, so an out-of-range index would access beyond the array. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AudioStreamCustom: base class for plugins with per-sample DSP that bypasses Teensy AudioConnection routing. Subclasses implement fillBlock() to generate 128 audio samples. Banks.hpp: numBanks 5 → 6 Banks_Def.hpp: add BANKS_DEF_4 (Resonant Bodies), BANKS_DEF_5 (Chaos Machines), BANKS_DEF_6 (Stochastic) Banks.cpp: add includes and bank6 to array Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
These use standard AudioConnection routing (no custom DSP): - FormantNoise: noise → 3 SVF bandpass → mixer (vowel formants) - IceRain: S&H → freeverb → mixer (ambient droplets) - NoiseHarmonics: noise + DC → wavefolder → SVF lowpass - DroneBody: 2 cross-FM sines → mixer → wavefolder - FlangeNoise: pink noise → flanger - BitShift: 2 sawtooths → XOR digital combine - RunawayFilter: noise → SVF bandpass at extreme Q - MetallicNoise: 6 square oscs → 3 mixers → SVF highpass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bank D custom DSP: - CombNoise, PluckCloud, TubeResonance (comb filter / delay-based) - BowedMetal, NoiseBells (high-Q 2-pole resonators) Bank E custom DSP: - LogisticNoise, HenonDust (mathematical chaos) - CellularSynth (CA + 8 sawtooth phase accumulators) - StochasticPulse (random impulses + inline SVF) - FeedbackFM (self-feedback sine) - GlitchLoop (buffer capture + bit degradation) - SubHarmonic (square + frequency dividers) - DualAttractor (coupled Lorenz + sine oscillators) Bank F custom DSP: - PulseWander, TwinPulse, QuantPulse, ShapedPulse, ShiftPulse - NoiseSlew, NoiseBurst (inline noise generation) - LFSRNoise (16-bit LFSR with selectable taps) - DualPulse (dual S&H) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
make — compile for Teensy 4.0 make upload — compile + flash (auto-detects port) make clean — remove build artifacts make port — list available serial ports Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Double-click the encoder to toggle stereo mode: - B mirrors A's algorithm automatically - XA/YA control both generators - XB = stereo width (timbral offset between L/R) - YB = stereo movement (LFO speed for offset) - Both display dots light up to indicate stereo - Offset applied to k2 (timbre) not k1 (pitch) - B syncs when A changes program Single click delayed 300ms to distinguish from double-click. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rewritten README with build instructions, bank overview, stereo mode summary, memory usage, and links to detailed guides. Documentation copied from VCV repo: - NOISE_PLETHORA_PLUGIN_GUIDE.md — all 60 algorithms with parameters - NOISE_PLETHORA_CATEGORIES.md — programs by use case - NOISE_PLETHORA_STEREO_GUIDE.md — stereo mode and patch ideas Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace timbral offset with real amplitude panning (gainL/gainR modulation via sine LFO). Add time-based LFO with quadratic speed response (max 1.5 Hz, independent of loop rate). Save and restore B's bank, program, and A/B mode on stereo toggle. Auto-exit bank mode on stereo entry. Show both decimal dots in bank mode + stereo. Add setGains() to AudioProcessor. Update README and stereo guide with complete control reference and panning details. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stereo mode now survives power cycles. On boot, if stereo was active, B is synced to A and encoder is forced to A mode. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… compilation - Fix incorrect "3 generators (A, B, C)" reference to "2 generators (A and B)" - Exclude 7 unused experimental plugins from compilation to save flash space - Document experimental plugins in README with re-enable instructions - Add EEPROM layout table to README - Clarify stereo mode display behavior in STEREO_GUIDE Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Follow-up to #3 — per @xustafu's request, targeting the new
Communitybranch.Summary
AudioStreamCustombase class for per-sample DSPTransparency
As noted in #3, this was developed with Claude (Anthropic). I directed design, tested on hardware, and curated results — Claude wrote the C++/DSP. Flagging here too so reviewers know what they're looking at.
Open questions from @xustafu (issue #3)
Happy to discuss on this PR:
Point me at the specific algos and I'll dig in.