Skip to content

The engine crate

File Contents
lib.rs Module list by theme; re-exports Session and vst3_host.
model.rs The project document (serde), everything saved: ids, slot counts, default colours, and the re-exports of model/.
model/track.rs Track, TrackKind, InputSel, PluginSlot, ChannelEq, sends, freeze info, track alternatives, Group, Vca.
model/region.rs Region, RegionContent, Note, CcEvent and the arithmetic of looped regions.
model/take_folder.rs TakeFolder, Take, Comp, CompSegment.
model/automation.rs AutoParam, AutoPoint, AutoLane, AutoMode.
model/project.rs Project, markers, punch, master, cycle. Tree and routing helpers: normalize_tree, process_order, output_of, feeds, reaches, prune_routes.
dsp.rs The real-time graph’s front page: MAX_BLOCK and the other limits, Engine and Engine::new.
dsp/process.rs Engine::process and process_block: the block loop, serial or on the pool, the master and the output.
dsp/strip.rs run_strip: one strip’s whole block, on the serial loop or a worker.
dsp/apply.rs Engine::apply: what each Cmd does, and finding strips and inserts, silencing, flushing and chasing.
dsp/cmd.rs Cmd and Garbage.
dsp/track.rs TrackDsp, InsertDsp, Plugin, RegionDsp, TrackParams, and containing a plug-in’s bad output.
dsp/block.rs What a block shares: Scratch, BlockCtx, Outlets, Routes and Direct; the mixing functions (play_audio, mix_send).
dsp/status.rs Meter, EngineStatus, BlockLoad (the CPU meter).
dsp/click.rs ClickParams, the click and the count-in.
dsp/tests.rs Unit tests on a small rig (rig()).
dsp/offline.rs Engine::render and Isolate: offline rendering of the full mix or one track.
dsp/graph.rs TaskGraph: which strips wait for which, built from the project off the audio thread.
dsp/pool.rs Pool: the worker threads, running a graph’s tasks with no lock or queue. Knows nothing of audio.
dsp/parallel.rs Strips on the pool: Parallel, Workers, Deferred (a strip’s routes there), covers.
dsp/pdc.rs DelayLine (power-of-two ring with read taps), PdcParams, PdcGlobal.
dsp/multi_out.rs OutputFeed: an aux reading its instrument’s output bus.
dsp/builtin.rs BuiltinDsp (a built-in effect in an insert slot), FxShared, parameter normalization.
dsp/auto.rs Automation past a track’s own strip: folder stacks’ volume and mute (FoldState) and Stereo Out’s lanes.
fx/mod.rs The Effect trait, EffectInfo, ParamSpec, the registry and factory presets.
fx/compressor/, limiter.rs, gate.rs, deesser.rs Compressor (five circuits: mod.rs, params.rs, curve.rs, tests.rs), Limiter, Noise Gate, De-Esser.
fx/reverb/ Reverb: the effect (mod.rs), params.rs, all-passes and the decay filter (parts.rs), the 16-line FDN (fdn.rs), the Dattorro plate (plate.rs), tests.rs.
fx/delay/ Delay (Stereo, Ping-Pong, Tape, Digital): mod.rs, params.rs, tests.rs, and primitives.rs (Line, Biquad, Osc, flush, note values), which other effects share.
fx/tuner.rs, loudness.rs Tuner (McLeod pitch method) and Loudness Meter (BS.1770 / EBU R128).
fx/chorus.rs, flanger.rs, phaser.rs, tremolo.rs Modulation: Chorus and Flanger (one swept delay, ModDelay, in chorus.rs), Phaser (all-pass chain), Tremolo (synced to the song position).
fx/overdrive.rs, distortion.rs, gain.rs Overdrive and Distortion (DriveCore in distortion.rs: 4× oversampled waveshaper, compensated drive, tone, mix), Gain (a smoothed 2×2 channel matrix).
fx/linear_phase_eq.rs, fir.rs Linear Phase EQ (the Channel EQ’s bands as one linear-phase FIR, designed on a worker thread); FIR design and partitioned FFT convolution.
fx/lfo.rs, oversample.rs LFO and smoothing for the modulation effects; half-band FIR oversampling.
fx/biquad.rs, dyn_common.rs Shared filter and dynamics building blocks.
presets.rs Factory presets of the Channel EQ, user preset files.
strip_settings.rs StripSetting and the saved channel strip setting files.
tempo.rs TempoMap: samples to beats and bars and back, tempo ramps, signatures, grid.
session.rs Session, Tick, TrackPatch, the module list and Session::new.
session/engine_sync.rs Engine plumbing: send, track_params, regions_dsp, build_track, rebuild_graph, sync_globals, sync_tracks.
session/undo.rs checkpoint, undo, redo, restore.
session/transport.rs Play, stop, locate, record, placing a finished recording; cycle, tempo, signature, metronome.
session/tracks.rs Adding, deleting, duplicating and moving tracks; stacks.
session/groups.rs Groups and update_track, the Channel EQ, the analyzer’s target, the selected track.
session/regions.rs Region edits and audio import.
session/plugins.rs Insert slots: loading, removing, bypassing, editors, the plug-in list.
session/periodic.rs idle and tick, and the warnings the tick carries.
session/files.rs New, save and open.
session/routing.rs Auxes, sends and outputs; feedback-loop checks.
session/threads.rs Processing Threads: starting and stopping the workers, sending the task graph (sync_parallel).
session/multi_out.rs Multi-output instruments: the instruments’ outputs for the UI, add_output_aux, sync_output_buses (called from update_pdc), what Freeze and Bounce in Place refuse. The design notes are at its top.
session/crossfades.rs Fade shapes and types from the inspector, the Crossfade command, the X-Fade drag mode (auto_crossfade), Crossfade Time (crossfade_frames).
session/drag_modes.rs Region edits as the Tracks area makes them: drag_move_regions, drag_nudge_regions, drag_resize_region, drag_delete_regions, drag_paste_regions, in the drag mode and with Move Automation with Regions.
session/auto_lanes.rs Stereo Out’s lanes (strip_lanes), folder stacks’ volume and mute automation, the extra lanes shown under a track (set_auto_lanes).
session/recovery.rs Crash safety: atomic project writes (write_atomic), recording journals, recovering interrupted takes, the fallback from a damaged project.json.
session/bounce.rs Bounce, Export All (or Selected) Tracks, Export Region, Bounce in Place (render and place), normalize.
session/range_edit.rs Audio Track Editor range edits (RangeEdit) and multi-point splits; clip info.
session/marquee.rs The Tracks area’s marquee: split, delete (in the drag mode) and copy the parts of regions in a time range across tracks.
session/arrange_cmds.rs Logic’s arranging commands: section edits between the locators or in the marquee (a time map applied to regions, automation, markers and arrangement sections, as session/arrangement.rs does), Insert Cut Section, the Trim commands, Remove Gaps, Delete and Shuffle, Paste Replace, Move to Playhead, Strip Silence, names and colours between tracks and regions.
session/options.rs Applying Prefs, recording folder, default fades, overlapping-recording placement, MIDI merge, project options, nudge, autosave and recovery.
session/midi_content.rs set_midi_content (Piano Roll edits) and Standard MIDI File import/export.
session/pdc.rs Plug-in latency, the compensation solver, the PDC report.
session/freeze.rs Track Freeze and frozen_guard.
session/markers.rs Marker edits and the Autopunch range.
session/arrangement.rs Arrangement track edits: add, rename, colour, resize, and moving, copying or deleting a section with its content.
session/takes.rs Recording into take folders, Autopunch trimming, comp edits, Flatten, Merge, Pack, Unpack.
session/auto_write.rs Automation writing (Touch, Latch, Write), plug-in editors following automation, lane edit commands.
session/controllers.rs Controller assignments: the last touched parameter, learning, the saved list, applying controller moves through the normal edit paths (undo steps, automation touches that let go 0.5 s after the controller stops). Run from idle.
session/builtin.rs Built-in effects in slots: instantiation, parameters, side-chains, meters for open panels.
session/vst_key.rs VST3 side-chain inputs: keeping each plug-in’s aux bus in line with its slot’s key source.
session/vst_undo.rs Undo steps for edits in a VST3’s own editor: the last known states, which edits make a step and when, and putting a plug-in back.
session/presets.rs Copy and paste of plug-ins and Channel EQ; loading and saving presets.
session/insert_order.rs Reordering Audio FX inserts; moving or copying a plug-in to another strip.
session/strip_settings.rs Copy, paste, reset, save and load channel strip settings.
session/strip_meters.rs The clip indicators’ peak holds (PeakHolds) and each strip’s gain reduction for the tick.
session/vca.rs VCA edits: create, delete, level, mute, name, colour, assigning strips, nesting.
session/region_moves.rs Moving several regions as one edit.
session/musical_moves.rs Moves in bars and beats through the tempo map (musical_shift, nudges by a bar, beat or note value).
session/zero_crossings.rs Snap Edits to Zero Crossings: where splits, trims and range edits of audio regions land.
session/region_gain.rs Per-region gains from a gain drag (set_region_gains).
session/tempo.rs Tempo and Signature track edits, Move MIDI Regions with Tempo.
session/region_params.rs Region inspector parameter edits, Apply Region Parameters, the playback list entries of regions with parameters, the snapshot’s played notes.
session/alternatives.rs Project alternatives: new, switch, rename, delete; name checks.
session/backups.rs Backups on save, pruning, Revert to, Revert to Saved, the fallback on open.
session/templates.rs User project templates: save, list, rename, delete, new project from one.
session/track_alternatives.rs Track alternatives: new, duplicate, switch, rename, delete.
session/patterns.rs Pattern regions: create, set_pattern, convert to and from MIDI regions, realizing them for regions_dsp.
takes.rs Pure take-folder logic: comp editing, playback pieces and crossfades, RecPlan.
arrangement.rs The Arrangement track’s arithmetic: tiling sections and the time maps (Piece, Plan) for moving, copying and deleting them; automation through a time map. Pure.
arrange_cmds.rs The arranging commands’ arithmetic: section edits as time maps, edges and sections through them, Remove Gaps and Remove Overlaps on a lane. Pure.
strip_silence.rs Strip Silence: the parts of a stretch of audio above a threshold, with minimum silence, pre-attack and post-release. Pure.
automation.rs AutoTarget, LaneDsp, value_at, curves (shape), splice, thin, plug-in id remapping and take_plugin_lanes.
auto_move.rs Move Automation with Regions on one lane: carrying a region’s stretch of automation to where it lands. Pure.
drag_modes.rs The No Overlap, Shuffle L and Shuffle R drag modes on one track’s lane of spans. Pure.
fades.rs Fade curves, Speed Up and Slow Down tables, the crossfade types, where crossfades go (crossfades, loop_seams).
midi.rs Pure MIDI content helpers: split, trim, join with controller chasing; the notes held over a position (note chase); clearing a range (Record in Replace mode).
region_params.rs Region playback parameters: the transforms (quantize with swing, gate, delay, transpose, dynamics, velocity), playback windows, bake for Apply.
pattern.rs Step Sequencer patterns: the model, the notes a pattern plays (swing, ties, gates, per-row rates and lengths), realize and from_notes.
smf.rs Standard MIDI File reader and writer.
audio_io.rs Device enumeration and the duplex stream that drives the engine.
denormals.rs NoDenormals: flush-to-zero on the audio thread (x86_64 and aarch64).
recorder.rs The recording disk-writer thread and live previews.
midi_io.rs MIDI inputs (midir), velocity curves, the MIDI activity log, assigned controllers taken off the live path (inject_from feeds a message in as a port would, for tests).
plugin_db.rs Out-of-process plug-in scanning, the cache, the scan report, the config folder.
prefs.rs Prefs (Settings) and the metronome and bit-depth types saved in projects.
clip.rs Audio held in memory, the waveform overview, and the zero-crossing search.
controllers.rs Controller assignments, the pure part: targets, reading CC and pitch bend, port names without ALSA’s numbers, the fader taper, ranges, Jump and Pickup.
decode.rs Decoding audio files in any supported format, resampling, WAV writing.
decode/gapless.rs MP4/M4A encoder delay and padding (iTunSMPB tag or edit list), trimmed after decoding.
audio_file.rs Writing bounces: AudioFormat, BitDepth, the shared dithering Quantizer.
audio_file/wav.rs, aiff.rs, flac.rs The writers: WAV through hound, AIFF and AIFF-C by hand, FLAC through flacenc.
eq.rs Channel EQ biquads (f64), coefficient computation, the analyzer spectrum.
synth.rs Marbble Synth, the original small polyphonic instrument. Unchanged since it was written: old projects depend on its every sample.
instrument/ Built-in instruments: the Instrument contract and registry (mod.rs), Marbble Synth in the registry (basic.rs), Marbble Tre (tre/), Sei (sei/), Cinque (cinque/), Uno (uno/), Sedici (sedici/), Onda (onda/), what they share (common.rs) and test with (test_kit.rs). See Built-in instruments.
synth_dsp/ Parts for synth models: osc, filter, env, lfo, alloc, analog, resample, smooth.
transients.rs Onset detection for transient markers and Split at Transients.
vca.rs VCA faders: the offset and mute a strip gets from its VCA chain, loop checks.
sysvol.rs Linux only: the sound server’s input volume for the recording device (input level check).
wav_repair.rs Repairing the headers of WAV files a crash left mid-recording.