AIR SDK 3.4 → 3.6 のアップグレードでつまずく:AIR, Flash Builder 4.7

fbicon

AIR SDKを3.6にアップグレードしようとしたが・・・

Flash Builderでアプリを作ろうと思い、とりあえず現状のAIR SDK 3.4から最新のAIR SDK 3.6にあげようとしました。が、つまずきました。結果的に3.5にしたら動いたメモ。

SDKのダウンロード

Download Adobe AIR SDK with ActionScript Compiler 2.0

上記サイトでSDK 3.6をダウンロード。

※結果的にはAIR SDK3.5だったら問題がありませんでした。

SDKのアップグレードの仕方

Flash Builder 4.7からSDKのアップグレードの仕方が変わったようです。英語を読み読みAIR SDK 3.6へアップグレードをしてみる。

問題発生

スクリーンショット 2013-02-02 4.24.19 1

モバイルプロジェクトを作って、AIRでデバッグする事は出来たのですが、iOSのエミュレーターや実機でデバッグしようとすると、このようなエラーが出ました。 Error | Run, debug, deploy | iOS app | Flash Builder 4.5 のサイトのやり方で修正しろと言われますが、Flash Builder 4.5の方法しか書いてないため修正方法がわからなかったです。またStarlingのFlash Builder 4.7 – How to update AIR SDK  でも同様の問題が議論されています。「2回やったらできた」「SDKをアップグレードするときに、フォルダ事上書きするといいよ」等のアドバイスが書いてありますが、私の環境で上手くいきませんでした。

AIR SDK 3.5 はうまくいく

じゃあ3.5はどうだろう?とやってみるとAIR SDK 3.5では上記問題が発生しませんでした。今回の検証は、ここで辞めました。

簡易アタック検出を行う External Object をつくってみた:Max/MSP, Max SDK, DSP

簡易アタック検出オブジェクトをつくってみた

Max SDKで、まずは手短に実装できてライブで役に立ちそうな物を練習がてら作ってみました。「オーディオを読み込んでアタック部分を検出するオブジェクト」です。上記の動画がデモになります。右下のリストに、アタック部分の開始タイミング(ms)が入り、選択すると音の頭から再生が始まっています。

今回のエクスターナルオブジェクトの作成で、Max SDKを使えば、非リアルタイムにバッファをいじって、1サンプル毎の処理をかけるという事も確かめられました。

プログラムの簡単な解説

  1. 音声バッファをフレームに分割
  2. フレーム毎に振幅の最大値を計算
  3. フレーム間の振幅の差分を計算
  4. 差分がある一定の大きさ以上であればアタック

という結構簡単な処理で上記のような結果を得られました。

ただし楽曲などの複雑なオーディオ信号の場合は失敗してしまいます。もっと精度の良い検出をしたければ、各フレームに対してFFTを使って周波数領域にした上で、振幅や位相の変化から検出したりすると精度があがるようです。今後やってみたいです。

参考文献

Max SDK のサンプルプロジェクトから自分のプロジェクトをつくる:Max/MSP, Max SDK, Xcode

プロジェクトを作ってみよう

前回はMax SDK 付属のサンプルプロジェクトをコンパイルし、エクスターナルオブジェクトが作成できる事を確認しました。今回は、サンプルプロジェクトから自分のプロジェクトを作成してみます。

プロジェクトフォルダのコピー

スクリーンショット 2013-01-25 17.01.57

/MaxSDK-6.0.4/example/basics 内のsimplemax等のフォルダをコピペします。そのコピーしたフォルダ名を好きなオブジェクト名に変更してください。(例えば mirrorboy.object ちなみに接頭語としてmirrorboyをつけたのは自分のオブジェクトであることを認識しやすいようにです。 )

プロジェクト名の変更

スクリーンショット 2013-01-25 17.06.02

そのフォルダ内のプロジェクトを開きます。まだ以前のプロジェクト名になっているので、左のリストからプロジェクトのトップを選択後、右上の方にあるIdentity → Project Name の設定欄から、プロジェクト名を mirrorboy.object などの名称に変更します。

参考:Xcode 4でプロジェクトの名称変更

 

オブジェクト名の変更

エクスターナルオブジェクトの名称は、*.c ファイルの class_new の第一引数で設定されているので、ここを”mirrorboy.object”等に変更します。ここまで出来ればコンパイルが通り,名称変更後のエクスターナルオブジェクトが作成されます。*.c ファイル内の変数名や.maxhlepファイルも置換で直しておくとより良いです。

 

Max.app 上でオブジェクトを作成し確認

スクリーンショット 2013-01-25 17.17.27

自分のプロジェクトでコンパイルしたエクスターナルオブジェクトがインスタンス化できる事を確認しました。あとは好き勝手に開発するだけでOKです。

Max SDK のサンプルプロジェクトから External Object を作成:Max/MSP, Max SDK, C

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 の修正

スクリーンショット 2013-01-25 4.18.32

このままだとコンパイルが通らないので、/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を起動

スクリーンショット 2013-01-25 4.23.19

/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の方は気にしなくて良いようです。

ハッピーチャネル出演するよ〜:Max/MSP

upload

コバルト爆弾αΩで出演させて頂きます。TMUGに通っていたので、まさか自分が出演する事になるとは!アキバ系(?)DVJの文脈をブチ込みに行きたいと思います!

ハッピーチャネル @ SuperDelux

日時 2013.01.19 (sat)
開場 18:00 / 開演 19:00
料金 予約1500円 / 学生1000円 要学生証 / 当日1800円

出演者:
ダブラ彦 (DUB-Russell × 谷口暁彦)
コバルト爆弾αΩ
ふんわりちゃん × 田所 淳

DJ:
しんなりちゃん

転換芸:
FunkyBomberYeah

出展:
POWDER BOX
Flip Driven Theater/ 書籍型インターフェース
いのちの食べ方