Summary of Granular synthesis replies (Brian Gygi )

Subject: Summary of Granular synthesis replies
From:    Brian Gygi  <bgygi(at)EBIRE.ORG>
Date:    Thu, 25 Sep 2003 12:52:41 -0700

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(at)CS.Berkeley.EDU> >To: bgygi(at)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 >------------------------------------------------------------------------- ****************************** >From: Koen Tanghe <Koen.Tanghe(at)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 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 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 > (there are also code snippets for various other >music processing related techniques in the code archive). ****************************** >From: Andrea Valle <andrea.valle(at)UNITO.IT> >Subject: Re: Granular synthesis software >To: AUDITORY(at)LISTS.MCGILL.CA > >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(at)> >To: Brian Gygi <bgygi(at)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. > >Paris > > >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; > >% Do ISTFT >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)); >end > >soundsc( s, 44100) ******************************* >From: "McAnally, Ken" <Ken.McAnally(at)> >To: "'Brian Gygi'" <bgygi(at)> >Subject: RE: Granular synthesis software >C-Sound has one. It is public domain and easy to program. Instructions for >download are under Getting Started > hope this helps >cheers >Ken ****************************** >Date: Sun, 21 Sep 2003 17:51:27 -0700 >From: Curtis Roads <clang(at)> >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(at) ****************************** >Date: Sun, 21 Sep 2003 22:04:21 -0700 >Subject: Re: Granular Synthesis Software >From: Stephen Pope <stp(at)> > >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 >( in a class (MAT 240D, see > this coming quarter.

This message came from the mail archive
maintained by:
DAn Ellis <>
Electrical Engineering Dept., Columbia University