JECT (JUCE Extended Convolution Techniques) is a simple, cross-platform demo application for experimenting with cross-synthesis of sound files via extended convolution techniques as described in the (unreleased) Extended Convolution Techniques for Cross-Synthesis ICMC 2016 paper. It supports WAV, AIFF and OGG files of arbitrary length. The techniques were developed by Chris Donahue, Tom Erbe and Miller Puckette at UCSD in 2016.

You might be interested in RFS1k, a set of 1,000 random sounds with permissive licenses collected for this research. RFS1k is a good starting point to experiment with timbre exploration using JECT.

How to use

The Input section is a list of all sound files to include in cross-synthesis. Click Add (or drag) to add files to the list. Click Remove to remove selected rows from the list. For each sound file: the Use button includes it for cross-synthesis, the Mag/Phase sliders determines the sound file's influence on the hybrid magnitude/phase spectrum, and the Preview button allows you to hear the file. The Mag/Phase Link dropdown controls the linking behavior of the Mag/Phase sliders.

The Waveform section allows you to listen to either the input sound files (via the Preview buttons) or the most recent hybrid sound (via the Convolve button). The other controls should be self-explanatory.

The Convolution section allows you to modify further cross-synthesis parameters. The NFFT slider allows you to determine the power of two used for the FFT (which will affect the length of the result). The Mag Scale slider allows you to manipulate a value which determines the spectral flatness of the result. The lower the value, the flatter the spectrum (noisier). The Phase Scale slider allows you to manipulate a value which nullifies or randomizes phase at low or high values respectively. The higher the value, the more ambient the result. The huge Convolve button recomputes the convolution (NOTE: the Convolve button needs to be pressed every time you change parameters).


We are currently not distributing binaries for this software, though this may change in the future.

  1. Download JUCE 4.2.1
  2. Compile the Projucer under extras/Projucer
  3. Download JECT
  4. Open ject.jucer in Projucer
  5. Under Config>JECT>Modules, change the module paths to point to the modules folder inside JUCE
  6. In Projucer, File>Save Project and Open in IDE (this copies the JUCE module source files to the JECT directory)
  7. Compile using your IDE or make if on Linux