Releases: Woyten/tune
Releases · Woyten/tune
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
Many new features and improvements
- New: Add separate
effects
section tomicrowave.yml
(formerlywaveforms.yml
)- Available effects:
Echo
,SchroederReverb
,RotarySpeaker
- All effects can be MIDI controlled or automated via
LfSource
s - Multiple instances of the same effect category can be used
- Available effects:
- New: F1..F10 keys trigger
Sound1
..Sound10
events- Those events can be used to control sound effects
- Events are accessible through MIDI CCNs 70..79 (configurable)
- Improvement: Toggle wav recording via
Foot
events (CCN 4, configurable) - Improvement: Control legato option via
Legato
events (CCN 68, configurable) - New: Touchpad gestures trigger polyphonic
KeyPressure
events - Change: Touchpad gestures no longer trigger
Breath
events - Change: Vertical mouse movement always triggers
Breath
events (CCN 2, configurable) - New: Add
LfSourceExpr::Linear
to remap values in the range 0..1 - Change:
Velocity
andKeyPressure
are now waveform properties- They can be accessed in the same way as
WaveformPitch
andWaveformPeriod
- Use
LfSourceExpr::Linear
to remap them to the desired range
- They can be accessed in the same way as
- Deletion:
LfSourceExpr::Envelope
has been removed- This feature required knowledge about the press state of a key which is not available in all contexts (e.g. effects)
- It will come back with a different design in a future release
- It is still possible i.e. mandatory to define a final envelope for each waveform
- Internal: Upgrade
oxisynth
to0.0.2
- This includes bugfix PolyMeilex/OxiSynth#2
- Improvement: Facilitate handling of input sources with shifted MIDI numbers
- Improvement / change: The
harm
subcommand is now able to generate NEJI scales- e.g.
tune scl harm 27 --neji 12
- The
[harm] --sub
parameter has been renamed to[harm] -u
(for utonal) - Default names are in JI chord notation (e.g. "JI scale 8:9:10:11:12:13:14:15:16")
- e.g.
- Change: The
import
subcommand has been renamed toscl-file
in order to be consistent with other subcommands
Waveform-agnostic automations
- Improvement: Add
key_pressure
field toWaveformState
- Improvement / Change: Make automations compatible with non-waveform stages
AutomationContext<T>
no longer includesWaveformState
. If access toWaveformState
is required include it in the generic parameterT
.AutomatedValue
now uses generic type argumentT
instead of associated typeContext
.AutomationSpec
has been removed. All types are generic over the live parameterT
, not the spec parameterA
.PhantomType<T>
no longer implementsSpec
. Use()
instead.
Update dependencies
- Upgrade
oxisynth
to0.0.2
- This includes bugfix PolyMeilex/OxiSynth#2
- Upgrade
tune
to0.32.0
NEJIs, more practical keyboard mappings
- Improvement / change:
scala::create_harmonics_scale
is now able to generate NEJI scales- The 2nd argument,
segment_type
, replaces the oldsubharmonics
flag - The 3rd argument,
segment_start
, replaces the oldlowest_harmonic
argument - The 4th argument,
segment_size
, replaces the oldnumber_of_notes
argument - The 5th argument,
neji_divisions
, has been added - Default names are in JI chord notation (e.g. "JI scale 8:9:10:11:12:13:14:15:16")
- The 2nd argument,
- Change:
scala::KbmRoot
now is defined viaref_key
,ref_pitch
androot_offset
instead oforigin
,ref_pitch
andref_degree
- The parameter
root_offset
facilitates the creation of mappings where the note numbers of a MIDI input source (e.g. the Lumatone) are shifted - Degree 0 (
ref_key
) is mapped toref_key + root_offset
- The parameter
NEJIs, better MTS support
- Improvement: Facilitate handling of input sources with shifted MIDI numbers
- Improvement / change: The
harm
subcommand is now able to generate NEJI scales- e.g.
tune scl harm 27 --neji 12
- The
[harm] --sub
parameter has been renamed to[harm] -u
(for utonal) - Default names are in JI chord notation (e.g. "JI scale 8:9:10:11:12:13:14:15:16")
- e.g.
- Improvement / change: The
mts
subcommand now supports the optionsoctave-1
,octave-1-rt
,octave-2
,octave-2-rt
,full
andfull-rt
- The
[mts] octave
subcommand has been renamed to[mts] octave-1
- The
[mts] full
subcommand has been renamed to[mts] full-rt
- The
- Change: The
import
subcommand has been renamed toscl-file
in order to be consistent with other subcommands
OxiSynth, phase parameter
- Improvement:
microwave
is now based on OxiSynth- Compilation to more targets is possible
- Improvement: Add
phase
parameter to oscillators - Bug fix: Mixed-up GUI status updates
Minor improvements
- Improvement: Add
BufferWriter::buffer_len
- Improvement: Add
Spec
andAutomatedValue
impls forOption<T>
OxiSynth, WASM support
- Improvement:
fluid-xenth
is now based on OxiSynth- All code is written in Rust
- Compilation to WASM is possible
- Change: Several API changes due to the adoption of OxiSynth, mainly:
- Calling into functions requires
&mut Xenth
Xenth::write
consumes a callback function
- Calling into functions requires