24 releases (breaking)
new 0.20.0 | Apr 9, 2021 |
---|---|
0.19.1 | Mar 31, 2021 |
0.18.0 | Mar 12, 2021 |
0.15.0 | Dec 18, 2020 |
0.7.1 | Jul 26, 2020 |
#7 in Audio
228 downloads per month
605KB
11K
SLoC
Make xenharmonic music and explore musical tunings.
Resources
Overview
microwave
is a microtonal modular waveform synthesizer with soundfont rendering capabilities based on:
It features a virtual piano UI enabling you to play polyphonic microtonal melodies with your touch screen, computer keyboard, MIDI keyboard or mouse. The UI provides information about pitches and just intervals in custom tuning systems.
Download / Installation
You can download a precompiled version of microwave
from the Releases section or you can build a fresh binary from scratch using Cargo:
cargo install -f microwave
To build microwave
additional dev dependencies required by Nannou might need to be installed. On the CI environment (Ubuntu 18.04 LTS) the following installation step is sufficient:
sudo apt install libxcb-composite0-dev libasound2-dev
To run microwave
you need the appropriate runtime libraries for your graphics card. For me (Ubuntu 18.04 LTS) the following step worked:
sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
If this doesn't help or you don't use Ubuntu/apt
try following these instructions.
Usage
microwave run # 12-EDO scale (default)
microwave run steps 1:22:2 # 22-EDO scale
microwave run import my_scale.scl # imported scale
This should spawn a window displaying a virtual keyboard. Use your touch screen, computer keyboard or mouse to play melodies on the virtual piano.
Soundfont Files
For playback of sampled sounds you need to provide the location of a soundfont file. The location can be set via the environment variable MICROWAVE_SF_LOC
or the command line:
microwave run --sf-loc /usr/share/sounds/sf2/default-GM.sf2 steps 1:22:2
If you like to use compressed sf3 files you need to compile microwave
with the sf3
feature enabled. Note that the startup will take significantly longer since the soundfont needs to be decompressed first.
Modular Synth – Create Your Own Waveforms
On startup, microwave
tries to locate a waveforms file specified by the --wv-loc
parameter or the MICROWAVE_WV_LOC
environment variable. If no such file is found microwave
will create a default waveforms file for you.
Let's have a look at an example clavinettish sounding waveform that I discovered by accident:
name: Funky Clavinet
envelope: Piano
stages:
- Oscillator:
kind: Sin
frequency: WaveformPitch
modulation: None
out_buffer: 0
out_level: 440.0
- Oscillator:
kind: Triangle
frequency: WaveformPitch
modulation: ByFrequency
mod_buffer: 0
out_buffer: 1
out_level: 1.0
- Filter:
kind: HighPass2
resonance:
Mul:
- WaveformPitch
- Envelope:
name: Piano
from: 2.0
to: 4.0
quality: 5.0
in_buffer: 1
out_buffer: AudioOut
out_level: 1.0
This waveform has three stages:
- Generate a sine wave with the waveform's nominal frequency F and an amplitude of 440. Write this waveform to buffer 0.
- Generate a triangle wave with frequency F and an amplitude of 1.0. Modulate the waveform's frequency (in Hz) sample-wise by the amount stored in buffer 0. Write the modulated waveform to buffer 1.
- Apply a second-order high-pass filter to the samples stored in buffer 1. The high-pass's resonance frequncy is modulated by the envelope named
Piano
and ranges from 2F to 4F. Write the result toAudioOut
.
To create your own waveforms use the default waveforms file as a starting point and try editing it by trial-and-error. Let microwave
's error messages guide you to find valid configurations.
Live Interactions
You can live-control your waveforms with your mouse pointer or any MIDI Control Change messages source.
The following example stage defines a resonating low-pass filter whose resonance frequency can be controlled with a MIDI modulation wheel/lever from 0 to 10,000 Hz.
Filter:
kind: LowPass2
resonance:
Control:
controller: Modulation
from: 0.0
to: 10000.0
quality: 5.0
in_buffer: 0
out_buffer: AudioOut
out_level: 1.0
Feature List
- Sound features
- Built-in modular waveform synhesizer with physical modeling synhesis
microwave run --wv-loc <waveforms-file-location> [scale-expression]
- FluidLite soundfont renderer
microwave run --sf-loc <soundfont-file-location> [scale-expression]
- External synthesizer via MIDI-out
microwave run --midi-out <midi-target> [scale-expression]
- Microphone / aux input
microwave run --audio-in [scale-expression]
- WAV recording
- Built-in modular waveform synhesizer with physical modeling synhesis
- Control features
- Sequencer / piano keyboard via MIDI-in
microwave run --midi-in <midi-source> [scale-expression]
- Computer keyboard (configurable isomorphic layout)
- Touch Screen
- Mouse
- Channel events (pitch-bend, modulation, pedals, aftertouch, etc.)
- Polyphonic events (key pressure)
- LF sources (envelopes, time slices, oscillators, etc.)
- Sequencer / piano keyboard via MIDI-in
- Effects
- Low-pass
- 2nd order low-pass
- High-pass
- 2nd order high-pass
- Band-pass
- Notch filter
- All-pass
- Reverb
- Spatial delay
- Rotary speaker
- Microtuning features
- Custom scales
- SCL imports
- KBM imports
- Tuning-dependent automatic isomorphic keyboard layouts
- MIDI-out retuning via Single Note Tuning messages
- Display frequencies and rational number approximations
Help
For a complete list of command line options run
microwave help
License
microwave
statically links against fluidlite
for soundfont renderering capabilities. This makes the binary executable of microwave
a derivative work of fluidlite
. fluidlite
is licensed under the GNU Lesser General Public License, version 2.1.
Dependencies
~27MB
~543K SLoC