Releases: Woyten/tune
Releases · Woyten/tune
Stereo buffers, unified audio pipeline, sympathetic resonance
- Improvement / Change: Treat effects and waveform stages the same. You can now apply filters in the main audio pipeline as effects or you can include effects in your waveform stages.
- Improvement: Apply buffer concept to main audio pipeline. This offers new possibilities:
- Declare multiple instances of output targets (Magnetron synth, Fluid synth, MIDI-out)
- Route different waveforms to different effect processors
- Simulate a key-based sympathetic resonance effect
- Improvement: Enhance envelope routing. You can use any waveform buffer as an envelope source and output the enveloped signal to any main pipeline buffer
- New: Add some example profiles
- New: Handle balance events (CCN 8, configurable) and pan events (CCN 10, configurable)
- New: Add
LfSource::Fader
. This enables you to gradually fade a control parameter between two values. - Change: The configuration method changed a lot and it is difficult to document every change here. Please refer to the current documentation to fix your old config.
Magnetron overhaul
- Deletion:
InBuffer
andOutBuffer
no longer exist. Use theBufferIndex
enum instead. - Change:
BufferWriter::read_<n>_and_write
is nowBufferWriter::read_<n>_write_1
- New: Add
BufferWriter::read_<n>_write_2
for stereo signal processing - Change:
spec::Spec
is nowautomation::AutomatableValue
- Change:
spec::Creator
is nowcreator::Creator
- Change:
Creator::create
is nowCreator::create_value
- Change:
Stage
is nowstage::Stage
- Change:
StageState
is nowstage::StageActivity
- Deletion: The
waveform
module has been removed in order to de-specialize waveforms, further changes include:- Change:
Creator::new
no longer accepts theenvelopes
argument - Deletion:
Creator::create_envelope
has been removed
- Change:
- Improvement:
Magnetron
has been overhauled:- Change:
Magnetron::clear
andMagnetron::write
have been merged toMagnetron::process
- Improvement:
Magnetron::process
evaluates and returns theStageActivity
- New: Use
Magnetron::process_nested
to call aMagnetron
instance within aStage
- Change:
Magnetron::mix
is nowMagnetron::read_buffer
- Deletion:
Magnetron::set_audio_in
has been removed- This functionality was too specific and it can be easily achieved now by creating a
Stage
that writes toBufferIndex::External
.
- This functionality was too specific and it can be easily achieved now by creating a
- Change:
Remove obsolete error codes
- Deletion:
SclBuildError::ScaleIsTrivial
andSclBuildError::ItemOutOfRange
are no longer part of the API- They weren't returned since
tune-0.32.1
but remained a part of the API to ensure compatibility
- They weren't returned since
No functional changes, prepare microwave release
tune-cli-0.26.0 Prepare next tune-cli version
Minor improvement, update dependencies
- Improvement: Add
Xenth::read
to retrieve a continuous stream of rendered audio samples
Use Bevy graphics engine
- Improvement:
microwave
uses Bevy as graphics engine including 3D graphics
Support exotic scales
- Improvement: Scales with exotic properties (negative period, no period, with overshooting items) are supported
Feature-completeness of Scala tuning files support
- Improvement: Support for Scala tuning files is now feature-complete
- New: Support wonky scales / scales with items that were previously considered out-of-range
- New: Support non-periodic scales / scales with a period of 0 cents
- New: Support scales with negative-cents period
Templates, flexible envelopes, improved customization
- New: Add
waveform_templates
andeffect_templates
section for reusable abstractions. - New: Add
LfSource::Semitones
to convert values in semitones to frequency ratios. - New: Add
OffVelocitySet
,OffVelocity
andKeyPressureSet
live parameters. - Improvement: Envelopes support automations.
- Change: The parameters
amplitude
andfadeout
are mandatory parameters.
- Change: The parameters
- Improvement: Customize velocity sensitivity.
- The envelope's
amplitude
parameter controls how the waveform's amplitude depends on the velocity or any other control value.
- The envelope's
- Improvement: Customize damper-pedal / fadeout behavior.
- The envelope's
fadeout
parameter controls how the waveform is faded out depending on the damper pedal state or any other control value.
- The envelope's
- Improvement: Customize pitch-bend wheel behavior.
- The current pitch-bend value is queryable via the
PitchBend
live parameter. - Use
LfSource::Semitones
to calculate the correct frequency depending on the pitch-bend value.
- The current pitch-bend value is queryable via the
- Improvement: Control
magnetron
volume viaVelocity
events (CCN 7, configurable). - Change: Rename
from
/to
inLinear
andController
tomap0
/map1
to better explain the mathematical behavior.
Templates, flexible envelopes
- Improvement: Add templates to
Creator
.- Change: Add generic parameter
A: AutomationSpec
toCreator
.
- Change: Add generic parameter
- Improvement: Introduce
WaveformProperties
.- Change:
WaveformProperties
replacesWaveformState
. - New: Add
off_velocity
property. - Improvement:
key_pressure
property isOption<f64>
. - Deletion: Remove
secs_since_pressed
andsecs_since_released
. Those values are supposed to be aggregated within the render stages. - Change: Remove
note_suspension
argument fromMagnetron::write
.
- Change:
- Improvement: Envelopes are modeled as stages and support automations.
- Change:
EnvelopeSpec
replacesEnvelope
. - New: Add
velocity
property. Waveform stages can decide to ignore this property if no velocity sensitivity is desired. - New: Add
fadeout
property. Waveform stages can use any LF source to control the fade-out phase.
- Change:
- Change: Update
Waveform
design.Waveform::envelope
is of typeStage<T>
Stage<T>::render
returnsStageState::Exhausted
when waveform can no longer deliver any non-zero values- Waveform exhaustion is tracked in
Wavform::is_active