Make xenharmonic music and explore musical tunings.
Resources
Overview
microwave is a microtonal modular waveform synthesizer 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.
Installation
To install microwave (build it from scratch) 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:
To run microwave you need the appropriate runtime libraries for your graphics card. For me (Ubuntu 18.04 LTS) the following step worked:
If this doesn't help or you don't use Ubuntu/apt try following these instructions.
Usage
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:
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: Clavinet
envelope_type: Piano
stages:
- Oscillator:
kind: Sin
frequency: WaveformPitch
modulation: None
destination:
buffer: Buffer0
intensity: 440.0
- Oscillator:
kind: Triangle
frequency: WaveformPitch
modulation:
ByFrequency: Buffer0
destination:
buffer: AudioOut
intensity: 1.0
This waveform has two stages:
- Generate a sine wave with the waveform's nominal frequency and an amplitude of 440. Write this waveform to
Buffer0. - Generate a triangle wave with the waveform's nominal frequency and an amplitude of 1.0. Modulate the waveform's frequency (in Hz) sample-wise by the amount stored in
Buffer0. Write the modulated waveform toAudioOut.
To create your own waveforms edit the waveforms file 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
source: Buffer0
destination:
buffer: AudioOut
intensity: 1.0
Feature List
- Sound features
- Built-in modular waveform synhesizer
- FluidLite soundfont renderer
- External synthesizer via MIDI-out
- Microphone / aux input
- WAV recording
- Built-in modular waveform synhesizer
- Control features
- Sequencer / piano keyboard via MIDI-in
- Computer keyboard (configurable isomorphic layout)
- Touch Screen
- Mouse
- LF sources, e.g. time slices and oscillators
- 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 import
- Tuning-dependent automatic keyboard layout
- MIDI-out retuning via Single Note Tuning messages
- Display frequencies and rational number approximations
Help
For a complete list of command line options run