Allomorph is an analog modeling and digital twin pipeline that transforms bass pickup and transducer signals—across active, passive, and acoustic piezo topologies—into authentic digital twin voices of iconic high-impedance passive pickup circuits, active preamps, and acoustic instruments.
Designed specifically for neural-capable pedalboards like the Darkglass Anagram, Tone3000 web training, and DAW plugin hosts, Allomorph produces:
-
Direct Digital Twin Wet Audio Stems: High-precision 48 kHz / 24-bit PCM wet stems synthesized via native WAV SPICE circuit simulation and non-linear magnetic dynamics with ITU-R BS.1770-4 gated loudness calibration (
$-20.50\text{ LUFS}$ ) and true-peak safety. -
Tone3000 Upload Bundles: Turnkey training packs partitioned by pickup affinity (
neck,bridge,parallel,direct) conforming to Tone3000 Studio Trainer specifications with zero-scroll display naming ($\le 34$ chars) and cryptographic SHA256 manifest provenance. -
Neural Amp Modeler (NAM) Profiles: High-efficiency Architecture 2 (A2) slimmable neural models (
channels_3+channels_8) trained wet-to-wet ($X_{\text{src}} \to Y_{\text{tgt}}$ ) under the A2 Studio Reference standard ($\text{ESR} \le 0.0080$ ) for single-block front-end deployment in Block 1 of the Darkglass Anagram. -
Interactive Frequency Response Visualizations: High-performance Polars + Altair Vega-Lite interactive documentation portal (
docs/frequency_responses.html) modeling analytical transfer functions and differential curves.
In modern bass signal chains, trying to convert a passive bass to sound active with digital EQ/IRs runs into fundamental mathematical limits: high-frequency content has already been attenuated by the passive coil's 12 dB/octave low-pass filter. Boosting those missing frequencies elevates noise and introduces comb-filtering artifacts.
Allomorph provides bidirectional, universal transformation:
- Active Sources (e.g. EMG X-Series @ 18V): Deliver a flat, wideband (20 Hz – 20+ kHz), high-headroom, low-noise signal with near-zero inductive peaking, allowing Allomorph to forward-simulate the exact physical and electrical transfer function of any vintage passive or active target voicing without boosting background hiss.
-
Passive Sources (e.g. Precision, Jazz, Mustang): Modeled via direct forward digital twin simulation rather than fragile linear deconvolution. Both the source passive pickup (with authentic RLC loading, pot damping, and magnetic core saturation) and the target voice are simulated forward from master unvoiced string excitation, enabling an Architecture 2 neural model to learn the direct wet-to-wet mapping (
$X_{\text{src}} \to Y_{\text{tgt}}$ ). This eliminates the noise elevation and Gibbs truncation ringing inherent in attempting to invert a passive coil's steep 12 dB/octave low-pass filter, allowing vintage passive coils to morph seamlessly into modern active buffers, hot overwound humbuckers, or alternative scale lengths. (Analytical differential curves$H_{\text{diff}} = H_{\text{tgt}} / H_{\text{src}}$ remain available in the visualizer for frequency analysis). - Acoustic & Piezo Transducers: Bridge force transducers and body cavity resonances faithfully emulated without artificial magnetic assumptions.
While an Impulse Response (IR) or FIR filter can reproduce a static frequency curve, physical guitar and bass pickups and transducers are fundamentally non-linear, dynamic, reactive electro-mechanical systems. Relying solely on a linear IR misses the core physical behavior and tactile response of a real instrument:
-
Linear Time-Invariance (LTI) vs. Analog Dynamic "Give":
- An IR is strictly linear and time-invariant: plucking pianissimo (
$pp$ ) or digging in with aggressive slap or heavy pick strokes ($ff$ ) produces the identical transfer function. - Real passive magnetic pickups exhibit dynamic core excursion non-linearities and flux compression when strings swing close to the pole pieces. Allomorph models this dynamic non-linearity via vector soft-knee saturation ($V_{\text{sat}} \cdot \tanh(v / V_{\text{sat}})$), reproducing the
$1.5\text{--}2.5\text{ dB}$ of tactile compression, bloom, and dynamic "give" experienced when digging into real copper coils.
- An IR is strictly linear and time-invariant: plucking pianissimo (
-
Pre-Conditioning Downstream Distortion Stages:
- In a digital modeler like the Darkglass Anagram, Allomorph sits in Block 1, directly feeding high-gain preamps and overdrives (Microtubes B7K, Vintage Ultra, Alpha·Omega).
- A linear IR passes high-headroom active transients through uncompressed, causing subsequent overdrive stages to clip on artificial, brittle spikes. An Allomorph neural model pre-conditions the signal with true passive saturation and impedance damping, ensuring downstream distortion blocks saturate smoothly and musically.
-
Eddy Currents & Time-Domain Energy Storage:
- Metal components (pole pieces, baseplates, covers) generate circulating eddy currents that produce frequency-dependent damping (
$R_{\text{eddy}}$ ) and subtle phase lag during rapid string transients. - An IR treats this as a stationary frequency cut. A Neural Amp Modeler (NAM) neural network captures the dynamic time-domain energy storage and release of the complete reactive RLC network.
- Metal components (pole pieces, baseplates, covers) generate circulating eddy currents that produce frequency-dependent damping (
-
Multi-Coil Spatial Phase Summing:
- Instruments with multiple coils or pickups (Jazz Bass pairs, P/J, StingRay dual coils) feature complex spatial cancellation patterns that vary with string amplitude and string displacement. NAM neural models capture compound phase interactions and harmonic cancellation across the full frequency spectrum without comb-filtering artifacts or phase smearing.
-
Non-Linear Harmonic Generation vs. Noise Floor Explosion (Restoring Missing High End):
- An Impulse Response (IR) or linear FIR filter is strictly linear time-invariant ($Y(f) = X(f) \cdot H(f)$). If the source pickup has missing or heavily attenuated high frequencies—such as wide neck coil aperture low-pass sinc filtering, warm active preamp roll-offs, or physical comb-filter notches down by
$-20\text{ to }-40\text{ dB}$ at$8\text{--}12\text{ kHz}$ —a linear IR can only attempt to restore high end by applying an extreme linear boost ($+20\text{ to }+40\text{ dB}$ ). - Linearly boosting an attenuated band amplifies everything in that frequency range—including input thermal Johnson noise, pickup hiss, and electromagnetic interference (EMI)—creating an unlistenable wall of high-frequency noise. Furthermore, if a physical harmonic was extinguished in a comb null (
$H_{\text{src}}(f) \approx 0$ ), linear multiplication by zero remains zero. - In sharp contrast, a direct stem
$\to$ stem Neural Amp Modeler (NAM) neural network is a deep non-linear convolutional system. Rather than blindly multiplying low-amplitude bins, the network generates appropriate, phase-coherent upper harmonics directly from the strong fundamental and lower-order string overtones present in the source signal. This dynamically synthesizes authentic high-end sparkle, metallic attack clank, and top-end air, restoring the missing high end without boosting the underlying noise floor or amplifying pickup hiss.
- An Impulse Response (IR) or linear FIR filter is strictly linear time-invariant ($Y(f) = X(f) \cdot H(f)$). If the source pickup has missing or heavily attenuated high frequencies—such as wide neck coil aperture low-pass sinc filtering, warm active preamp roll-offs, or physical comb-filter notches down by
Note
Allomorph synthesizes zero-latency minimum-phase FIR filters internally (via its homomorphic real-cepstrum Hilbert transform engine) to model physical aperture sinc responses, saddle boundary stiffness, and linear circuit stages starting strictly at sample 0. However, Allomorph does not output static linear IRs for hardware IR loaders—because real pickups are dynamic, non-linear systems. Its flagship pipeline trains lightweight NAM Architecture 2 (A2) neural models and Tone3000 upload packs to preserve the full dynamic touch sensitivity, magnetic flux sag, core hysteresis, and analog bloom of physical passive circuits.
While Allomorph supports any active, passive, or acoustic source bass, physical transducer hardware fundamentally determines the raw harmonic information and dynamic boundary conditions delivered to the digital twin modeling pipeline. On a standard 34.0" scale (
- The Actual Ideal Bass: Real Harmonic Dual-Transducer Architecture (Reverse PX + MMTWX) — Built for maximum acoustic realism, tactile dynamic feedback, reverse-split string balancing, and standalone analog versatility by sampling string standing-wave modes at their physical harmonic antinodes.
- The Ideal Single-Pickup Bass: The Zero-Decoupling Reference Transducer — Built for zero cognitive overhead, foolproof patch switching on stage, zero inter-pickup phase comb notches, and zero secondary magnetic string drag.
In physical string mechanics, transverse wave reflections off the rigid bridge saddle impose an absolute, fret-invariant spatial comb filter envelope on string displacement:
Because wave speed
A single pickup at any fixed location
[Nut] ════════════════════════════════════════════════════════════════════════════════ [Bridge]
◄─── Reverse PX ───► ◄─── MMTWX ───►
D/G: 145.4 mm Neck: 77.4 mm
E/A: 115.6 mm Bridge: 54.6 mm
-
Neck Transducer (Reverse EMG PX Split @
$130.5\text{ mm}$ Centerline):-
Low-Frequency Output (
$\propto f \cdot x$ ): Large distance from the bridge saddle yields$+7.5\text{ dB}$ higher raw fundamental output ($20\log_{10}(130/55)$) than the bridge position, providing deep, authoritative fundamental body physically at the transducer. -
Forward D/G Half (
$x = 145.4\text{ mm}$ ): Senses high strings where physical excursion is naturally small, adding warm low-mids, singing body, and long sustain without thinness. -
Rearward E/A Half (
$x = 115.6\text{ mm}$ ): First comb null sits at$307\text{ Hz}$ on low E. Senses heavy low strings closer to the bridge where mechanical excursion is controlled, tightening low-end fundamental transient attack and eliminating flub.
-
Low-Frequency Output (
-
Bridge Transducer (EMG MMTWX Dual-Mode @
$66.0\text{ mm}$ Centerline):-
Dual-Coil Centerline (
$x = 66.0\text{ mm}$ ): Pushes the first spatial comb null up to$538\text{ Hz}$ on low E (leaving the entire low-mid growl passband completely un-notched). Its physical$0.90''$ coil spacing generates the authentic$2.5\text{ kHz}$ acoustic humbucker notch directly on the string. -
Single-Coil Mode (
$x = 54.6\text{ mm}$ ): Pushes the first comb null to$651\text{ Hz}$ . Senses high transverse velocity and saddle witness-point boundary stiffness ($H_{\text{saddle}}$ ), delivering biting 60s/70s Jazz bridge growl and percussive attack.
-
Dual-Coil Centerline (
-
Optimal Neural Convergence & Rapid Training (
$\text{ESR} \le 0.0080$ ): When targeting a Vintage P-Bass (precision_vintage) or a StingRay (stingray_parallel), the pickup is already in the physically authentic harmonic position. Because the source wet stem ($X_{\text{src}}$ ) already contains real standing-wave antinodes and genuine physical displacement, the NAM Architecture 2 neural network only needs to learn the passive RLC circuit impedance and magnetic core saturation dynamics—never having to synthesize missing harmonic content or un-notch spatial comb cancellations from an arbitrary pickup position. -
Tone3000 Affinity Bundling (
bundles/<pickup>/): Aligns seamlessly with Tone3000's strict 1 Dry + Multiple Wet Stems constraint. Target voicings partition naturally by physical position affinity:-
bundles/px/for Neck voicings (precision_*,jazz_neck_*,mudbucker_deep,upright_acoustic) -
bundles/mmtwx_dual/andmmtwx_single/for Bridge voicings (stingray_*,jazz_bridge_*,rickenbacker_*,dingwall_bridge) -
bundles/blend_parallel/for Parallel blends (jazz_pair_*,pj_*,p_mm_*,dingwall_parallel) Each bundle maps a dedicated, physically authentic dry excitation stem to its affine target stems, maximizing training accuracy and preserving acoustic realism.
-
-
Physical Dynamic Excursion & Soft-Knee Compression: Large string displacement over the neck pickup drives the magnetic core into natural soft-knee flux compression ($V_{\text{sat}} \cdot \tanh(v/V_{\text{sat}})$) and dynamic inductance modulation (
$\lambda_L$ "quack"), responding with tactile give when digging in hard. - Broad Production Bass Support: While the dual-transducer Reverse PX + MMTWX configuration provides dedicated multi-position harmonic capture, Allomorph natively supports standard single-pickup and multi-pickup production instruments (e.g. 34" Precision Bass, 34" Jazz Bass, 34" StingRay, 30" Mustang P/J, Dingwall NG/Combustion) through their own physical configuration models and dedicated dry excitation bundles.
Allomorph models the complete electro-acoustic path in four distinct layers:
[String Vibration]
│
▼
1. Magnetic Aperture & Spatial Comb Filtering
├── Coil Sensing Width (w): High-frequency sinc filtering across multi-string wave speeds
└── Dual-Coil Spacing (d): Humbucker spatial phase cancellation
│
▼
2. Coil RLC Network (Passive Digital Twin)
├── Coil Inductance (L) & DC Resistance (R_dc)
├── Inter-Winding Self-Capacitance (C_coil)
└── Eddy-Current Core Damping (R_eddy) in pole pieces & blades
│
▼
3. On-Instrument Control Circuit
├── Master Volume Potentiometer (500k audio taper)
├── Hybrid Treble-Bleed Network (1.0 nF || 150 kΩ + 20 kΩ)
└── Optional Capacitive C-Switch Bank
│
▼
4. Output Environment
├── Instrument Cable Capacitance (~750 pF for standard 15-ft cable)
└── Receiver Input Impedance (1 MΩ || 30 pF Darkglass Anagram input stage)
Allomorph converts the lower tension and warm low-mid "bloom" of 30" short-scale and 32" medium-scale instruments into the focused, piano-like authority of full-scale and fanned-fret instruments:
-
Wave-Speed Scaling (
$\kappa_v$ ): Up-shifts aperture and comb-filter null frequencies by$+13.3%$ (for 34") and$+23.3%$ (for 37" multi-scale). -
String Tension Filtering: Tightens tubby
$180\text{--}250\text{ Hz}$ boom while adding laser-tight sub-bass ($40\text{--}80\text{ Hz}$ ) and metallic Dingwall-style clank ($2.5\text{--}3.8\text{ kHz}$ ). - Spatial Placement Tracking: Relocates pickups from short-scale bridge positions to standard 34" and 37" sweet spots.
Allomorph includes pre-configured physical and electrical parameters for 24 distinct pickup topologies, active buffers, and transducers including active 2-band preamps, Stellartone ToneStyler discrete capacitive switching, fanned-fret multi-scale, and upright double bass (see docs/voice_catalog.md for full engineering specifications):
| Profile ID | Tone Name | Pickup Type | Topology | Harness / Controls |
|
Circuit & Acoustic Character | |
|---|---|---|---|---|---|---|---|
precision_vintage |
Precision Vintage | Vintage '62 P | Single Split | Vintage CTS |
Classic Alnico V split-coil wide open; touch-sensitive dynamic response, woody organic bloom. | ||
precision_mids |
Precision Mids | Vintage '62 P (22nF) | Single Split | 22nF ToneStyler Pure Shunt ( |
Modern Fender spec; punchy |
||
precision_warm |
Precision Warm | Vintage '62 P (47nF) | Single Split | 47nF ToneStyler Pure Shunt ( |
Authentic Jamerson Motown flatwound thump; 47nF pure capacitive shunt with pillowy low-end warmth. | ||
precision_active |
Precision Active | Modern Active Split P | Single Split | Sadowsky 2-Band Active Preamp ( |
|
Ceramic split-coil with active 2-band buffer; transparent punch, pick attack clarity, and wide headroom. | |
precision_dub |
Precision Dub | Vintage '50s P (100nF) | Single Split | 100nF ToneStyler Pure Shunt ( |
Sub-bass | Original 1951–1959 Fullerton factory paper-in-oil spec; massive sub-bass shelf rolloff ( |
|
jazz_pair_open |
Jazz Pair Open | Vintage 60s J-Bass Pair | Dual Parallel | Vintage |
Dual narrow single-coils in parallel; 60s |
||
jazz_pair_mids |
Jazz Pair Mids | 60s J-Bass Pair (22nF) | Dual Parallel | Vintage |
Vocal midrange honk ( |
||
jazz_pair_active |
Jazz Pair Active | Modern Active Jazz | Active 2-Band | Sadowsky 2-Band ( |
Isolated 60s J-pair with Sadowsky active 2-band boost; wideband sparkle with |
||
jazz_bridge_growl |
Jazz Bridge Growl | Jaco Biased J-Pair (100%/75%) | Dual Parallel Decoupled | Bridge 100% ( |
Signature Jaco Pastorius vocal bridge growl; |
||
jazz_bridge_open |
Jazz Bridge Open | 60s J-Bass Bridge | Single Coil | Vintage |
60s bridge single-coil ( |
||
jazz_neck_warm |
Jazz Neck Warm | 60s J-Bass Neck | Single Coil | Vintage |
60s neck single-coil ( |
||
stingray_parallel |
StingRay Parallel | Music Man StingRay | Active MM Buffer | Music Man 2-Band ( |
Authentic active 2-band MM humbucker; cable isolation, comb notch at |
||
stingray_series |
StingRay Series | Music Man MM (Series) | Active Series Buffer | Music Man 2-Band Preamp Buffer | Dual-coil humbucker in series with active buffer; |
||
dingwall_bridge |
Dingwall Bridge | Multi-Scale MM Bridge | Angled Parallel | Dingwall Active Onboard Buffer ( |
34"-37" fanned-fret angled bridge sweet spot ( |
||
dingwall_middle |
Dingwall Middle | Multi-Scale MM Middle | Angled Parallel | Dingwall Active Onboard Buffer ( |
34"-37" fanned-fret angled middle sweet spot ( |
||
dingwall_parallel |
Dingwall Parallel | Multi-Scale Bridge/Middle | Dual Parallel | Dingwall Active Onboard Buffer ( |
Dual angled FD3n coils in parallel; modern scooped slap tone with extended harmonic overtone series. | ||
rickenbacker_clank |
Rickenbacker Clank | High-Pass Bridge | Series HPF | Factory Rickenbacker |
High-output bridge coil with vintage |
||
rickenbacker_open |
Rickenbacker Open | Rickenbacker Toaster Neck | Single Coil | Factory Rickenbacker |
Warm, open vintage toaster neck pickup voicing; organic low end with glassy high-mid articulation. | ||
pj_passive |
PJ Passive | Vintage '80s Passive P/J | Parallel Sum | Dual |
Vintage Alnico V split-P and 60s J-bridge in parallel; authentic '80s Fender Special / Yamaha BB thump. | ||
pj_active |
PJ Active | Modern Active P/J | Active 2-Band | Sadowsky/Spector 2-Band ( |
Active 2-band boost with isolated ceramic P/J coils; punchy sub-bass fundamental and aggressive clank. | ||
p_mm_parallel |
P/MM Parallel | Modern Active P/MM | Active Buffer | Studio Active Buffer ( |
Authentic active parallel P/MM (Sandberg VM / Lakland 44-02); Split-P neck + MM parallel bridge into buffer. | ||
p_mm_series |
P/MM Series | Modern Active P/MM (Series) | Active Series Buffer | Studio Active Buffer ( |
Split P and MM parallel humbucker wired in series before active buffer; |
||
mudbucker_deep |
Mudbucker Deep | Heavy Series MM | Ultra Series | Gibson |
Overwound dual-coil series humbucker; subterranean low end with natural high-frequency rolloff. | ||
upright_piezo |
Upright Piezo | Double Bass Transducer | Bridge Force | High-Impedance PZT Piezo Buffer, |
— |
|
Bridge saddle force transducer; maple rocking resonance, wood mass rolloff, Spirocore compliance (pair with 3 Sigma AST IRs). |
Allomorph models acoustic aperture and scale tension in Python, executes the passive circuit digital twin directly using its native WAV SPICE simulator, and trains lightweight NAM (.nam) neural captures for Block 1 of the Darkglass Anagram:
Renders interactive frequency response curves in Altair (Vega-Lite), comparing all 24 target configurations against any source instrument. Outputs are organized into per-instrument standalone charts and a unified interactive portal:
# Generate interactive charts for all configured source instruments and refresh master portal:
uv run python scripts/analyze_voices.py
# Generate or refresh for a specific instrument (preserves all other instrument charts):
uv run python scripts/analyze_voices.py --instrument 32in_fretless
uv run python scripts/analyze_voices.py --instrument 30inOutputs: Master interactive portal at docs/frequency_responses.html (and docs/frequency_responses/index.html) with embedded tabbed navigation and spec breakdown, and per-instrument standalone visualizations in docs/frequency_responses/<instrument_id>.html.
Directly streams raw bass string excitation audio (audio/input.wav) through the entire physical digital twin in a single in-memory forward pass:
-
Acoustic Aperture & Placement: De-humbucking sinc aperture filtering, spatial standing-wave comb filtering, displacement tilt (
$\Delta x$ ), scale tension filtering, saddle boundary layer stiffness ($H_{\text{saddle}}$ ), and multi-pickup causal arrival delay ($\tau_i$ ). -
Branch-Wise Dynamic Non-Linear Compliance: Pre-summing magnetic saturation for composite pickups with soft-knee saturation ($V_{\text{sat}} \cdot \tanh(v / V_{\text{sat}})$), Lenz flux sag, Dahl hysteresis, back-EMF braking, dynamic reluctance quack, velocity-modulated aperture bloom (
$\kappa_{\text{ap}}$ ), and GIL-free (nogil=True) state-space ODE kernels for full multi-core scalability. -
Passive Pickup Circuit Twin: Exact closed-form nodal AC transfer functions, Foster 2-stage eddy-current damping, solid Alnico pole skin dispersion, authentic volume/tone pot dividers, active preamp buffers (flat DC transmission, zero Gibbs ripples), hybrid treble bleed, cable capacitance (
$750\text{ pF}$ ), and pedalboard load ($1\text{ M}\Omega \parallel 30\text{ pF}$ ). -
Calibrated Loudness & True-Peak Safety: ITU-R BS.1770-4 gated loudness normalization (
$-20.50\text{ LUFS}$ /$-20.50\text{ dBFS}$ RMS) strictly bounded by a 4x oversampled true-peak safety ceiling ($\le 0.9900$ /$-0.09\text{ dBFS}$ ) via transparent linear peak scaling to avoid double compression.
Allomorph features a built-in WAV SPICE simulator running natively on Apple Silicon (arm64). Accelerated by a master 21-point Lossless fsqrt rail limiters, Horner dipole polynomials, and passband-constrained oversampling), the engine evaluates exact analytical nodal equations and vector non-linearities directly in memory on the audio waveform, eliminating external SPICE dependencies (such as LTspice or ngspice) and intermediate disk writes while executing in ~0.8s per voice (>1500x faster than traditional transient SPICE engines):
# Run unified WAV SPICE simulation from raw audio for a specific voice (~0.8s):
uv run allomorph-sim --voice precision_active --instrument 30in
# Simulate all voices in parallel across multi-core CPU (-j / --jobs):
uv run allomorph-sim --voice all --instrument 30in -j 8
# Rapid prototyping run on first 2 seconds (96,000 samples):
uv run allomorph-sim --voice stingray_parallel --max-samples 96000
# Run via master pipeline (direct forward simulation stage):
uv run allomorph --stage sim --voice precision_activeTrains a high-efficiency NAM Architecture 2 (A2) neural model directly pairing the source instrument wet stem (
# Train NAM Architecture 2 (A2) model for Darkglass Anagram Block 1:
# Both input (X_src) and target (Y_tgt) are synthesized wet audio files:
nam train audio/wet/30in_emg_mmtw/mmtw_dual.wav audio/wet/34in_standard_p/precision_vintage.wav ./models/30in_emg_mmtw/precision_vintage.nam --architecture "A2"
# Run via the automated Allomorph trainer (defaults to Architecture 2 slimmable container with goal ESR <= 0.0080):
uv run allomorph --stage train --instrument 30in --voice precision_active
# Customize goal ESR or disable early stopping:
uv run allomorph --stage train --instrument 30in --voice precision_active --goal-esr 0.0050
uv run allomorph --stage train --instrument 30in --voice precision_active --no-goal-esr --epochs 400
# Train A2-Lite channels_8 only (instead of the default slimmable container):
uv run allomorph --stage train --instrument 30in --voice precision_active --a2-lite-only(In modern versions of neural-amp-modeler and the official Google Colab trainer, --architecture A2 is the default. With the optimal bass dry excitation file featuring the Section 9E Dedicated Representative Bass Performance Suite, Allomorph trains the full slimmable Architecture 2 container (both channels_3 and channels_8) by default under the A2 Studio Reference standard (--goal-esr 0.0080, 400 max epoch safety ceiling, --batch-size 32, monitoring channels_8). To isolate the 8-channel submodel only, supply --a2-lite-only).
Note
Complete Training Guide & Audio Pairings:
For the complete reference table of input/target audio pairings for direct single-block and Tone3000 models, see docs/training.md.
Execute the entire pipeline or specific stages with a single command:
# Run complete pipeline for 30" source instrument (sim -> pack -> train -> viz):
uv run allomorph --instrument 30in
# Direct forward simulation of wet audio stems (with multi-core parallel jobs):
uv run allomorph --stage sim --instrument 30in --jobs 4
# Clear audio/ directory and regenerate wet stems across all instruments:
uv run allomorph --clean-audio --stage sim --jobs 4
# Export Tone3000 upload bundles:
uv run allomorph --stage pack --instrument 30in
# Train local NAM models:
uv run allomorph --stage train --instrument 30in --voice precision_active
# Audit catalog audio telemetry (loudness, true-peak, crest factor, DC offset):
uv run allomorph --stage audit
uv run allomorph --stage audit --verbose
# Generate interactive Altair frequency visualizations:
uv run allomorph --stage viz[Bass: Active / Passive / Piezo]
│
▼
[Block 1: Allomorph NAM Preamp]
└── Model: "stingray_parallel.nam" (Architecture 2 neural capture)
│
▼
[Block 2: Darkglass Preamp / Drive]
└── Microtubes B7K, Vintage Ultra, or Alpha·Omega
│
▼
[Block 3: Speaker Cabinet IR Loader]
└── Ampeg 8x10, Darkglass 4x10, or custom speaker cab impulse
│
▼
[Output to FOH / Audio Interface]
allomorph/
├── README.md # Project vision, theory, architecture, and CLI guide
├── docs/ # In-depth technical guides
│ ├── architectural_guardrails.md # Master mathematical reference handbook & derivations
│ ├── dsp_simulation_engine.md # Virtual Analog SIMD simulation engine & Numba JIT
│ ├── configuration_reference.md # Complete schema & field reference for TOML configurations
│ ├── voice_catalog.md # Complete passive pickup technical catalog & parameters
│ ├── circuit_theory.md # RLC, eddy current, and cable impedance math
│ ├── aperture_math.md # Magnetic aperture sinc, multi-string & scale physics
│ └── anagram_workflow.md # Darkglass Anagram Block 1 routing & gain staging
├── config/ # Modular TOML configuration files
│ ├── instruments/ # Source bass geometries, pickups & embedded circuits
│ │ ├── 30in_emg_mmtw.toml # 30" active EMG MMTWX dual-mode bass
│ │ ├── 34in_active_stingray.toml # 34" active Music Man StingRay bass
│ │ ├── 34in_standard_p.toml # 34" standard P-bass template
│ │ └── 34in_standard_jazz.toml # 34" standard Jazz bass template
│ ├── preamps.toml # Reusable active preamp catalog (Sadowsky, StingRay, Aguilar, Dingwall)
│ ├── scales.toml # Scale lengths & baseline string wave speeds
│ └── strings.toml # Physical string core/wrap mechanical presets
├── src/ # Core reusable library package
│ └── allomorph/
│ ├── config/ # Modular TOML configurations & geometry
│ │ ├── scales.py # Scale length & wave-speed loader
│ │ ├── strings.py # String mechanics presets loader
│ │ ├── voices.py # Voice registry & 24 declarative target models
│ │ ├── instruments.py # Source instrument loader & cache
│ │ └── geometry.py # Pickup coils & aperture geometry resolution
│ ├── naming.py # UI slugs, Tone3000 filenames, and CLI resolution
│ ├── dsp.py # Minimum-phase FIR synthesis and 24-bit WAV I/O
│ ├── physics/ # Physical acoustic & spatial modeling subpackage
│ │ ├── strings.py # String mechanics, dispersion, wave continuum
│ │ ├── aperture.py # Sinc & Bessel aperture integrals, saddle stiffness
│ │ └── prefilter.py # Minimum-phase FIR prefilter synthesis
│ ├── circuit/ # Native WAV SPICE circuit simulation subpackage
│ │ ├── parser.py # SPICE value parsing & magnet metallurgy properties
│ │ ├── solver.py # Modified Nodal Analysis (MNA) solver & AC curves
│ │ ├── saturation.py # State-space non-linear saturation & Numba kernels
│ │ ├── audio.py # Vectorized FFT convolution & 24-bit audio buffers
│ │ ├── simulation.py # Audio simulation orchestration & batch workers
│ │ └── staging.py # Virtual analog circuit simulator & allomorph-sim CLI
│ ├── visualizer/ # Polars + Altair frequency visualization library
│ │ ├── dataframe.py # Polars data modeling & continuum transfer curves
│ │ ├── charts.py # Interactive Altair visualization builders
│ │ └── portal.py # Responsive dark-mode HTML portal generator
│ ├── pipeline/ # Multi-stage automation & batch orchestration
│ │ ├── stages.py # Visualization, prefilter, simulation, training stages
│ │ ├── batch.py # Concurrency pool & ProcessPoolExecutor runner
│ │ └── cli.py # Allomorph CLI argument parsing & workflow dispatcher
│ └── cli.py # Master CLI entrypoint delegation for `allomorph`
├── scripts/ # Workflow utilities & CLI entrypoints
│ ├── analyze_voices.py # Thin delegating CLI wrapper for allomorph.visualizer
│ ├── train_nam.py # Local NAM A2 PyTorch/MPS GPU trainer
│ └── generate_tone3000_artwork.py # Tone3000 storefront artwork generator
├── tests/ # Hierarchical pytest test suite (365 tests)
│ ├── circuit/ # SPICE netlists, nodal RLC solving, ODE saturation, simulation
│ └── physics/ # Aperture sinc filters, string mechanics, dispersion, FIR synthesis
└── models/ # Exported .nam neural models
- Electro-Acoustic Physical Modeling: Magnetic aperture sinc filtering, spatial comb nulls, scale-length wave-speed scaling (
$30''/32'' \to 34''/37''$ ), 2D rod apertures, saddle boundary layer stiffness, longitudinal clank, and differential string tension modeling. - Native WAV SPICE Simulator: High-performance Apple Silicon engine (
allomorph-sim) solving analytical nodal RLC equations, Foster 2-stage core eddy diffusion, Dahl magnetic domain-wall pinning hysteresis, asymmetric magnet saturation compliance, sub-audible 8 Hz DC blocking, passive RLC Johnson noise dither, and automatic output level normalization based on input sweep dBFS at >1500x speed. - Lossless
$C^\infty$ SIMD, Tensor & Real-FFT Optimization Suite: Master 21-point mathematical vectorization accelerating FIR synthesis via pure real-FFT homomorphic cepstrum, 2D continuum tensor broadcasting, branchless 3-stagefsqrtrail limiting, passband-constrained oversampling, and analytical impedance Jacobians. - 24 Master Voice Profiles & Transducers: Modern active 2-band Jazz, vintage single-coil, split-coil, series/parallel dual-coils, active Music Man, fanned multi-scale, upright double-bass bridge piezo force transducers, and flat dynamic twins.
- DSP Generation 5 Architecture & Audio QA Telemetry: Direct unified forward digital twin simulation, Multi-Technique Bass Performance Suite excitation (
audio/input.wav) with dedicated representative validation window, branch-wise pre-summing magnetic saturation with causal delay$\tau_i$ , dynamic ITU-R BS.1770-4 gated loudness normalization (-20.50 LUFS), 4x oversampled true-peak safety ceiling ($\le 0.9900$ ), GIL-free ODE kernels, Tone3000 upload pack bundles (bundles/<pickup>/), and automated catalog audit (allomorph --stage audit). - Interactive Visualization Portal: Polars + Altair frequency response portal with spec sheets and per-instrument interactive charts (
docs/frequency_responses.html). - Automated NAM Training Pipeline: End-to-end Architecture 2 (A2) neural model training targeting Darkglass Anagram Block 1.
- Automated Test Suite: Comprehensive 304-test pytest verification covering physical filters, nodal transfer functions, real-FFT homomorphic cepstrum DSP, 2D tensor continuum, ODE saturation, audio simulation, and architectural guardrails.
- Interactive A/B Audio Auditioning CLI: Terminal and real-time audio auditioning tool (
scripts/preview_voices.py) with seamless dry-to-wet switching, looping bass riffs, and instantaneous A/B comparison across pickup voices before neural training or pedalboard export. - Hardware Reference Calibration: Dry-DI spectral matching and A/B verification against physical vintage instruments (1962 P-Bass, 1975 Jazz Bass, 1979 StingRay).
- In-Browser Audio Player: Interactive audio preview player embedded directly into the Altair documentation portal.
- Anagram Marketplace Native Block: Develop a dedicated, all-in-one "Allomorph" custom block for the Darkglass Anagram Marketplace (
marketplace.anagram.shop), featuring rotary voice switching across all 24 pickup configurations, automatic gain normalization, and interactive volume/cable load controls in a single native Block 1 module.
We welcome community contributions, netlists, and optimizations! Because Allomorph uses a dual-licensing model, all contributors must agree to the Contributor License Agreement via standard commit sign-off (git commit -s).
Please see CONTRIBUTING.md for full development setup, coding guidelines, and pull request instructions.
This project and its distributed assets are licensed under the PolyForm Noncommercial License 1.0.0.
- Permitted Uses: Free to use, study, modify, and distribute for personal study, experimentation, sound design, and noncommercial music production.
- Coverage: This license applies to all source code, SPICE netlists, configuration schemas, compiled/trained neural models (
.nam), and synthesized audio stems (.wav) generated by or distributed with Allomorph. - Commercial Restrictions: Commercial use, sale, bundling into commercial plugins/pedalboards, or monetization of the software, neural profiles, or audio stems is strictly prohibited without prior written permission and a commercial license from the author.
- Commercial Licensing Inquiries: Contact Peter Nguyen (peter@phn.dev).