Skip to content

Releases: Woyten/tune

Stereo buffers, unified audio pipeline, sympathetic resonance

12 May 12:48
Compare
Choose a tag to compare
  • 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

12 May 09:31
Compare
Choose a tag to compare
Magnetron overhaul Pre-release
Pre-release
  • Deletion: InBuffer and OutBuffer no longer exist. Use the BufferIndex enum instead.
  • Change: BufferWriter::read_<n>_and_write is now BufferWriter::read_<n>_write_1
  • New: Add BufferWriter::read_<n>_write_2 for stereo signal processing
  • Change: spec::Spec is now automation::AutomatableValue
  • Change: spec::Creator is now creator::Creator
  • Change: Creator::create is now Creator::create_value
  • Change: Stage is now stage::Stage
  • Change: StageState is now stage::StageActivity
  • Deletion: The waveform module has been removed in order to de-specialize waveforms, further changes include:
    • Change: Creator::new no longer accepts the envelopes argument
    • Deletion: Creator::create_envelope has been removed
  • Improvement: Magnetron has been overhauled:
    • Change: Magnetron::clear and Magnetron::write have been merged to Magnetron::process
    • Improvement: Magnetron::process evaluates and returns the StageActivity
    • New: Use Magnetron::process_nested to call a Magnetron instance within a Stage
    • Change: Magnetron::mix is now Magnetron::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 to BufferIndex::External.

Remove obsolete error codes

11 May 22:38
Compare
Choose a tag to compare
Pre-release
  • Deletion: SclBuildError::ScaleIsTrivial and SclBuildError::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

No functional changes, prepare microwave release

11 May 23:09
Compare
Choose a tag to compare
tune-cli-0.26.0

Prepare next tune-cli version

Minor improvement, update dependencies

11 May 23:38
Compare
Choose a tag to compare
Pre-release
  • Improvement: Add Xenth::read to retrieve a continuous stream of rendered audio samples

Use Bevy graphics engine

22 Feb 22:15
Compare
Choose a tag to compare
Pre-release
  • Improvement: microwave uses Bevy as graphics engine including 3D graphics

Support exotic scales

07 Feb 20:54
Compare
Choose a tag to compare
Support exotic scales Pre-release
Pre-release
  • Improvement: Scales with exotic properties (negative period, no period, with overshooting items) are supported

Feature-completeness of Scala tuning files support

06 Feb 23:12
Compare
Choose a tag to compare
  • 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

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