iPhoneで動くSuperColliderをビルド

iSuperCollider.jpg

先日、赤松さんのブログにiPhoneで動くiSuperColliderの現状、というエントリーが上がっていて、iPhoneでSuperColliderが動くことを知った。

http://akamatsu.org/aka/?p=3220

これは自分でも試してみなければ、とソースコードからビルドしてみて見事動いたので、ここに手順を。

大前提として、iPhone Developer Programに参加していて、有効なprovisioningファイルを用意できていること、svnやln、cdなどunix系のことを知っていることが必要だろう。ということで、

1. まずはソースコードを入手する

http://supercollider.sourceforge.net/developers/

に書いてあるようにsvnでソースコードを取得する。ターミナルを立ち上げて、

svn co https://supercollider.svn.sourceforge.net/svnroot/supercollider/trunk SuperCollider3

を実行する。すると、ファイルが次々とダウンロードされて、

A SuperCollider3/Packager/background.png
A SuperCollider3/Packager/OPTIONALS_README_SOURCE.txt
A SuperCollider3/Packager/dmg_without_optionals.ds_store
A SuperCollider3/Packager/USAGE
A SuperCollider3/Packager/optional
A SuperCollider3/Packager/pkg-dmg
A SuperCollider3/Packager/OPTIONALS_README_OSX.rtf
A SuperCollider3/Packager/dmg_with_optionals.ds_store
A SuperCollider3/Packager/package
A SuperCollider3/Plugins.xcodeproj
A SuperCollider3/Plugins.xcodeproj/project.pbxproj
U SuperCollider3
Checked out revision 9349.

というような感じで終了する。「SuperCollider3」というフォルダができていると思うので中身をみると、以下のような感じに「iPhone_Language.xcodeproj」と「iPhone_Synth.xcodeproj」、そして「iPhone Resources」というようにiPhone関連のファイル、フォルダがあるのがわかる。

090814-0001.png

2. iPhone_Synthを開いて初期設定

まずは、二つあるiPhone関係のプロジェクトファイルのうち、iPhone_Synthの方からビルドする。ダブルクリックしてXcodeを起動すると、左上の「概要」の部分が「Simlator - 2.2 | Degbu ...」となっていると思うので、これを変更する。

・アクティブSDKを「iPhone Device 3.0」
・アクティブな構成を「Release」
・アクティブターゲットを「libscsynth」

というように変更する。

xcode1.png

さらに、右上の方にある「情報」アイコンをクリックし、「ビルド」タブを開いて以下の項目を確認する。

・"Code Signing"の中の「コード署名ID」で正しいプロビジョニングファイルが選択されているか
・"Deplyment"の中の「iPhone OS Deployment Target」が「iPhone OS 3.0」になっているか
・"アーキテクチャ"の中の「ベースSDK」が「iPhone Device 3.0」になっているか

090814-0003.png

これらの確認、変更ができたらウィンドウを閉じる。

3. libscsynthをビルド

先ほど「概要」のアクティブターゲットを「libscsynth」に設定してあるが、それ以外に「iscsynth」というターゲットも用意されている。まずは「libscsynth」の方からビルドする。アクティブターゲットとして選択したあとに、「ビルド」をクリックする。

いくつかwarningが出るが、右下に「問題なく完了しました」とでればlibscsynthのビルドは完了。

090814-0004.png

4. iscsynthをビルド

続いて、おなじiPhone_Synthプロジェクトの中の「iscsynth」をビルドする。まずは「概要」のアクティブターゲットを「iscsynth」に変更する。

xcode2.png

アクティブターゲットを変更したら、中央のファイル一覧の中から「libsndfile.a」という項目を探す。おそらく一番右端のチェックボックスにチェックがついていると思うので、これを外す。そして、その下の「libsndfile_iphone.a」という項目にチェックをつける。

090814-0005.png

変更したら、「ビルド」をクリックする。右下に「問題なく完了しました」と表示されればOK。

5. iPhone_Languageをビルド

いよいよ本体の方のビルド。先ほどのiPhone_Synthプロジェクトを閉じて、iPhone_Languageの方を開く。

090814-0006.png

こちらも「概要」の部分に変更を加える。

・アクティブSDKを「iPhone Device 3.0」
・アクティブな構成を「Release」

というように変更する。今回は、アクティブターゲットは1つしかないので変更の必要はない。

xcode3.png

そして、右上の方にある「情報」アイコンをクリックし、「ビルド」タブを開いて以下の項目を先ほどと同様に確認する。

・"Code Signing"の中の「コード署名ID」で正しいプロビジョニングファイルが選択されているか
・"Deplyment"の中の「iPhone OS Deployment Target」が「iPhone OS 3.0」になっているか
・"アーキテクチャ"の中の「ベースSDK」が「iPhone Device 3.0」になっているか

これらの確認、変更ができたらウィンドウを閉じる。

そして、最後に「ビルド」ボタンをクリックする。いくつかwarningがでるが、右下に「問題なく完了しました」と出ればビルドが完了する。

090814-0007.png

6. ファイルを実機に転送

自分のiPhone 3GSは現在3.0.1が動いている。本来であれば最後に本体をビルドするときは「ビルドして実行」を選べば勝手にアプリが実機に転送されて動き出す、ということができるのだが、3.0.1が動いている場合はちょっと工夫しないといけない。

解決方法の1つとしては、「iPhone 構成ユーティリティ」というアップルが配布しているプログラムを利用する方法。プログラム自体は、こちらからダウンロードできる。

http://support.apple.com/downloads/iPhone_Configuration_Utility_2_0_for_Mac_OS_X?viewlocale=ja_JP

これを使って、ビルドして出来上がったファイルを実機に転送するわけだ。ビルドした実行ファイルは、ソースコードが入っている「SuperCollider3」フォルダの中の「build_iphone」というフォルダの中にできている。

090814-0008.png

この中にある「SuperCollider」というアイコンをiPhone構成ユーティリティーにdrag&dropして実機へのインストールを進めることができる。

もう1つの解決策としては、

/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

の中に3.0.1用のシンボリックリンクを作る、というもの。上記のフォルダをみると、「3.0 (7A341)」というフォルダは存在するが、3.0.1のためのものが見当たらない。そこで、ターミナルで、

cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport/
ln -s "3.0 (7A341)" 3.0.1

と2つコマンドを実行してあげることで、3.0.1のためのサポートを用意してしまう。このように変更したあとに実機をつないで、Xcodeを立ち上げて、iPhone_Languageを開き、「ビルドして実行」をクリックすると、実機の方にアプリが転送されてアプリが立ち上がるはず。

090814-0009.png

最初にこの画面が表示され、

IMG_0202.PNG

続いてこの画面が表示されればOK。

IMG_0203.PNG


7. 音が出るか試す

このままでは何も確認できないので、実機の下の方に表示されているメニューバーから「Browser」を選び、「patches」という項目を選ぶ。

IMG_0204.PNG

その一番最初に「accelerometer.rtf」という項目があるので、これをtapする。

IMG_0200.PNG

すると、「Editor」が開いてSuperColliderのコードが表示される。

IMG_0205.PNG

下の方にある「Execute」をtapし、下にあるメニューバーの「Post」を選択。「Speakers」というボタンがあるので、これをONにして、本体を傾けたり揺らしたるすると、動きにあわせて音がなるはず。

IMG_0201.PNG

停止するときは、「Speakers」をOFFにして、その隣の「X」ボタンをtapすれば実行が止まる。

この事例でわかるように、最初からiPhoneの加速度センサのためのクラスが用意されているあたりがかなりいいですな:)。ま、実際のところ僕自身はSuperColliderではまったくコード書いたことないのだけど...。

というわけで、iPhone Standard Developer Programに入っていて実機を持っていればこちらはすぐに試すことができる。Developer Programに入ってない人は、近くにいる人の頼んでビルドしてもらって、provisioningファイルとともに実行ファイルを受け取ってインストールしてみるしかないのが現状か。

いずれにしても、いままでiPhone側でOSCを送信してコントローラとして使うことは多かったけど、SuperCollider自体がiPhoneで動いてしまうのはかなり楽しい。先ほども書いたように、僕自身はSuperCollider使いではないので、書ける方々は是非ともiPhoneをターゲットとしたパッチを書いて公開してほしい。

twitter

ウェブページ

Powered by Movable Type 4.261
Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。