mirror of
https://github.com/thestk/stk
synced 2026-01-11 12:01:52 +00:00
55 lines
918 B
C++
55 lines
918 B
C++
// rtsine.cpp STK tutorial program
|
|
|
|
#include "SineWave.h"
|
|
#include "RtWvOut.h"
|
|
#include <cstdlib>
|
|
|
|
using namespace stk;
|
|
|
|
int main()
|
|
{
|
|
// Set the global sample rate before creating class instances.
|
|
Stk::setSampleRate( 44100.0 );
|
|
Stk::showWarnings( true );
|
|
|
|
int nFrames = 100000;
|
|
SineWave sine;
|
|
RtWvOut *dac = 0;
|
|
|
|
try {
|
|
// Define and open the default realtime output device for one-channel playback
|
|
dac = new RtWvOut( 1 );
|
|
}
|
|
catch ( StkError & ) {
|
|
exit( 1 );
|
|
}
|
|
|
|
sine.setFrequency( 441.0 );
|
|
|
|
// Option 1: Use StkFrames
|
|
/*
|
|
StkFrames frames( nFrames, 1 );
|
|
try {
|
|
dac->tick( sine.tick( frames ) );
|
|
}
|
|
catch ( StkError & ) {
|
|
goto cleanup;
|
|
}
|
|
*/
|
|
|
|
// Option 2: Single-sample computations
|
|
for ( int i=0; i<nFrames; i++ ) {
|
|
try {
|
|
dac->tick( sine.tick() );
|
|
}
|
|
catch ( StkError & ) {
|
|
goto cleanup;
|
|
}
|
|
}
|
|
|
|
cleanup:
|
|
delete dac;
|
|
|
|
return 0;
|
|
}
|