Skip to content
/ tune Public

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

License

Notifications You must be signed in to change notification settings

Woyten/tune

Repository files navigation

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

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

Resources

Features

Pitch Conversions

  • Convert between linear and logarithmic pitch 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 for a glitch free tuning experience
    • Tune channels just in time for full pitch freedom
  • Pick the message type that your synth supports
    • Single Note Tuning Change (with Bank Select)
    • Scale/Octave Tuning (1-Byte and 2-Byte)
    • Channel Fine Tuning
    • Pitch Bend

MOS Scales and Isomorphic Keyboards

  • Find MOSes for a given generator
  • Find generators for a given MOS
  • Find MOS-based isomorphic keyboard layouts
    • Supported genchains: Meantone, Mavila, Porcupine, Tetracot, Hanson
    • Determine step sizes
    • Generate automatic color schemas
    • Print generalized note names and accidentals

Commas and Temperaments

  • Find patent vals
  • Find tempered-out commas

MIDI Messages

  • Create basic MIDI messages
  • Create tuning-related RPN messages
  • Parse basic MIDI messages