Skip to content

Releases: Woyten/tune

Templates, flexible envelopes, improved customization

10 Dec 22:00
Compare
Choose a tag to compare
  • New: Add waveform_templates and effect_templates section for reusable abstractions.
  • New: Add LfSource::Semitones to convert values in semitones to frequency ratios.
  • New: Add OffVelocitySet, OffVelocity and KeyPressureSet live parameters.
  • Improvement: Envelopes support automations.
    • Change: The parameters amplitude and fadeout are mandatory 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.
  • 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.
  • 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.
  • Improvement: Control magnetron volume via Velocity events (CCN 7, configurable).
  • Change: Rename from/to in Linear and Controller to map0/map1 to better explain the mathematical behavior.

Templates, flexible envelopes

10 Dec 20:33
Compare
Choose a tag to compare
Pre-release
  • Improvement: Add templates to Creator.
    • Change: Add generic parameter A: AutomationSpec to Creator.
  • Improvement: Introduce WaveformProperties.
    • Change: WaveformProperties replaces WaveformState.
    • New: Add off_velocity property.
    • Improvement: key_pressure property is Option<f64>.
    • Deletion: Remove secs_since_pressed and secs_since_released. Those values are supposed to be aggregated within the render stages.
    • Change: Remove note_suspension argument from Magnetron::write.
  • Improvement: Envelopes are modeled as stages and support automations.
    • Change: EnvelopeSpec replaces Envelope.
    • 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: Update Waveform design.
    • Waveform::envelope is of type Stage<T>
    • Stage<T>::render returns StageState::Exhausted when waveform can no longer deliver any non-zero values
    • Waveform exhaustion is tracked in Wavform::is_active

Many new features and improvements

10 Nov 20:39
Compare
Choose a tag to compare
Pre-release
  • New: Add separate effects section to microwave.yml (formerly waveforms.yml)
    • Available effects: Echo, SchroederReverb, RotarySpeaker
    • All effects can be MIDI controlled or automated via LfSources
    • Multiple instances of the same effect category can be used
  • 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 and KeyPressure are now waveform properties
    • They can be accessed in the same way as WaveformPitch and WaveformPeriod
    • Use LfSourceExpr::Linear to remap them to the desired range
  • 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 to 0.0.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")
  • Change: The import subcommand has been renamed to scl-file in order to be consistent with other subcommands

Waveform-agnostic automations

10 Nov 20:18
Compare
Choose a tag to compare
Pre-release
  • Improvement: Add key_pressure field to WaveformState
  • Improvement / Change: Make automations compatible with non-waveform stages
    • AutomationContext<T> no longer includes WaveformState. If access to WaveformState is required include it in the generic parameter T.
    • AutomatedValue now uses generic type argument T instead of associated type Context.
    • AutomationSpec has been removed. All types are generic over the live parameter T, not the spec parameter A.
    • PhantomType<T> no longer implements Spec. Use () instead.

Update dependencies

29 Oct 20:55
Compare
Choose a tag to compare
Update dependencies Pre-release
Pre-release

NEJIs, more practical keyboard mappings

28 Oct 19:30
Compare
Choose a tag to compare
Pre-release
  • Improvement / change: scala::create_harmonics_scale is now able to generate NEJI scales
    • The 2nd argument, segment_type, replaces the old subharmonics flag
    • The 3rd argument, segment_start, replaces the old lowest_harmonic argument
    • The 4th argument, segment_size, replaces the old number_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")
  • Change: scala::KbmRoot now is defined via ref_key, ref_pitch and root_offset instead of origin, ref_pitch and ref_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 to ref_key + root_offset

NEJIs, better MTS support

28 Oct 19:54
Compare
Choose a tag to compare
Pre-release
  • 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")
  • Improvement / change: The mts subcommand now supports the options octave-1, octave-1-rt, octave-2, octave-2-rt, full and full-rt
    • The [mts] octave subcommand has been renamed to [mts] octave-1
    • The [mts] full subcommand has been renamed to [mts] full-rt
  • Change: The import subcommand has been renamed to scl-file in order to be consistent with other subcommands

OxiSynth, phase parameter

20 Aug 17:08
Compare
Choose a tag to compare
Pre-release
  • 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

20 Aug 17:02
Compare
Choose a tag to compare
Minor improvements Pre-release
Pre-release
  • Improvement: Add BufferWriter::buffer_len
  • Improvement: Add Spec and AutomatedValue impls for Option<T>

OxiSynth, WASM support

20 Aug 16:48
Compare
Choose a tag to compare
Pre-release
  • 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