Subject: Re: Granular synthesis software From: Paris Smaragdis <paris(at)MEDIA.MIT.EDU> Date: Sat, 20 Sep 2003 19:55:10 -0400> Does anyone know of any freely available code for granular synthesis - > pref. in Matlab, but C++ or Visual Basic would also be OK. Any leads are > appreciated. 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)