#microtonal #midi #scales #synthesizer #tuning

tune

Explore musical tunings and create synthesizer tuning files for microtonal scales

26 breaking releases

0.27.0 Oct 8, 2021
0.25.0 Jul 27, 2021
0.23.0 Mar 26, 2021
0.19.0 Nov 6, 2020
0.4.0 Mar 23, 2019

#257 in Audio

Download history 7/week @ 2021-06-30 8/week @ 2021-07-07 31/week @ 2021-07-14 11/week @ 2021-07-21 73/week @ 2021-07-28 42/week @ 2021-08-04 43/week @ 2021-08-11 7/week @ 2021-08-18 27/week @ 2021-08-25 6/week @ 2021-09-01 7/week @ 2021-09-08 11/week @ 2021-09-15 5/week @ 2021-09-22 29/week @ 2021-09-29 26/week @ 2021-10-06 38/week @ 2021-10-13

101 downloads per month
Used in 3 crates

MIT license

315KB
5.5K SLoC

Explore musical tunings and create synthesizer tuning files for microtonal scales.

Resources

Overview

tune is planned to be part of a larger ecosystem for microtonal software in Rust.

Current projects relying on tune are:

  • tune-cli: A command line tool with live-retuning capabilities
  • microwave: A microtonal modular waveform synthesizer
  • fluid-xenth: A microtonal soundfont renderer

Demo

Feature List

  • Pitch conversions
    • Convert between linear and logarithmic ratios
    • Determine the frequency for a given note in a custom tuning system
    • Determine the note for a given frequency in a custom tuning system
    • Find fractional approximations for frequency ratios
  • Export scales
    • To Scala (scl and kbm) format
    • As Midi Tuning Standard (MTS) Sysex Messages
      • Single Note Tuning Change (with Bank Select)
      • Scale/Octave Tuning (1-Byte and 2-Byte)
  • Import scales
    • From Scala (scl and kbm) format
  • Live retuning
    • Enhance the capabilities of synthesizers with limited tuning support
      • Tune channels ahead of time to keep the bandwidth low
      • Tune channels just in time for full pitch freedom
    • Pick the message type that your synth supports
      • Single Note Tuning Change
      • Scale/Octave Tuning
      • Channel Fine Tuning
      • Pitch Bend
  • Equal-step tunings
    • Analyze meantone, mavila and porcupine temperaments
    • Find patent vals
    • Find tempered-out commas
    • PerGen-based notation
      • Determine generalized accidentals
      • Render generalized note names
    • Render generalized keyboard layouts
  • MOS scales
    • Find MOSes for a given generator
    • Find generators for a given MOS
  • MIDI messages
    • Create basic MIDI messages
    • Create tuning-related RPN messages
    • Parse basic MIDI messages

No runtime deps