examples.chugins\Wavetable\wavetable-help.ck
////////////////////////////////////////////////////
// Wavetable - User-definable Wavetable with      //
//            various interpolation algorithms    //
//                                                //
// by Joel Matthys                                //
// (c) 2016, GPL 2.0                              //
//                                                //
////////////////////////////////////////////////////
//
// Settings:
// freq (float): set frequency
// interpolate (int): 0 = no interpolation
//                    1 = linear interpolation
//                    2 = cubic interpolation
//                    3 = Hermite interpolation
// setTable (float[]): associate a ChucK array with the Wavetable instrument
// sync (int): 0 = connected input UGen controls frequency
//             1 = connected input UGen (usually Phasor) controls phase
//             * see input-test.ck for examples
//
// By default the Wavetable instrument uses a 2048-point non-interpolating sine table.

Wavetable w => dac => WvOut rec => blackhole;
"test" => rec.wavFilename;
0.8 => w.gain;
440 => w.freq;

<<< "built-in sine table, non-interpolating", "" >>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

// Using a ChucK array as a wavetable
[-1.0, -0.5, 0, 0.5, 1, 0.5, 0, -0.5] @=> float myTable[];

w.setTable (myTable);
// ChucK array "myTable" is now associated with the w Wavetable instrument.
<<< "Using array myTable as the wavetable", "">>>;
<<< "Non-interpolating", "">>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

1 => w.interpolate; // Linear Interpolation
<<< "Linear interpolation", "" >>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

2 => w.interpolate; // Lagrange interpolation
<<< "Lagrange interpolation", "" >>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

3 => w.interpolate; // Cubic interpolation
<<< "Cubic interpolation", "" >>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

4 => w.interpolate; // Hermite interpolation
<<< "Hermite interpolation", "" >>>;
2::second => now;

w =< dac;
ms => now;
w => dac;

<<< "Modifying the wavetable on the fly!", "">>>;
// Any changes to myTable will change the waveform!
myTable.size() => int tabsize;
repeat (15)
{
    Math.random2f(-1,1) => myTable[Math.random2(0,tabsize-1)]; // randomly change one of the values in the table
    1::second => now;
}
home .. language .. program .. examples