木曜日, 10月 18, 2007

build sndobj app

ありがとうございます!
Xヶ所村: すでにsndobjをインストールしていて、てっとりばやく自分アプリを作りたい場合。

sconsはmakeみたいなもので、ソースから実行可能ファイルを生成するのに使うコマンド。SConstructファイルがmakefileにあたる。

sconsの解説
sh1.2 pyblosxom : SConsについてちょっと調べてみた。Part.1

makeの解説
Make と Makefile の説明
MAKEの第一歩(入門)

miujunさんがおっしゃる通り、既にSndObjフォルダのsrcフォルダ内にexamplesというフォルダがあり、ソースファイルが置かれている。srcフォルダと同じ階層にはbinフォルダがあって、実行可能なファイルがいくつかできている。試しにsinusというのを実行する。

d242204:~/SndObj/bin hysysk$ ./sinus

とエラーが出る。

./sinus infile.wav outfile.wav timestr pitch thresh intracks outracks

このエラーとソースを読めば、実行ファイルに加えて引数を7つ指定する必要があることがわかる。サウンドファイルを読み込んで、タイムストレッチとかピッチチェンジするのかな。その時に綺麗に補完するアルゴリズムって感じ?

色々試す。

miujunさんのここのソースをビルドしてみる。
Xヶ所村: CygwinでSndObjなど

インクルード部分を

#include <SndObj/AudioDefs.h>

に書き直す(blogに貼る際にhtmlが書き換えられてる?)。あと、30秒は長い気がするので

int dur = 5;

にした。

で、example以下にsin.cppとか名前つけて保存。

次、Sconstructファイルの編集。

493行目の

# realtime IO examples
if rtio:

以下に他の既にあるexampleと同じような形式で書く。その上480行目で定義されてるBuildExampleメソッドに渡す処理を書けばいいのかな。何となくやってることは分かる。

sin = BuildExample('./bin/sin', './obj/sin.o', 'src/examples/sin.cpp')
Depends(sin, deplibs)

Sconstructファイルはpythonスクリプトなので、インデントなどちゃんと合わせておくこと。

terminalで/SndObjに移動して、sconsコマンド実行。こんな感じ。

d246112:~/SndObj hysysk$ scons
scons: Reading SConscript files ...
Building the Sound Object Library
Checking for Realtime IO support...
OS is MacOSX
Checking for C header file jack/jack.h... (cached) no
Host is little endian
swig doesn't exist
Python version is 2.3
Checking for C header file m_pd.h... (cached) no
Checking for C header file ladspa.h... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
g++ -o obj/sin.o -c -O3 -DMACOSX -Iinclude -Iinclude/rfftw -I/system/library/Frameworks/CoreAudio.framework/Headers src/examples/sin.cpp
g++ -o bin/sin -framework coreaudio obj/sin.o -Llib -lsndobj
scons: done building targets.

確かにgccでコンパイルする時のオプションはここからわかりそう。makeもsconsもコンパイルの詳しい仕組みもよくわかってないのでまだうまくいってないけど。要勉強。とりあえずはこれで。

ワークショップ形式で適宜説明受けながらのこういう授業があれば。。。てかIAMASの場合は直接先生のとこに行って聞くのが主体なんだから、もっと積極的になれよ僕、という話なんだけど。

miujunさん本当にありがとうございます!

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。