PowerPC上でオブジェクトのCFMバージョンをインクルードする

MacCFMAdaptor.shlb および MaxAudioCFMAdaptor.shlb ライブラリは以前のバージョンからのエクスターナルオブジェクトをPowerPCプロセッサ上のMax4.6で動作させることを可能にします。私たちはまた、あなたのMach-OオブジェクトにPowerPC用のCFMコードをインクルードするための用意もしました。そのため、MaxはユーザがCFMAdaptorをインストールしている場合でもこれを利用することができます。これにより、必要であれば、サーチパス内の2つの異なったエクスターナルオブジェクト間のコンフリクトを避けながらCFMコードを使用することが可能になっています。

なぜこのようなことを望むのでしょうか?私たちは、ある状況では、CodeWarriorがPowerPCシグナルプロセッシングループにおける最適化に関して、GCCより優れた仕事をすると述べてきました。パフォーマンスの差は最大30%ですが、しばしばそれより少ないか、全く存在しない場合もあります。そのため、CFMコードのインクルードによる問題を考える前に、まずGCCが劣ったPowerPCコードを生成しているかどうかについて見極めておく必要があります。肝心な点は、あなたがCodeWarriorを持っていて、PowerPC上で動作するMax4.6で使用するあなたのオブジェクトのCFMをインクルードしたバージョンを作ろうと思うならば、それが可能であるという点です。

この機能はMax4.6でしか動作しないという点に注意して下さい。あなたはMax4.5で使用するためのPowerPC Mach-Oオブジェクトを書くことができますが、4.6以前のバージョンではMach-Oバンドル内のCFMコードを探し出してロードすることはできません。最後に、この機能はMaxあるいはMSPオブジェクトの最適化のために用意されたもので、Jitterオブジェクトで得ることはできません。Jitterでは、私たちのテストの結果は、CodeWarriorのPowerPC最適化において得られるものが、GCCのそれに比べて小さいことを示しています。

Max 4.6 用にCFM コードリソースをビルドする

最初に、あなたのCode Warrior プロジェクトが共有ライブラリではなく、コードリソースを生成するように設定して下さい。すでにCode Warrior プロジェクトの設定が済んでいるならば、次のようなステップによって、あなたのプロジェクトにコードリソースのターゲットを追加することができます。

  1. プロジェクトウィンドウのTargetsタブをクリックします。ターゲットのリスト(またはターゲットが1つであれば、それが)が表示されます。


  2. プロジェクトメニューからCreate Target... を選択します。


  3. Clone Existing Target ラジオボタンをクリックし、メニューからあなたのターゲット名を選択します。ターゲットを”Resource”のような名前にして、OKをクリックします。


  4. 赤と白のターゲットアイコンをクリックすると、新たに作られたリソースターゲットを黒い矢印指します。


  5. EditメニューからResource setting を選択します。


  6. ターゲット設定パネルを表示させます。リンカがMacintosh PowerPCに設定されているならば(これはCFMのためのセッティングです)、唯一注意すべき点は Output Directory だけです。Output DirectoryがあなたのXcodeプロジェクトのフォルダと同じものになっていることを確認するのがベストです。私たちは、Xcodeプロジェクトファイルと同じフォルダにCode Warrior プロジェクトファイルを置いておくことを推奨します。もしあなたのプロジェクトの設定がしてある状態ならば、Cleatボタンをクリックするだけで、出力ディレクトリをプロジェクトディレクトリに変更できます


  7. PPCターゲット初期設定パネルを表示させます。


  8. Project type メニューから Code Resource を選択します。いくつかの新しいテキスト入力フィールドが現れます。


  9. ファイル名を.rsrcで終わるものに変更します。例えば、Myobject.rsrc.といったような名前です。これはとても重要なことです。


  10. Sym Name および Resource Name フィールドは空白のままにしておきます。


  11. バックスペースキーで、Creator and Type フィールドをクリアします。これはあまり重要ではありません。


  12. ResType を Ocfm(0は文字Oで、ゼロではありません)に設定します。


  13. ResID を 1 に設定します。


  14. Header Type メニューからNoneを選択します。おそらく、あなたのオブジェクトはHeader Type をNoneに設定しないとリンクされないでしょう。
    注:Code Warrior PPC Target 初期設定ペインのFlatten Resources オプションはおそらくデータフォークコードリソースファイルをビルドします。これは素晴らしいしモダンなのですが、私たちが述べている範囲では、CodeWarriorのどのバージョンでも動作しません。このようにして、伝統的なリソースフォークによるリソースファイルをビルドするよう強制されます。Xcodeは何の問題もなくこれらのファイルを読み込んでMach-Oエクスターナルオブジェクトバンドルにデータフォークリソースファイルを生成するので、これは問題ありません。(2つのタイプのリソースファイルについて知らないならば、特に気にする必要はありません。)


  15. Saveボタンをクリックしてプロジェクト設定ウィンドウを閉じます。


  16. 新しいリソースターゲットをビルドします。あなたのプロジェクトフォルダの中に、指定された名前(.rsrcで終わるもの)のファイルが存在するかどうかを確認して下さい。


  17. Xcodeプロジェクトを開きます。


  18. .rsrc ファイルをプロジェクトにドラッグし、Resources フォルダに入れます。


  19. Xcodeプロジェクトをビルドします。バンドルのResourcesフォルダには.rsrc と呼ばれるファイルがなくてはなりません。このリソースファイルはあなたのCFMコードを含んでいます。CFMサポートが使用可能(enabled)になっている場合、MaxはPowerPCマシン上のあなたのエクスターナルを見つけてロードします。