pub struct TapeHeadConfig {
pub model: Option<String>,
pub ja_ms: f64,
pub ja_a: f64,
pub ja_alpha: f64,
pub ja_k: f64,
pub ja_c: f64,
pub kv: f64,
pub isat: f64,
pub gp: f64,
pub h_bias: f64,
pub rp: f64,
}Expand description
Voltage-driven Jiles-Atherton tape head configuration.
Unlike a transformer core (driven by Ampere-law magnetizing CURRENT, whose
knee needs hundreds of mA at studio turns counts), a record/playback head is
a tiny gap/coil whose magnetic field is driven by the head GAP VOLTAGE:
H = kv * V. With kv chosen so the J-A knee lands at line level (~1 V),
tape saturation tracks signal Drive directly.
The J-A hysteresis parameters share physics with the transformer core (Jiles & Atherton 1986; Chowdhury DAFx-19 wave-digital tape realization) but use a SMALL-GEOMETRY head whose saturation occurs at ~1 V:
ja_ais reduced vs an output-transformer core so the Langevin knee is reached at the small fields a head produces,- the geometry turns/area/path are nominal (the voltage law uses
kv, not Ampere’s law, so they only need to be sane positives).
Fields§
§model: Option<String>Optional named head model (for provenance / future library lookup).
ja_ms: f64Jiles-Atherton saturation magnetization (A/m).
ja_a: f64Jiles-Atherton anhysteretic shape parameter (A/m).
ja_alpha: f64Jiles-Atherton inter-domain coupling.
ja_k: f64Jiles-Atherton domain-wall pinning parameter (A/m).
ja_c: f64Jiles-Atherton reversible magnetization fraction (0..1).
kv: f64Field-per-volt coupling (A/m per V) — places the knee at line level.
isat: f64Saturating magnetic current scale (A) — harmonic drive strength.
gp: f64Linear leakage conductance (S) keeping the port well-posed.
h_bias: f64Fixed record-bias field offset (A/m): asymmetric transfer -> even harmonics (the soft, even-rich tape/transformer colour).
rp: f64WDF port resistance (Ω) — sets the scattering port impedance.
Implementations§
Source§impl TapeHeadConfig
impl TapeHeadConfig
Sourcepub fn studio_head() -> Self
pub fn studio_head() -> Self
A studio record/playback head whose J-A knee lands at ~1 V line level.
Values verified in pedalkernel-rt/tests/tape_head_voltage.rs: THD
climbs monotonically from ~0.7% at 0.05 V to ~7% at 2 V, Newton
converges in well under the iteration budget, output is finite/stable.
pub fn with_model(model: String) -> Self
Trait Implementations§
Source§impl Clone for TapeHeadConfig
impl Clone for TapeHeadConfig
Source§fn clone(&self) -> TapeHeadConfig
fn clone(&self) -> TapeHeadConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TapeHeadConfig
impl Debug for TapeHeadConfig
Source§impl Default for TapeHeadConfig
impl Default for TapeHeadConfig
Source§impl PartialEq for TapeHeadConfig
impl PartialEq for TapeHeadConfig
Source§fn eq(&self, other: &TapeHeadConfig) -> bool
fn eq(&self, other: &TapeHeadConfig) -> bool
self and other values to be equal, and is used by ==.