API reference
The namespaces, classes and structs this repository declares.
Namespaces
Classes
SushiDSP::AntiderivativeAntialiaserFirst-order antiderivative antialiasing of one grid-and-plate stage, evaluated in the grid's own coordinate u = Vg - Vk: y = (G(u1) - G(u0)) / (g(u1) - g(u0)), where g(u) is the input that puts the grid at u and G is the antiderivative of the plate output with respect to that input.
SushiDSP::AsioAudioDeviceASIO-backed IAudioDevice.
SushiDSP::AsyncLogSinkQueues each line and lets a worker thread write it to another sink, in order.
SushiDSP::BiquadDirect Form I biquad filter with RBJ cookbook coefficient derivation, its coefficients and state in double behind a float sample interface (docs/archive/superpowers/specs/2026-09-07-grid-knee-antialiasing-design.md section 15).
SushiDSP::BufferPoolFixed-capacity pool of block-sized float buffers with allocation-free acquire/release.
SushiDSP::CapturingLogSinkKeeps every line it receives, in arrival order, before write() returns.
SushiDSP::DenormalGuardPuts the calling thread's FPU into flush-to-zero / denormals-are-zero mode for the guard's lifetime, restoring the previous mode on destruction.
SushiDSP::dk::DampedNewtonSolverRuns a damped multivariate Newton iteration on the nonlinear port of a DK circuit.
SushiDSP::dk::DenseLuFactorises a dense N x N system by LU with partial pivoting, in fixed storage.
SushiDSP::dk::DenseLu< 1 >One-dimensional LU, which is a single division; the nonlinear diode fast path pays nothing for the general machinery.
SushiDSP::dk::DenseLu< 2 >Closed-form 2x2 LU with partial pivoting; N = 2 is the shape of every triode block and of the D6c clip stage's diode pair, so it is the hot Jacobian size in the tree.
SushiDSP::dk::DkCircuitSolves one discretised nonlinear circuit block by damped Newton per sample, on the nodal DK method with the trapezoidal rule (include/SushiDSP/README.md).
SushiDSP::FftPower-of-two real FFT.
SushiDSP::FmvToneStackThe passive FMV stack, solved from its netlist by the nodal DK method.
SushiDSP::GraphicEqualizerA bank of fixed-centre peaking bands, each ±maximum_gain_db, in series.
SushiDSP::HalfbandDownsampler2x2x decimator on a committed Parks-McClellan halfband.
SushiDSP::HalfbandUpsampler2x2x interpolator on a committed Parks-McClellan halfband.
SushiDSP::ILogSinkReceives formatted log lines and puts them somewhere.
SushiDSP::IrLoaderLoads cabinet impulse responses and conditions them for convolution.
SushiDSP::LogArgumentHolds one value of a log call: a bool, a character, an integer, a real or text.
SushiDSP::LogCategoryNames the module a log line comes from.
SushiDSP::LoggerFormats log calls and hands each line at or above the minimum level to one sink.
SushiDSP::LogLineQueueCarries lines from any number of producer threads to one consumer thread.
SushiDSP::LongTailedPairA long-tailed pair phase inverter, solved as two triodes sharing a cathode node.
SushiDSP::NewtonRaphsonSolverGeneric Newton-Raphson root finder for a scalar nonlinear equation f(x) = 0.
SushiDSP::OutputTransformerStageModels the output transformer: primary-inductance low-end rolloff, leakage- inductance top-end shaping, an explicit tanh core-saturation waveshaper, and a secondary that carries no mean (docs/archive/superpowers/specs/2026-09-07-grid-knee-antialiasing-design.md section 14).
SushiDSP::Oversampler4xCascades the first two committed Parks-McClellan halfband stages (see HalfbandCoefficients.hpp) each way for 4x oversampling.
SushiDSP::Oversampler8xCascades three committed Parks-McClellan halfband stages (see HalfbandCoefficients.hpp) each way for 8x oversampling.
SushiDSP::ParameterTableA node's whole parameter surface, in index order.
SushiDSP::PartitionedConvolutionUniform-partitioned overlap-add FFT convolution against a fixed impulse response.
SushiDSP::PentodeEL34Stateless Koren EL34 pentode: plate and screen currents plus Norman's grid law.
SushiDSP::PentodeStageOne push-pull half of a power stage: the grid node solved by Newton-Raphson against a Norman grid-conduction law referenced to the cathode, an inverting gain from grid to plate, and a two-sided tanh plate ceiling from the tube's PlateSwing, all in real volts, the composite transfer antialiased by an AntiderivativeAntialiaser.
SushiDSP::PowerAmpFeedbackThe feedback leg from the speaker tap to the phase inverter's second grid.
SushiDSP::PowerSupplySagStageModels power-supply sag: an envelope follower on the rectified signal drives a dynamic gain-reduction factor, so sustained loud playing compresses ("bloom").
SushiDSP::ResamplerArbitrary-ratio polyphase resampler over one committed prototype filter.
SushiDSP::ResonanceControlThe low-frequency shelf a Resonance or Deep knob places in a power section's negative-feedback path, mirrored to the forward path as a low shelf of the same corner.
SushiDSP::RigGraphA user-editable directed graph of IAudioNode instances, compiled to a topological order and replayed per block.
SushiDSP::RtGraphSlotPublishes RigGraph replacements to the audio thread without locking or blocking it, and frees a retired graph only once the audio thread has moved past it.
SushiDSP::RtSwapSlotPublishes replacement objects of type T to the audio thread without locking or blocking it, and frees a retired object only once the audio thread has moved past it.
SushiDSP::ScopedLogSinkInstalls a sink on construction; on destruction flushes it and puts the old one back.
SushiDSP::Sdl2AudioDeviceSDL2-backed IAudioDevice.
SushiDSP::SiliconDiodeModels a Shockley-law silicon diode with an ideality factor as a nonlinear branch of a DK-method solver; the defaults match docs/reference/spice/models/d1n914.sub.
SushiDSP::SincResamplerOffline windowed-sinc sample-rate converter (64 taps, Kaiser beta 8.6).
SushiDSP::SmoothedParameterFirst-order (one-pole) parameter smoother with a time constant in milliseconds, derived from the sample rate at prepare() so a knob feels the same at every rate and block size.
SushiDSP::SpscRingLock-free single-producer/single-consumer ring buffer.
SushiDSP::StderrLogSinkWrites
[LEVEL] [category] messageto stderr before write() returns.SushiDSP::StreamingConvolutionRe-blocks an arbitrary-length input stream onto a fixed-partition PartitionedConvolution.
SushiDSP::Triode12AX7Stateless Koren 12AX7 triode: plate current plus Norman's soft grid-conduction law.
SushiDSP::TriodeStageA common-cathode triode gain stage: the grid node solved by Newton-Raphson against a Norman grid-conduction law referenced to the cathode, an inverting linear plate gain, and a two-sided tanh plate ceiling from the stage's PlateSwing, the composite transfer antialiased by an AntiderivativeAntialiaser.
SushiDSP::WavFileReads a subset of the RIFF/WAVE format (PCM 16/24/32-bit or 32-bit IEEE float, any channel count) sufficient for loading impulse responses.
SushiDSP::WavWriterStreaming WAV output: open, append frames, close.
SushiDSP::WdfCapacitorA linear capacitor one-port, discretized via the bilinear transform.
SushiDSP::WdfResistorAn adapted (reflection-free) linear resistor one-port.
Structs
SushiDSP::CapturedLogLineHolds an owned copy of one line a CapturingLogSink received.
SushiDSP::DeviceFormatThe sample rate, block size, and channel counts a device is configured for.
SushiDSP::dk::BranchOne two-terminal element: its node pair and its value.
SushiDSP::dk::DkNetlistDescribes a circuit on the control thread: node indices and component values.
SushiDSP::dk::HasCurrentsForUpdateDetects a nonlinear port that restates the branch currents the update stamps.
SushiDSP::dk::HasCurrentsForUpdate< System, N, std::void_t< decltype(std::declval< System & >().currents_for_update(std::declval< const std::array< double, N > & >(), std::declval< const std::array< double, N > & >(), std::declval< const std::array< std::array< double, N >, N > & >(), std::declval< std::array< double, N > & >()))> >The specialisation that matches when the port declares the hook.
SushiDSP::dk::LinearPortThe empty nonlinear port a purely linear DK block is stepped with.
SushiDSP::dk::NullorEntryOne nullor: an ideal op-amp's input constraint and its output current.
SushiDSP::dk::PotentiometerEntryThe two resistor sections a potentiometer contributes, plus its track resistance.
SushiDSP::FmvComponentsComponent values of a Fender/Marshall/Vox passive tone stack.
SushiDSP::FmvSourceLoadWhat the stack is driven by and what hangs on its output.
SushiDSP::GridConductionLawThe Norman grid-current law Ig = scale * softplus((Vgk - threshold) / transition), the law the docs/reference/spice/models/*_koren.sub subcircuits evaluate.
SushiDSP::HalfbandDesignOne halfband FIR stage: full symmetric impulse response with the zero taps stored as exact zeros and the centre tap exactly 0.5.
SushiDSP::IAudioDeviceA hardware or host output device. Injected — SushiDSP never assumes one exists.
SushiDSP::IAudioNodeOne DSP graph node. Implementations must be real-time safe in process().
SushiDSP::ICabinetHostA node that can carry a cabinet impulse response in its signal path.
SushiDSP::IrA mono impulse response together with the sample rate it is valid at.
SushiDSP::IrLoadOptionsConditioning applied to an impulse response as it is loaded.
SushiDSP::LogRecordHolds one formatted line on its way to a sink.
SushiDSP::LongTailedPair::PlatesThe pair's two plate outputs for one sample.
SushiDSP::LongTailedPairHalfOne half's own plate load, headroom and grid drive.
SushiDSP::LongTailedPairTubeThe tube properties both halves of a pair share, at one operating point.
SushiDSP::MillerInputCapacitanceHolds the three capacitances a triode grid presents and turns them, with the resistance driving that grid, into the interstage pole the grid-plate term dominates once the stage's gain multiplies it.
SushiDSP::NewtonRaphsonSolver::EvaluationThe residual and its derivative at one trial point, evaluated together.
SushiDSP::NodeDescriptorEverything a host needs to instantiate and drive a product, with no knowledge of its internals.
SushiDSP::ParameterBindingOne parameter: what a host sees, how it is written and how it is read.
SushiDSP::ParameterChangeOne parameter write travelling from the control thread to the audio thread.
SushiDSP::ParameterDescriptorOne automatable parameter exposed by a product's NodeDescriptor.
SushiDSP::PlateSwingHow far a stage's plate can swing from its idle point before it saturates, and the two-sided tanh ceiling that bounds a linear plate output by it (docs/archive/superpowers/specs/2026-09-07-triode-plate-swing-design.md section 3).
SushiDSP::PortLayoutDescribes the fixed input/output channel counts of an IAudioNode.
SushiDSP::PowerAmpFeedbackComponentsComponent values of a feedback leg from the output transformer's speaker tap.
SushiDSP::PowerAmpFeedbackTerminationWhat the inverter presents where the leg reaches its tail.
SushiDSP::PowerTubePresetThe constructor constants one PentodeStage takes for a named power tube, every voltage in real volts; the derivations are in the owning module's README.
SushiDSP::PrepareInfoParameters supplied to IAudioNode::prepare(), fixed for the node's lifetime.
SushiDSP::ProcessContextPer-block processing context. process() must fill exactly [0, frames) of each output channel.
SushiDSP::QueuedLogLineHolds one line by value while it waits in the queue.
SushiDSP::SingleTriodeInverterDescribes a long-tailed pair modelled as a single common-cathode triode: where its grid rests, what one triode's load line gives, what the shared cathode takes back, and the swing that bounds the plate.
SushiDSP::WdfPortA Wave Digital Filter one-port's wave-domain state: incident wave a, reflected wave b, and the port resistance R that relates them to voltage/current.

