Sound: playing arbitrary waveform

Hello, I make electronic music and I’m using a physical synth (Elektron Digitakt) which can take arbitrary single-cycle waveforms to create continuous sounds. For instance, as with the audio library of processing, we have the ability to “sound” a sine wave (i.e. “playing” a single-cycle sine wave in an extremely fast loop), this synth can take any arbitrary waveform and play it in the same way, allowing for complex harmonics/frequency spectrums.

Now I would like to build a sketch which allows me to graphically manipulate a custom single-cycle wave, i.e. instead of having a pure sine, to create a complex arbitrary waveform by morphing different wave shapes (sine, triangle, square) at different frequencies and phases. This part I can handle, see picture:

What would be nice is if Processing was able to actually “play” my arbitrary, graphic wave, just like it “plays” a sine with the audio library methods. So it would be possible to have a preview (or pre-hear?) of the audible harmonics of that custom waveform.

The waveform data is stored in a FloatList of 1024 samples, with max 1.0 and min -1.0. Is there a way to make this from here? I’m not necessarily thinking real-time sound synthesis, although it would be great. For example, writing a 2-second sample to disk from the arbitrary waveform and playing it on demand would be enough.

Any suggestions welcome!

Ooooooh. Oooh. OK.

Just found about the AudioSample class. It looks like it’s able to do what I’m looking for. I’ll check it out and report back.

EDIT: I have to say that searches for “sound” and “audio” on Processing’s Reference webpage did not return any result. I had to google “write sound file processing” to reach the AudioSample class reference.

You could also use minim which is already included with processing 2 and above if i am correct.

minim is available through contributions manager – although it isn’t pre-installed. I’d recommend it for a project like this. Processing Sound is not primarily intended for synthesis – minim is.

http://code.compartmental.net/tools/minim/

Indeed. Minim looks the part. I only ever used it for spectrum analysis/Fourier transform, but synthesis looks great, in particular in version 2.2.2 with the uGens objects. Thanks for the heads up!