tune

Make xenharmonic music and create synthesizer tuning files for microtonal scales.

MIT License

Downloads
79.8K
Stars
121
Committers
3
tune - Full KBM model

Published by Woyten over 3 years ago

  • New: Define and import keyboard mappings via microwave ref-note or microwave kbm-file
tune - More tuning theory, better diff command

Published by Woyten over 3 years ago

  • Improvement: Calculate the errors and badness of an equal-step tuning
  • Improvement: Make the diff command consistent with the remaining commands
tune - More tuning theory, minor improvements

Published by Woyten over 3 years ago

  • Improvement: Calculate the errors and badness of a Val
  • Improvement: Improve the error structs and the documentation of the scala module
  • Change: Move ChannelMessage::transform to ChannelMessageType::transform for consistency
tune - New live retuning concept

Published by Woyten over 3 years ago

The live retuning feature has been rethought. You can now combine different tuning methods, tuning modes and tuning clash mitigation strategies.

Available tuning methods:

  • [new] Full keybord / Single Note Tuning Change
  • Octave-based / Scale/Octave Tuning
  • [new] Channel-based / Channel Fine Tuning
  • Channel-based / Pitch-Bend

Available live retuning modes:

  • Ahead-of-time
  • Just-in-time

Available clash mitigation strategies:

  • Block new notes
  • [new] Stop old notes
  • [new] Retune old notes without stopping them
tune - Add whole-channel live retuning

Published by Woyten over 3 years ago

tune - Full KBM model, consistent commands, explicit scales

Published by Woyten over 3 years ago

  • Improvement: Include full KBM model in almost every command
  • Improvement: Accept explicit scales (file or stdin) in almost every command
  • Improvement: The mts and dump commands can be used without pipes
  • Improvement: Use YAML instead of JSON
tune - Better ChannelTuner and numerical stability

Published by Woyten over 3 years ago

  • Improvement: ChannelTuner::apply_octave_based_tuning now accepts any kind of tuning including non-octave-repeating ones
    • Note that non-octave-repeating scales might consume a large number of channels
  • Improvement: The tuner module has support for the full KBM model
  • Improvement: find_by_pitch has better numerical stability
    • When right in the middle between two scale steps a sharp version of the lower scale step is preferred
tune - Full KBM support and imports

Published by Woyten over 3 years ago

  • New: Full KBM support for non-linear scales
    • (Scl, Kbm) implements KeyboardMapping<PianoKey>/KeyboardMapping<i32>
    • (Scl, KbmRoot) implements Tuning<PianoKey>/Tuning<i32>, i.e. KbmRoot replaces the old Kbm
  • New: KBM files can be parsed and imported
  • Change: The ratio module has been merged into the pitch module
    • tune::ratio::Ratio becomes tune::pitch::Ratio
tune - Add string synthesis

Published by Woyten over 3 years ago

  • New: Add StageSpec::String for physical string modeling
tune - Fix compilation in Rust 1.49, improve latency

Published by Woyten almost 4 years ago

  • Fix: microwave can now be compiled with the latest Rust version. An upstream dependency was not well maintained.
  • Improvement: By removing nannou_audio as an upstream dependency, setting low audio buffer sizes like 64 now actually has an effect and can be used to improve latency times
tune - Update dependencies

Published by Woyten almost 4 years ago

  • Internal: Update midir dependency to 0.7.0 s.t. microwave can update to it as well
tune - Reverberation, More LfSources

Published by Woyten almost 4 years ago

  • New: Add reverberation effect
  • Improvement: Add more LfSources to gain access to properties like velocity and key/channel pressure
    • The new properties enable more flexible waveforms, e.g. a sax waveform whose sound is brighter at higher velocities
tune - LF oscillators, more filters, better waveforms format

Published by Woyten almost 4 years ago

  • New: Add LfSource::Oscillator
  • New: Add 2nd order filters:
    • Low-Pass (replaces the naive resonance filter)
    • High-Pass
    • Band-Pass
    • Notch
    • All-Pass
  • Improvement: Better waveforms format
    • Use YAML instead of JSON
    • Some data structures have been flattened for a flatter hierarchy
    • Example: you can now write resonance: 440.0 instead of "resonance": { "Value": 440.0 }
  • Improvement: Add from and to parameter to LfSource::Controller
  • Improvement: Replace LfSource::Slope by the more flexible LfSource::Time
tune - High-pass filter, better modular waveforms, audio-in, live interactions

Published by Woyten almost 4 years ago

  • New: Add FilterKind::HighPass to modular synthesizer
  • New: Add audio-in feature
    • To create a waveform based on audio-in use "AudioIn" as buffer source
  • New: Add live interactions to modular synthesizer
    • E.g. you can write "Controller": "Modulation" to gain control over the resonance frequency of a resonance filter via a modulation wheel/lever
  • Improvement: Treat the waveform's nominal frequency as a LfSource that can be applied to almost any stage parameter
    • The nominal frequency of a waveform is represented by "WaveformPitch". This means "frequency": 1.0 becomes "frequency": "WaveformPitch"
tune - Microwave goes modular!

Published by Woyten almost 4 years ago

  • New: You can now define your own waveforms!
    • When microwave is run for the first time a file waveforms.json is created
    • Adapt this file to create your own waveforms
    • There is no documentation of the JSON format yet but the parsing error messages will help you to find valid configurations
  • Improvement: The root key and reference key can be changed independently
tune - More sounds, rotary speaker effect, MIDI-out

Published by Woyten almost 4 years ago

  • New: Add new sounds (chiptune, brass-like, distortion)
  • New: Add rotary speaker effect for cool organs sounds
    • Ctrl+F10 to enable/disable the rotary speaker effect
    • F10 to accelerate/decelerate the rotating speaker
  • New: Send note events to MIDI-out (e.g. FluidSynth)
    • Single Note Tuning messages are used to set the tuning
    • Multiple channels are used to keep the detune per note small
  • Improvement: Ctrl+F9 to enable/disable delay effect
tune - Minor improvement

Published by Woyten almost 4 years ago

  • Improvement: Yield two Single Note Tuning messages in mts command in order to retune all 128 notes.
tune - Several improvements

Published by Woyten almost 4 years ago

  • Improvement: Generify some functions of the math module
  • Improvement: Better ergonomics of the Tuning, Scale, Pitched and PitchedNote traits
    • pitch::find_in() has been moved to Pitched::find_in_tuning()
  • Improvement: Better mts API
    • Return two Single Note Tuning messages when the number of retuned notes is 128
    • Convert ChannelTunings to SingleNoteTuningMessages
  • Improvement: More API documentation
tune - MIDI output

Published by Woyten almost 4 years ago

  • New: microwave can now send MIDI messages to an external synthesizer instead of using the built-in synthesizers
    • The external synthesizer will be tuned via MTS / Single Note Tuning message
tune - Cosmetic/internal improvements

Published by Woyten almost 4 years ago

  • Internal: Share more code with microwave