Hello list, Does anyone know if there is any UGen to store waveforms in a table? Thus, wavetable synthesis. I've come up with a few ideas, but none of them seem to work: 1. The first was to use a Gen7 together with a phasor. However, I get no sound. See the following patch which I think should synthesise a sine wave: 512 => int length; 440. => float freq; 1./ length => float step; float coefs[ 2*length-1]; for( 1 => int i; i < coefs.cap() ; 2 +=> i ) { Math.sin((i-1)*2.*pi/511.) => coefs[i-1]; // value at pos step => coefs[i]; // duration of value, 1 samp } Math.sin( length*2.*pi/length ) => coefs[ length - 1]; // last value Phasor p => Gen7 gen7 => WvOut file => dac; coefs => gen7.coefs; freq => p.freq; while( true ) 1::samp => now; 2. The second idea was to use a sndbuf, but the results are far from satisfactory. see example: //first you need to generate one period of a sine wave: SinOsc s => WvOut file => blackhole; "sine_period.wav" => file.wavFilename; 1024 => int length; second/samp => float sr; sr/length => s.freq; now + length::samp => time later; while( now < later ) 1::samp=>now; ----- separate chuck file ---- // wavetable synth part: synthesise a sine wave at any freq SndBuf snd => blackhole; Impulse imp => dac; "sine_period.wav" => snd.read; snd.samples() => int length; // must be power of 2 length - 1 => int bitmask; second/samp => float sr; 440. => float freq; freq*length/sr => float delta; delta $int => int int_delta; 0 => float pos; 0 => int int_pos; 1 => int interpolate; if( me.args() ) Std.atoi( me.arg(0) ) => interpolate; while( true ) { if( !interpolate ) { int_delta::samp => now; snd.last() => imp.next; snd.pos( snd.pos()&bitmask ); continue; } delta + pos => pos; pos $int => int_pos; (snd.valueAt( (int_pos&bitmask) + 1 ) - snd.valueAt(int_pos&bitmask))*(pos-int_pos) + snd.valueAt (int_pos) => imp.next; 1::samp => now; } Could someone give me a hand? thanks, eduard