記事一覧

Debugging Audio Unit on Xcode4

I often use std::cout or printf to output logs when debugging my Audio Units, and it was working fine on XCode3.
But after switching to XCode4 I still haven't found the way to get them on the Console.
I searched on the web for a while in vain and change my mind to find other ways to get logs.

The best way so far is to use breakpoint.
You can print any variables by using "@expression@" format, and with "automatically continue after evaluating action" turned on you can prevent the process from inturruption.
That somehow can be a substitution of cout/printf,


Audio Unitのデバッグを行うとき、XCode3 ではよく std::cout や printf を使ってたのだけど、XCode4 にしたらそれがうまくいかない。なんか方法あるだろうと思って少し調べたんですが見つからなかったのであきらめて別の方法を探すことにしました。

で、とりあえず使えてるのがブレークポイントを使うやり方。
@expression@ の形式で好きな変数を書き出せる & "automatically continue after evaluating action" をチェックしておけば実行を止めなくできる、ということでなんとか cout/printf と同じことができそうです。

SysError 0 during open of "AUResources.r"

After installing XCode4 my Audio Unit project is no longer compiled on XCode3...
The error message says 'SysError 0 during open of "AUResources.r"' but the file named AUResources.r is surely included in my project, and it surely exists in the appropriate folder.
I've checked Rez earch path, too, but it points the proper folder.
What's wrong...?

On XCode4 it can be compiled, but I need to make the binary works on Power PCs.


XCode4 を入れたら、XCode3 で Audio Unit のプロジェクトのコンパイルが通らなくなってしまった・・・。
'SysError 0 during open of "AUResources.r"'というエラーが出ているのだけど、AUResources.r はちゃんとプロジェクトに含まれているし、適切なフォルダにちゃんと存在している。
"Rez検索パス" なる項目もチェックしてみたが、ちゃんとしたフォルダを指している様子。
何なんだろう・・・。

ちなみに XCode4 だと通るのだけど、Power PCでも動くようにしないといけないんで XCode3 で通さないといけない・・・

続・ファイル読み込み

結局 Objective-C++ で対応することに決定。
なんか負けた気分なのはなぜだ;
しかし、Objective-C++ 思いのほか使い勝手がいいな・・・。

で、NSBundle の pathForResource:ofType: でファイルパスを取得して NSString で処理しようと思ったらそもそもパスが取得できてないことが発覚。
プラグイン内のリソースは [NSBundle mainBundle] で取得できないのね;
[NSBundle bundleWithIdentifier:@"com.company.pluginName"]
としたら取得できました。

mainBundle だと、ホストアプリケーションのリソースを取ってくることになるのかしら??

あと、XCode上で Foundation フレームワークを追加しないとリンクエラーになるのね。
でも Foundation/Foundation.h の include はわざわざ書かなくて良いようだ。

ファイルの読み込み

iPhoneの方がちょうど一山越えたところなので久々にAudioUnitプラグイン基礎を見直しているのだけど、やはり基礎的なところがまったく分かってない;
外部テキストファイルの読み込みってどうやるんだ!??
Objective-C なら NSString の stringFromContentsOfURL:encoding:error:
でイッパツなので、CFString の対応する関数とかを使えば・・・と思ったのだけど、そんな単純なものではないらしい・・・
fopen / fscanf とか使うの!? それはそれでファイル名のエンコーディングとかどうするんだ・・・
やはり基本的なことがまったく分かってないようだ・・

ページ移動

  • 前のページ
  • 次のページ