Max/MSPを使ったアプリケーションを実装する際に、音に関して非リアルタイム && 1sample毎に信号処理したい(例えば、読み込んだ音声波形を再生する前にグリッチしたり、音のアタック部分だけを分析したりといった事。)欲求が高まってきました。期待をいだいて GEN や Max in JavaScript に手をだしたんですが、それらでは不可能だったので遂にMax SDKに手を出し始めましたよ!
これからMax SDKを使ったエクスターナルオブジェクト作成について書いてみたいと思います。ちなみにMac OS 10.8 / Xcode 4 の環境でやります。またJavaじゃなくてC言語なのは、少し前にArduinoをやってC言語を勉強したからです。
準備
SDKのダウンロード先 → Max SDK
ダウンロードしたフォルダ MaxSDK-6.0.4を適当な場所に置きます。自分は /Document/Max 以下に置きました。Maxのサーチパス下に置くとコンパイルしたオブジェクトをMaxが認識してくれるので都合がいいです。
Xcodeプロジェクトを開く
/MaxSDK-6.0.4/examples/basics/ 以下にサンプルプロジェクト(*.xcodeproj)がいくつか入っているので、例えばsimplemax.xcodeproj 開いてみると、Xcodeが立ち上がります。
.xcconfig の修正
このままだとコンパイルが通らないので、/MaxSDK-6.0.4/maxmspsdk.xcconfig の33,34行目を
[javascript]
SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
MACOSX_DEPLOYMENT_TARGET = 10.8
[/javascript]
へと変更します。Mountain Lionには10.6のSDKが入ってないためです。
コンパイル
左上の三角ボタンを押して、コンパイルが完了です。/MaxSDK-6.0.4/sdk-build 以下に simplemax.mxo が作成されている事が確認できます。
Max6を起動
/MaxSDK-6.0.4/sdk-buildフォルダがMaxのサーチパス内に入っていれば、Max6を起動し、simplemaxオブジェクトをインスタンス化する事が出来ます。すでにMaxが起動していた場合は、一旦Max.appを落としてから起動しなおしてください。せっかく作ったこのsimplemaxオブジェクト、実は何も入力を受け付けないオブジェクトなので、何もできないです。
/example 以下には、沢山のサンプルプロジェクトがあるので色々試して見てください。ちなみに全てのサンプルプロジェクトにヘルプパッチ(*.maxhelp)が付いているので、パッチの説明・使用例が見られます。
まとめ
今回は、Max SDK をダウンロードして、Xcodeにてサンプルプロジェクトのコンパイルを行ない、External Objectの作成を行ないました。
補足
プロジェクトフォルダ内になる *.def と *.vcproj は、Win用の開発環境であるVisual Studio 用のファイルのようですので、Macの方は気にしなくて良いようです。