[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Summary of Granular synthesis replies

Here are the suggestions sent in by various folks to my request for
Granular Synthesis software.  Thanks to everyone who contributed.

Brian Gygi

Date: Sat, 20 Sep 2003 09:02:48 -0700
From: John Lazzaro <lazzaro@CS.Berkeley.EDU>
To: bgygi@EBIRE.ORG
Subject: Re: Granular synthesis software

        Sfront, the MPEG 4 Structured Audio compiler we did
a few years ago, has an implementation of the grain() opcode,
which is a general-purpose granular engine. See:


        for a description of what the opcode does, and see:


        to get oriented to what Structured Audio is and how
sfront fits in, and where to download it, etc ...

John Lazzaro -- Research Specialist -- CS Division -- EECS -- UC Berkeley
lazzaro [at] cs [dot] berkeley [dot] edu     www.cs.berkeley.edu/~lazzaro

From: Koen Tanghe <Koen.Tanghe@UGENT.BE>
Subject:      Re: Granular synthesis software

Depends on what you mean with "granular synthesis". I have written a
granular effect (using a delay line, panning, feedback, pitch shifting,
freezing, ...) from scratch in C++ myself, implemented as a VST and Audio
Unit plugin for processing real-time sound streams (KTGranulator, you can
download it at http://www.smartelectronix.com/~koen). If you really want my
code or a library around my code, you can use the form on the
Smartelectronix web site to contact me directly.

Do check out Ross Bencina's great "Implementing real-time granular
synthesis" at http://www.audiomulch.com/~rossb. This might not be your
standard "scientific paper" on the subject, but it surely contains a lot
more to-the-point information on the implementation of the techniques than I
could find in most "peer reviewed articles/books", and the accompanying
GPL'ed C++ code is there too. Also, his modular program AudioMulch really
*uses* the things he wrote in this article, so you're sure it really works
and you can download it for free.
Although I knew AudioMulch, I had never seen this information until after I
implemented my granulator. It would have been much easier, especially since
I wanted to make an effect very similar to his delay line granulator, but as
a plugin so you can use it in several programs (any VST/AU compatible
program, and also DX compatible ones if you use a VST/DX wrapper). So I hope
you find the link useful (I surely do now).

Also: I'm not sure about this, but I doubt you will get much information on
this newsgroup for questions like yours. You're probably better off on the
music-dsp mailing list/web site maintained by Bram & David at
http://www.musicdsp.org (there are also code snippets for various other
music processing related techniques in the code archive).

From: Andrea Valle <andrea.valle@UNITO.IT>
Subject:      Re: Granular synthesis software

Ciao Brian,
Csound source code is written in C and is freely available at

Here you can find some opcodes sources related to granular synthesis
(grain and granulate, but in certain way also fof).
There some score (event list) editors for csound specialized for
granular effects: es. Cmask.

Anycase, it surely depend on what you exactly mean with gs (the whole
subject can be enormous: you surely know Microsound by Roads)

PS: What about PD sources under GNU license?


Date: Sat, 20 Sep 2003 19:55:10 -0400
From: Paris Smaragdis <paris@media.mit.edu>
To: Brian Gygi <bgygi@EBIRE.ORG>

Basic granular synthesis is actually pretty easy in matlab, make a sparse
matrix, scatter grains randomly in it and then do an inverse STFT.  Here's
some quick and dirty code.  You can easily extend it to control other
parameters as well by changing the way you construct y.


bw = 20; % Bandwidth (in FFT bins)
bc = 30; % Freq center (in FFT bins)
d = .5; % Grain density
sz = 512; % FFT size
l = 1000; % FFT frame length

% Make grains
y = sparse( ...
 round( (bw/4)*randn( 1, d*l)+bc), ...
 round( linspace( 1, l, d*l)), ...
 randn( 1, d*l));
y(sz/2+1,l) = 0;

h = hanning( sz);
s = zeros( l*(sz/4)+sz, 1);
for i = 1:l
 z = full( [y(:,i); y(end-1:-1:2,i)]);
 s((i-1)*(sz/4)+1:(i-1)*(sz/4)+sz) = ...
  s((i-1)*(sz/4)+1:(i-1)*(sz/4)+sz) + h.*real( ifft( z));

soundsc( s, 44100)


From: "McAnally, Ken" <Ken.McAnally@dsto.defence.gov.au>
To: "'Brian Gygi'" <bgygi@ebire.org>
Subject: RE: Granular synthesis software

C-Sound has one. It is public domain and easy to program. Instructions for
download are under Getting Started
http://mitpress.mit.edu/e-books/csound/frontpage.html hope this helps

Date: Sun, 21 Sep 2003 17:51:27 -0700
From: Curtis Roads <clang@create.ucsb.edu>
Subject: Re: Granular Synthesis Software

Dear Brian,

Granular synthesis comes in several forms,
and there are many implementations.

I don't really have a handy API/library in C++.
With John Alexander, I wrote CloudGenerator
in 1995. It is in C and Macintosh Toolbox
(MacOS 7) so it is rather low level.
I can send you this code but of course
it no longer compiles. Frankly you would
probably do better to start from scratch.

My personal programs for granular synthesis
run in SuperCollider 1 and 2 for MacOS 8 and 9.
There is no PC version.

A simple way to realize granular synthesis is
to write your own grain generator to emit
NOTE records that are read by CSound.

If you do a web search you can probably find
other code as well. A lot of people have developed
code based on these techniques. My book
Microsound describes many of these programs.

You might contact Stephen Pope for the CSL
code, which is a C++ library (stp@create.ucsb.edu).

Date: Sun, 21 Sep 2003 22:04:21 -0700
Subject: Re: Granular Synthesis Software
From: Stephen Pope <stp@create.ucsb.edu>

I would only add to what Curtis has written that we are planning to
develop facilities for granular synthesis in C++ using the CSL framework
(http://create.ucsb.edu/CSL) in a class (MAT 240D, see
http://www.mat.ucsb.edu/240) this coming quarter.