Wave32/64
:silence
is nowzero
.- New opcode
impulse
. - Attempted optimization of reverb delay times in the example
optimize
. - New opcodes
node64
andnode32
for converting anAudioUnit
into anAudioNode
. - New reverb opcodes
reverb2_stereo
andreverb3_stereo
. - New opcodes
allnest
andallnest_c
for nested allpass filters. - New opcodes
tap_linear
andmultitap_linear
for delay lines with linear interpolation.
AudioNode
now requiresSend
andSync
.- Feedback units
Feedback64
andFeedback32
. Shape::Atan
was contributed by Serdnad.- New opcode
resynth
for frequency domain resynthesis.
- Snoop node for sharing audio data with a frontend thread.
- Meter smoothing parameters are now timescales specified in seconds.
Shape::SoftCrush
was tweaked.- New adaptive distortion mode
Shape::AdaptiveTanh
. - Oversampling now employs a minimum phase halfband filter.
Net64Backend
andNet32Backend
are now calledNetBackend64
andNetBackend32
.Sequencer64Backend
andSequencer32Backend
are now calledSequencerBackend64
andSequencerBackend32
.Slot32/64
is a real-time updatable audio unit slot with crossfading between units.- "Hammond" wavetable, which emphasizes the first three partials.
- Reverb time calculation was tweaked to take into account room size.
- New math functions
sqr_hz
andtri_hz
for non-bandlimited square and triangle waves. - Lorenz and Rössler chaotic system oscillators as opcodes
lorenz
androssler
. swap_stereo
is now genericreverse
, which reverses channel order.- Resonant two-pole filter by Paul Kellett as
bandrez
andlowrez
. - Sample-and-hold opcodes
hold
andhold_hz
. - Fixed inbuilt waveform phases.
- Reduced number of all-pass stages in
phaser
to 10. - Sequencer
add
andadd_duration
are nowpush
andpush_duration
. - Reseting a node and setting its sample rate are now two distinct operations.
- Sequencer can now have a real-time safe backend.
- Fade curves for Sequencer events. To migrate, use the curve
Fade::Smooth
. Net32/64
now operates on stable node IDs of typeNodeId
. Other improvements.swap
opcode is nowswap_stereo
, to avoid possible conflicts withstd::mem::swap
.- New method
AudioNode::allocate
for preallocating everything. - Identity function has been renamed from
id
toidentity
, to match the standard library. - Setting system MPSC channels were async by mistake; they are now blocking.
Net32/64
can now have a real-time safe backend.
- More settings implemented.
- Signal routing is now an exclusive operation, for practical reasons.
- Granular synthesizer. FunUTD is now a dependency.
- Block rate adapter that converts calls to block processing.
- New random function
rnd2
from Krull64 output stage.
- Composable setting system for making it easier to control basic settings in real time.
system
opcode was renamedupdate
.- New waveforms, organ and soft saw.
- New envelope opcodes with any number of inputs:
envelope_in
andlfo_in
.
- New opcode
resample
for variable speed cubic resampling. Wave32/64
improvements. Symphonia integration for reading audio files.- Tagged constants were removed. They were not scaleable.
- Callbacks were removed from
Sequencer32/64
andNet32/64
. Will reimplement if requested. - The
follow
filter now jumps immediately to the very first input value.
detector
was removed (it did not work).- New opcode
biquad
for an arbitrary biquad filter. Net32/64
methodadd
was renamedpush
(it conflicted with the operator implementation).- Graph syntax was implemented for
Net32/64
. They can also be combined with components from the preludes.
semitone
is nowsemitone_ratio
.- New opcodes
feedback2
andfdn2
, which include extra feedback loop processing. The extra processing is not applied in the feedforward path. - Wetness argument was removed from
reverb_stereo
. Room size argument was added. An average room size is 10 meters. To migrate, replacereverb_stereo(wet, time)
withwet * reverb_stereo(10.0, time) & (1.0 - wet) * multipass()
. goertzel
is nowdetector
.chorus
gain was adjusted.flanger
was tweaked.- New opcode
system
with a user provided callback. See thesound
module for an example. - Ability to replace nodes in
Net32
andNet64
. Improved chaining method. Sequencer
has been replaced withSequencer32
andSequencer64
.Au
has been removed.- Callback functionality was added to the sequencer and network components.
- Ability to jump in time was added to the sequencer.