A Polyphonic, Multitimbral, Modular Additive Synthesizer (Version 10)
By Sean Luke (sean@cs.gmu.edu)
With Help from V. Hoyle
Copyright 2018 by George Mason University
Related projects:
- Edisyn, a patch editor toolkit with sophisticated exploration tools.
- Seq, a very unusual hierarchical and modular music sequencer.
- Gizmo, an Arduino-based MIDI Swiss Army knife.
- Computational Music Synthesis, an open-content book on building software synthesizers.
Donations are welcome via Paypal to my email address (sean@cs.gmu.edu).
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.
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.
Sierra has really 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.
Let's assume you stuck Flow in the /Applications directory as usual. Then:
- Run the Terminal Program (in /Applications/Utilities/)
- Type the following command and hit RETURN:
sudo spctl --add /Applications/Flow.app
- Enter your password and hit RETURN.
- Quit the Terminal Program
Now you should be able to run Flow. Let us know if this all works.
- Flow cannot access your laptop's microphone on Catalina. 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 11. 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.
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. In 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 8.
-
Install at least Java 8 (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.
-
Make sure Java is installed as discussed earlier.
-
Download Flow's jar file, called flow.jar.
-
Grab some patches, some wavetables, and the manual.
-
Run Flow as:
java -jar flow.jar