Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial
Most STK classes process single-sample data streams via their tick()
function. In order to distinguish single-sample and sample frame calculations, the WvIn and WvOut classes implement both tick()
and tickFrame()
functions. The tickFrame()
functions take or return a reference to an StkFrames object representing one or more sample frames. For single-channel streams, the tick()
and tickFrame()
functions produce equivalent results. When tick()
is called for a multi-channel stream, however, the function either returns a sample frame average (WvIn) or writes a single sample argument to all channels (WvOut).
Multi-channel support for realtime audio input and output is dependent on the audio device(s) available on your system.
The following example demonstrates the use of the FileWvOut class for creating a four channel, 16-bit AIFF formatted audio file. We will use four sinewaves of different frequencies for the first two seconds and then a single sinewave for the last two seconds.
// foursine.cpp STK tutorial program #include "SineWave.h" #include "FileWvOut.h" int main() { // Set the global sample rate before creating class instances. Stk::setSampleRate( 44100.0 ); int i; FileWvOut output; SineWave inputs[4]; // Set the sine wave frequencies. for ( i=0; i<4; i++ ) inputs[i].setFrequency( 220.0 * (i+1) ); // Define and open a 16-bit, four-channel AIFF formatted output file try { output.openFile( "foursine.aif", 4, FileWrite::FILE_AIF, Stk::STK_SINT16 ); } catch (StkError &) { exit( 1 ); } // Write two seconds of four sines to the output file StkFrames frames( 88200, 4 ); for ( i=0; i<4; i++ ) inputs[i].tick( frames, i ); output.tickFrame( frames ); // Now write the first sine to all four channels for two seconds for ( i=0; i<88200; i++ ) { output.tick( inputs[0].tick() ); } return 0; }
[Main tutorial page] [Next tutorial]
The Synthesis ToolKit in C++ (STK) |
©1995-2007 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |