音を扱う基礎的な方法をみてゆきます。
プロジェクト名は audio とします。

以下、ofApp.hとofApp.cpp の違いに注意してください。
ofSoundStream オブジェクトを使うと、波形を音として出力することができます。
はじめに、ofApp.h ヘッダファイルに ofSoundStream オブジェクトを追加します。
class ofApp : public ofBaseApp {
public:
...略...
void audioOut(ofSoundBuffer & buffer);
ofSoundStream soundStream;
int sampleRate;
float phase;
float phaseAdder;
};
つぎに、サンプリングレートなどのオーディオ出力に必要な設定を行います。
void ofApp::setup() {
int bufferSize = 512;
sampleRate = 44100; // サンプリングレートは44100[Hz]
phase = 0;
phaseAdder = 0.0f;
ofSoundStreamSettings settings;
settings.setOutListener(this);
settings.sampleRate = sampleRate;
settings.numOutputChannels = 2; // 出力は2チャンネル: 左右
settings.numInputChannels = 0;
settings.bufferSize = bufferSize;
soundStream.setup(settings);
}
そして、波形をオーディオとして出力します。
void ofApp::audioOut(ofSoundBuffer & buffer) {
while(phase > TWO_PI) {
phase -= TWO_PI;
}
int nCh = buffer.getNumChannels();
phaseAdder = 440.0f / (float)sampleRate * TWO_PI; // 周波数:440[Hz]
for(int i=0; i<buffer.getNumFrames(); i++) {
phase += phaseAdder;
float sample = sin(phase);
buffer[i * nCh] = sample;
buffer[i * nCh + 1] = sample;
}
}
440[Hz] のサイン波が出力されます。周波数の数値を変更して実行してみてください。
音量を変更できるようにします。