A Polyphonic, Multitimbral, Modular Additive Synthesizer (Version 11)
By Sean Luke ([email protected])
With Help from V. Hoyle \
Related projects:
- Edisyn, a patch editor toolkit with sophisticated exploration tools.
- Gizmo, an Arduino-based MIDI Swiss Army knife.
- Seq, a very unusual hierarchical and modular music sequencer.
- Arduino Firmware (oscillators, modulators, etc.) for the AE Modular Grains module. Includes an ultralight but full-featured MIDI library for small microcontrollers.
- Computational Music Synthesis, an open-content book on building software synthesizers.
Donations are welcome via Paypal to my email address ([email protected]).
Flow is a fully-modular multitimbral and polyphonic additive software synthesizer written in pure Java. It runs on MacOS, Linux, and Windows. I have used it to play individual patches and to play many simultaneous patches for a full song controlled over MIDI via a DAW.
Flow has almost 70 modules of different shapes and sizes, and currently supports up to 32 voices at up to 256 partials and 44.1KHz with a rate of one new partial update every 32 samples. Flow is a very computationally expensive program and will keep your laptop quite warm and your fan busy. You need to have some fairly good hardware to run Flow at full blast successfully (for reference, Flow was developed on a 2.8Ghz i7 2015 Macbook Pro Retina). There are options for reducing Flow's footprint (such as reducing the number of voices or partials).
-
Flow has an extensive manual which discusses additive synthesis, Flow's modular approach, how to run it, how to integrate it with controllers and DAWs, and how to build new modules.
-
One of Flow's modules is a wavetable synth. It's designed to load wavetables built with WaveEdit, and there are quite a number to choose from on their associated website, WaveEditOnline
-
Another of Flow's modules lets you load, draw, and save out partials. This module can load single-cycle waves such as Adventure Kid's Single Cycle Waveforms.
-
Interested in helping out on Flow? Our To Do list lists current open issues and bugs.
-
Three songs made using only Flow in multitimbral mode, with Ableton serving as just the sequencer. They are called 8, 9, and 10. 8 is the best one. All three come with the Flow patches and Ableton files to recreate them.
-
One song using Flow in multitimbral mode with Seq serving as the sequencer. It's called 14. It's nothing special, it was written to stress-test Seq.
Flow is cross-platform and will run on a variety of platforms (Windows, Linux) but we are personally developing on and for MacOS and Linux. We'd appreciate feedback and screenshots of it running on Windows so we can tweak things.
First install Flow from this link: Flow.app.zip. Sadly, it's a whopping 70MB because it includes the Java VM. :-(
You'll also want to download some patches, some wavetables, and the manual. Pay attention to section 2.1 of the manual, where it explains how to tune Flow for your computer speed.
MacOS has lately locked down the ability to run an application that's not from a commercial, paying Apple Developer. And GMU is not one. So you will have to instruct Sierra to permit Flow to run.
This is pretty easy. CONTROL-Click on Flow's App Icon, and while holding Control down, select "Open". Now instead of telling you that Flow cannot be opened because it's from an unidentified developer, you'll be given the option to do so. You probably will only have to do this once.
Apple has made this much more annoying now, to everyone's consternation. You'll have to use the Terminal program. Let's assume you stuck Flow in the /Applications directory as usual. Now we have to tell Gatekeeper to allow Flow to run on your machine:
- Run the Terminal Program (in /Applications/Utilities/)
- Type the following command and hit RETURN:
sudo xattr -cr /Applications/Flow.app
- Enter your password and hit RETURN
- Quit the Terminal Program
Now you should be able to run Flow. You only have to do this once. This should work with earlier versions of OS X too.
If you want to use Flow in combination with a DAW, see the manual's section on doing that.
You can also run Flow from its jar file from the command line: see "Running from the command line" at end of these instructions.
- Flow cannot access your laptop's microphone on Catalina and later. I don't know if it can access external microphones.
At present Flow only runs under Rosetta on the M1, because its package contains an Intel-only Java VM (because I ownly own an Intel Mac and am not running Big Sur). Don't expect things to change until I get an M1. If you have installed Java yourself, you can run Flow from the command line (see later below) and it'll probably run natively.
The following should work (but has not been tested):
-
Download and install at least Java 20. The JRE should work fine. Earlier versions of Java have a bug which causes Java apps (like Flow) to make teeny tiny windows on the latest high-resolution screens.
-
Download Flow's jar file, called flow.jar.
-
You'll also want to download some patches, some wavetables, and the manual. Pay attention to section 2.1 of the manual, where it explains how to tune Flow for your computer speed.
-
Double-click on flow.jar to launch Flow.
-
See Running from the command line below for more glitch-free options.
Flow makes heavy use of Java preferences. There is a longstanding Java/Windows bug which breaks Java preferences and will cause Flow to be unable to make any of your preferences persistent. As of Java 11 the bug should be fixed, but if it's not, please let us know.
Flow should work fine if you have installed at least Java 20.
-
Install at least Java 20 (openjdk).
-
Download Flow's jar file, called flow.jar.
-
You'll also want to download some patches, some wavetables, and the manual. Pay attention to section 2.1 of the manual, where it explains how to tune Flow for your computer speed.
-
You'll need to figure out how to make it so that double-clicking on the jar file launches it in java. In Ubuntu, here's what you do: right-click on the jar file icon and choose "Properties". Then select the "Open With" tab, and select your Java VM (for example "Open JDK Java 8 Runtime"). The press "Set as Default". This makes the Java VM the default application to launch jar files.
-
Thereafter you should be able to just double-click on the file to launch Flow.
-
See Running from the command line below for more glitch-free options.
-
Make sure Java 20 or later installed.
-
Download Flow's jar file, called flow.jar.
-
Grab some patches, some wavetables, and the manual.
-
Run Flow as:
java -jar flow.jar
-
Flow benefits from a lower-latency garbage collector to prevent it from glitching. You might instead run Flow as:
java -jar flow.jar -XX:+UseZGC -XX:MaxGCPauseMillis=1