2011-08-05 7 views
4

PitchShift Audio Unitプラグインをどのようにして独自のウィンドウで正しくホストしますか?AppleのPitch Shift Audio Unitプラグインなどをホストする方法

Appleのシステムで提供されているAudio UnitプラグインをホストするMacアプリを開発しています。新しいOSX 10.7 Lionでは、いくつかのプラグインが更新されたビューを持っています。 PitchShiftはこれらの1つです。

PitchShiftなどのパラメータを変更する新しいノブがいくつかあります。ノブをマウスで回すと、ノブのパラメータ値を示す水平バーがノブの下に表示されます。

このバーは、ノブが離された後、およびウィンドウが閉じられた後でも、画面にとどまります。ノブの1つをクリックして不正な値のバーを作成し、PitchShiftビューが表示されているウィンドウを移動すると、バーは以前のウィンドウの位置にとどまります。この時点でノブをもう一度クリックすると、新しいバーが表示されますが、両方のバーはノブのパラメータ値の情報が変化するとアクティブに更新されます。これは、このプロセスを繰り返すたびに発生し、バーが画面上に残ります。

この問題が発生して数回後、私のアプリケーションは、main.mファイルのNSApplicaionMain()コールで不正なアクセスを終了して終了します。

ロジック9をチェックしましたが、これは発生しません。バーはノブに直接つながれているようで、ノブをマウスに近づけた直後に消えます。

PitchSHiftビューを専用のNSWindowのcontentViewに設定しました。

Logicはこれをどのようにして維持していますか、それともどうすればできますか?

私は、パラメータ値がPitchShiftビューのサブビューを表示するかどうかを確認しようとしましたが、そうではないようです。

ご協力いただければ幸いです。

EDIT:値バーが最初に表示されたとき、私は私のプログラムからのコンソールで次の出力を得る:サークルとラインは

を交差していないので、私はそれがコア・アニメーションのCALayersを使用していることがわかりましたが。問題は、バリューバーレイヤーがPitchShiftViewのレイヤー階層の一部ではないということです。言い換えれば、私はpitchShiftViewを構築する他のすべてのレイヤーを見つけることができますが、値バーのレイヤーは見つけることができません。それは最初から全面的に問題になっているようです。

+1

ここに手がかりはありますか? http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioUnitProgrammingGuide/TheAudioUnitView/TheAudioUnitView.html –

+0

Hey Matt、コメントありがとうございました。私はこのドキュメントを何度も見てきましたが、AUのホスティングの表面を傷つけるような気がします。 – Mark

+0

これらの新しいAUビューがCALayersや何らかのレイヤリングフィルタを使用している可能性はありますか? – Mark

答えて

1

私はそれを最後に理解しました。パラメータ値バーは、オーディオユニットビューを所有するウィンドウの子ウィンドウです。

問題を解決するために、私はNSApplicationのサブクラスでウィンドウのマウスイベントをキャッチし、子ウィンドウ(別名バリューバー)を閉じてスクリーンに留まらないようにします。

これにより、不正なアクセスが終了することはありませんでした。私は今、それがこれらの残っている子ウィンドウに関連するようにしか見えない別個の問題だと思っています。

関連する問題