openFrameworksでSndObjを使う

Programming Interactivityに載ってた。著者のJoshua NobleさんがofxSndObjを作ってるのですね。

前回ofxMSAPhysicsでものすごく面倒なやり方をしてましたが、これは僕がXcodeの使い方をわかってなかった。
XcodeのProjectメニューからAdd to Project...して追加したいaddonのsrcフォルダとlibフォルダを選べばいいだけのことでした。それでXcodeの画面で追加したsrcとlibsをaddonsというグループにまとめておくという流れ。XcodeのGroups & Filesは実際のフォルダ構成とは別物。合わせておくとわかりやすい場合もあるというだけ。

僕のopenFrameworks関係のフォルダ構成は

+of
 -addons_contributed
 +of_preRelease_v0.06_xcode_FAT
  -addons
  +apps
   -addonsExamples
   -examples
   -sketch
  -libs
  -other
 -samples

という風にしていて、標準で入っているaddonとそうでないものを分けています。ofxSndObjはaddons_contributedに入れてる。samplesはネットとかで拾ってきたコードを入れておくフォルダ。

以上を踏まえて新しいemptyExampleをsketch以下にコピーして名前を変えた後、ofxSndObjのsrcとlibsを追加し、testApp.hとtestApp.cppを以下のようにすればお約束の440Hzのサイン波が鳴るはず。

testApp.h

#ifndef _TEST_APP
#define _TEST_APP

#include "ofMain.h"
#include "ofxSndObj.h"
#include "AudioDefs.h"

class testApp : public ofBaseApp{

 public:
  void setup();
  ofxSOTable t;
  ofxSOOscillator o;
  ofxSndObj sndobj;
};

#endif

testApp.cpp

#include "testApp.h"

void testApp::setup(){
 sndobj.startOut(true, 1);
 t.init(sndobj, 2500l, SINE, 1.f);
 o.init(sndobj, t, 440.f, 10000.f);
 sndobj.setOutput(o, OFXSNDOBJOSCILLATOR, 1);
 sndobj.startProcessing();
}