ノン・リアルタイムのディスク処理

今日の私クエストは、ノン・リアルタイムのディスク処理の高速化でした。大量のオーディオ・ファイルに対して特殊な処理をする必要があって、Peakとかのマクロじゃできそうもないし、MSPのリタルタイム処理ではオーディオ・ファイルの長さ(ン十時間)だけかかっちゃうし、何か良い方法はないかと探っていたわけです。

以前のOpenGLレコーディングの時に、MSPのノン・リアルタイムでのディスク処理が無茶苦茶遅かったので、ダメだろうな〜と思いつつ、実験してみました。以下のテスト用パッチは、jongly.aifをディスク再生し、振幅を0.5倍して、test.aifに書き出すだけの処理です。このパッチを実行してみると、jongly.aifの時間長が2.8秒なのに対して、処理時間は1分22秒、ナント30倍近くも時間がかかってしまいます。全然、使えません。

nrt-disk-test.gif

それで、buffer~を使う方法などを考えていた時に、フトが気が付きました。この時はSignal Vector Sizeが8だったのですが、これを128にすると処理時間が6秒に、512にすれば1秒で処理が終わっちゃいます。これでリアルタイム処理より速く処理ができます。こうでなくっちゃね!(って常識?)

【解決策】Signal Vector Sizeを最大にする。

リアルタイム処理では、レイテンシーを少なくするためにI/O Vector SizeもSignal Vector Sizeも小さめの値に設定するのが一般的ですよね。だから、これを大きくするのが解決策だとは、なかなか思い当たらないでいました。

ちなみに、Scheduler in Audio Interruptをオフにしておかないと、ノン・リアルタイム処理で実際にかかった時間を正しく計測できませんよ。逆に言えば、ノン・リアルタイム処理で時間進行に従った処理(metroとか)を含んでいる場合は、Scheduler in Audio Interruptをオンにしておく必要があるってことです。

int.libで楽々パラメータ制御

パッチを作っていると、ナンバー・ボックスやスライダーなどのパラメータ制御オブジェクトが山ほどできちゃいますよね。これらをイチイチ設定するのが面倒なので、プリセットに覚えさせるのはジョーシキ。でも、プリセットはすべてのパラメータを瞬時に切り替えちゃうから、それじゃ困る時もあります。ゆっくり値を変化させたいとか、コレとコレだけ切り替えたいとか、マウスでグリグリしたいとか…

そんな時に便利なのが、Oli Larkin氏のint.lib(Graphical Preset Interpolator)。下手に説明を書くより、同ページのデモ・ムービー(Video Examples)を見てもらえれば一目瞭然です。当然のことながら、音楽でも映像でも、どんな用途にも使えます。Maxに標準装備して欲しいくらいマスト・ハブですね。

intlib_small.png

なぜか私の環境では、VSTの制御ができない(リストにパラメータが表示されない)んですが、他の方はどうでしょうか?

【追記】ちょっと調べてみたところ、int.libフォルダにあるint.vst.mxtにおいて、bpatcher(読み込んでいるのはint.vst.bp.mxt)とvst~とが接続されていないことに気が付きました。これって変だよな〜と思って繋いでみたところ、ちゃんと動作するようになりました。もっとも、これが正しいのかどうか確信がないので、作者に問い合わせメールを出しています。

【追記】作者から返事がありました。やはり彼のミスだそうで、できるだけ早く修正版を作るとのことです。問題があるのはv0.52なので、より新しいバージョンがリリースされるのを待ちましょう。

【追記】v0.53がリリースされました。VST関連のバグが修正されています。

quartzplayerが開発中

本家Cycling ’74のdevフォーラムで知りましたが、Remy Muller氏がQuartz ComposerのファイルをMaxで直接再生するオブジェクトquartzplayerを開発中だそうです。きっと、MaxのメッセージでQCコンポジションを操作できるようになるでしょうから、これは期待大ですね。

もっとも、まだまだ初期の段階だそうで、オブジェクトもダウンロードできないし、ヘルプ・パッチもありません。でも、Sourceforgeに登録されているので、自分でsvnしてビルドすれば、どのようなものか確かめることができます。

quartzplayer.jpg

と言う訳で、私もちょこっと試してみました。QCコンポジションの再生はバッチリっぽいですが、ウィンドウ周りがイマイチのようです。ソースを読む限りでは、MaxメッセージをQCコンポジションに送るようになっているみたいですけど(quartzplayer_genericのことね)、何故かうまくいかないですね。

ともあれ、Quartz Composerは描画が速いし、Jitterでは面倒なことが簡単にできる(その逆も真なり)ので、早く完成して欲しいですよね。ご本人は、自分はあまり時間が取れないので、興味のある人は開発に参加してね!っとおっしゃってます。腕に覚えのある人は是非参加してください〜と私は他人様頼みです。

GPS-CS1KのログをMaxで解析

今日の学校クエストは、GPS-CS1KのログをMaxで解析したい、ってことでした。GPS-CS1KはSONY製の小型で安価なGPSレシーバで、これを持って歩き回って(あるいは自転車や自動車で走り回って)、後でその行動を何らかのアート表現に結びつけるってことらしいです。

gps-cs1k.jpg

それで、なんか面倒っぽいなっと思ってたら、実際には意外と簡単でした。まず、GPS-CS1Kを持って適当に歩き回った後、GPS-CS1KをMacにUSBケーブルで繋ぎます。これでデスクトップにディスクとしてマウントされるので、そのディスクの中からログ・ファイル(GPSフォルダにある.logファイル)をMacのハード・ディスクにコピーします。このログ・ファイルは単純なテキスト・ファイルなので、適当なテキスト・エディタで開くことができますね。内容の一部はこんな感じ。

$GPGGA,081906,3523.1434,N,13637.3032,E,1,04,07.2,00079.7,M,035.0,M,,*4D
$GPGSA,A,3,11,16,25,27,,,,,,,,,14.0,07.2,12.0*04
$GPGSV,2,1,05,25,44,245,51,27,42,276,50,16,13,123,47,32,,,43*4A
$GPGSV,2,2,05,11,50,219,52,,,,,,,,,,,,*44
$GPRMC,081906,A,3523.1434,N,13637.3032,E,000.0,000.0,210907,,,A*7C
$GPVTG,000.0,T,,M,000.0,N,000.0,K,A*0D

このデータはNMEA-0183っていうフォーマットだそうです。本家はココらしいですが、他所様の英語解説日本語解説を拾い読み。ちゃんと仕様を読んでいないので間違ってるかもだけど、GPS-CS1Kのデータは、若干逸脱しているような気もします。

次に、Maxでログ・ファイルを読み込みますが、その前にログ・ファイルの拡張子を.txtに変えておきます。これは、MaxのTextオブジェクトが、明らかにテキストであるファイルしか開いてくれないからです。これはちょっと融通が利かない感じで、イマイチですね。

Textオブジェクトに読み込んだログは、lineメッセージで1行ずつ出力して解析します。ただし、各行はカンマ区切りなので、tosymbolとfromsymbolというオマジナイをかけてリストに変換します。なぜそうなるのか?と聞かれても、よく分からないんですが(笑)、知っている人教えてください。

後は、NMEA-0183フォーマットに従って、routeでデータを種類ごとに振り分けて、unpackで要素ごとに取り出すだけです。ここから先は目的次第ですね。元データがテキスト(ASCII表現)だから、数値処理する場合は、時刻とか単位の取り扱いに少々工夫が必要ね。基本パッチはコレです。

gps-01-logpat.gif

GPS-CS1Kは記録オンリーで、リアルタイム情報を外部に送れない(よね?)ので、私的にはナンジャラホイです。しかも、測位は15秒間隔で精度も10メートル程度らしいので、かなり大まかな情報しか得られません。ま、旅のお供にデジカメと一緒に使ってね的な位置付けの製品なので、文句を言う筋合いじゃないですけどね。

では、何でこんなことやってるかと言うと、もうすぐIAMASではモチーフ・ワークという1年生全員が参加する1週間のワークショップがあって、今回はGPSがモチーフだから、なんですね。全員と言っても50人しかいないんですが、普段はそんな大人数を相手にしないから、準備が結構大変(軟弱)。ただ、久々にMaxネタができたのでウレシイ(笑)。

本当は、のA-GPS付き3G iPhoneが登場して欲しいところですね。そうそう、iPhone勝手アプリも登場したNavizonってのもあるので、必ずしも人工衛星に頼らなくていいかもですね。と、まぁ、何にしてもiPhoneに流れちゃうのは、ビョーキっぽいな〜。

10/14はIAMAS入試

もうすぐ、私が担当するDSPコースを含むIAMASの入学試験が行なわれます。どこか学校で学びたいと思っている人で、このサイトをチェックしている人なら、十分に潜在資格があると思いますよ。今回はアカデミーのAO入試(作品と面接が中心)と推薦入試(県内高卒者のみ)です。

詳しくは、IAMASのWebサイトの入学案内を見てください。なんだけど、あまり詳しいことは書いてないので(苦笑)、募集要項(願書も入ってます)を請求してもらうのが良いと思います。ちなみに、12月には一般入試(筆記試験が中心)があるので、もう一度機会がありますけどね。

DSPコースってどんなとこ?って人は、DSPコース・サイトを見てください。なんとなく雰囲気が伝わるかな。これまでもそうだったんですが、面白い人、変な人にトライしていただければウレシイでございます。

iamas-campus.jpg

国際情報科学芸術アカデミー(IAMAS)AO入試/推薦入試
出願期間  2007年10月1日(月)〜10月5日(金)
選抜試験日 2007年10月14日(日)

iPhoneで初ライブ

The Breadboard Bandのソウル公演は無事に終わりました。演奏はいつにも増して強力かつバラティ豊かだったんですが(と自画自賛)、特筆すべきは、US特派員から受け取ったiPhoneを使って演奏したことです。おそらく世界初!ってことはないでしょうけど、まだあまり例がないんじゃないかな。

iphone-bbb-saber.jpg

The Breadboard Bandは「コンピュータはもうオシマイ」ってのがコンセプトのひとつなので、aka.iphone / Experiment 1は使えない。そんなわけで作ったのが勝手アプリのBBB-Saber。先の記事のBBBアイコンはコレです。

と言ってもオリジナル・アプリではなくって、iSaberという勝手アプリに含まれるサウンドを入れ替えて、いくつかのリソースを変更しただけ。iSaberはiPhoneの3軸加速度センサーを利用していて、iPhoneを振り回すとスター・ウォーズのライト・セイバーみたいにブーンって音が鳴ります。そこで今回は、グリッチっぽいノイズ音を仕込んで、飛び道具として使った訳です。

オリジナル・アプリじゃないから、ちょっと横着というか卑怯って気もしますね(笑)。でも、よく考えてみれば、サウンドはオリジナルだけど、人様のアプリ(Pro Toolsとか)を使って音楽を作っている人は山ほどいる訳で、ま、いっか!と思った次第です。

と言う訳で、誰か止めなよ(笑)ってくらいiPhone記事が続いていますが、それもこれもiPhoneをMaxまたは音楽・映像などで使うためなのです。iPhoneを持ってないから(それは私も同様)と言わずに、しばらく(?)お付き合いください。

【追記】そうそう、さすが韓国なので、PRADAフォンを持っているひともチラホラ。ちょっと触らせてもらいましたけど、単なるケータイでした。GUIは馬鹿Flashらしいので、まぁ、こんなものでしょう〜って感じでダサダサなんです。一回り小さいボディとモノクロ明快系のグラフィックスはグッドなのですけど、あちこちで破綻してたり、意味不明だったりします。これで10万円だから、なんともブランド様々です。

anySIM.appでSIMフリーiPhone

盗作疑惑のUnlock.appではなくて、本物(ってのも変ですが)のSIMロック解除ツール、anySIM.appがリリースされました。CUIツールのiUnlock改めiUnlock_ReloadedをベースにしたGUIバージョンで、iPhoneの勝手アプリとして動作します。もちろん、フリー(と言うかオープン・ソース)です。

盗作野郎に負けられないと思ったのか、稚拙なアイコンを持ち、進行把握が困難であったUnlock.appに対して、奇麗で分かり易いGUIになっています。次の写真、4段目2個目がanySIM.appのアイコン(4個目にはナゾのBBBアイコン…)。

iphone-anysim.jpg

手順は以下の通り。もちろん、自己責任でどうぞ。

1. The iPhone Dev WikiからanySIM.appをダウンロードする。
2. iFuntasticなどを使ってanySIM.appをiPhoneにインストールする。
3. SettingsのGeneralのAuto-LockをNeverに設定する。
4. anySIM.appを起動する。
5. slide to unlockのノブをスライドする。
6. 注意書きを読んで、OK. Unlock My Phoneボタンを押す。

以上の手順で処理が開始されるので、後は気長に(20分くらい?)待てばいいみたいです。インストールに関しては、すでにPXL版がある他、Installer.app版も近くリリースされる見込み。

ちなみに、The iPhone Dev Wikiは直リンク禁止だったのですが、いつの間にかその記述が消えていました(だけど、無駄な投稿はしないでね、との注意書きあり)。Web検索でThe iPhone Dev Wikiが探せなかった人はいないと思いますけど、これからは問題なくリンクが貼ることができるようです。

iPhoneを巡る銀河の魚たち

少し前になりますが、GEARlogの記事によれば、Appleのマーケティング担当副社長のGreg Joswiakが、AppleはiPhoneの勝手アプリ開発に敵対しない、Appleは中立的な立場を取る、と語ったそうです。後で、ソフトウェア・アップデートによって勝手アプリはリセットされるだろうとの見解が出たそうですが、それはこれまでにもあったことなので、ちょっと手間がかかる以上の深刻な事態にならなければ良しとしましょう。

Apple TVのハックに対してもAppleはご勝手にと宣ったそうだし、iPodのLinux作戦に圧力がかかったこともないと思う。つまり、Appleはコンピュータではないデバイスへのハックに対して、おおよそ同じような態度を取ってきていることになりますね。

それで、このことから思ったのは、AppleはMac microたるiPhoneに対して、これまでとは明らかに異なる立場、しかも、とってもオイシイ立場を得ている、ってこと。なぜって、これまでのコンピュータや基本ソフトウェアはサード・パーティの協力なくしては成立しなかったからね。Maxもそうだし、ゲーム機もそう。サード・パーティに魅力的なアプリやゲームを開発してもらうことが死活線になっていた。これは明々白々の短ざる歴史。

だけど、本質的にはサード・パーティ抜きでAppleはiPodを成功させたし、iPhoneも同様の展開になるのかも。Leopardで公式SDKが提供されるとの噂もあるけどね。ともあれ、必要なのはコンテンツ・ホルダー(音楽レーベルとか)とかインフラ(通信キャリアとか)であって、開発者ではないってこと。余談ながら、自社製ゲームばかりがヒットする任天堂もちょっと似ているかも。

iphone-dev-wiki-2.jpg

しかし、勝手アプリ開発者を困らせるようなことはしないし、助けるようなこともしない。ただ、それとは知らせず、扉の錠を緩めにしておくだけ。これって、とってもウマイ戦略だと思いませんか? 勝手に騒いでもらって(広告効果)、勝手に盛り上げてもらって(価値増大)、手間はかからずに(支援不要)、いざって時には知らん顔できる(責任回避)わけです。

もちろん、このような戦略を成功させるには、製品に圧倒的な魅力が必要だし、絶妙のバランス感覚が必要になるけど、少なくとも今のところは、Appleはうまくやっているように見えるね。そんなことは臆面にも出さずにね。誰かがVoIPアプリを作るのを心待ちにしてるくらいかもしれない。

ともあれ、SIMロック解除に対してAppleがどう出るか?今後の動向に要注意ね。音楽レーベルに対しては、FairPlayが破られた場合、直ちに対応措置を取る義務があるみたいだけど、AT&Tとの間でも同様の契約があるんでしょうかね?

Unlock.appでSIMフリーiPhone

GUI Software Being released shortly!って言ってましたけど、本当にスグに出ました。Iphone Software Unlock GUI!をご覧ください。なぜかこのサイトでは大文字小文字を正しく表記するのを避けてるみたいですけどね。

ともあれ、iPhoneのSIMロックを解除するGUIアプリ、その名もUnlock.appです。しかも、コンピュータではなく、iPhone上で動作する勝手アプリです。手順は以下の通り。2と3はiFuntasticあたりを使えば一発です。

1. Unlock.appをダウンロードする。
2. iPhoneを脱獄(Jailbreak)させる。
3. iPhoneのApplicationsフォルダにUnlock.appを転送する。
4. iPhoneでUnlock.appを起動する。
5. Startボタンを押す。

これで必要な作業は終わり。あとは勝手にやってくれます。Installer.app経由でインストールできるようになれば、さらに手間入らずになりますね。いずれにしても、これまた自己責任でどうぞ。

iphone-unlock.jpg

写真はUS特派員のiPhoneですけど、4段目の2個目にUnlockアプリ(開いた錠前アイコン)が表示されていますね。それにしても勝手アプリばかりじゃん!ってツッ込みはナシにしておきましょう。

【追記】HaRRo Incが作成、公開したUnlock.appは盗作だというが出てますね。人が書いたコードで一儲けしようとしたとか。そのせいか、Iphone Software Unlock GUI!には「私に寄付を送らず、良いチャリティーに参加してね」って書かれています。当初はそんな記述はなかったと思いますけどね。

iPhoneの開発キットを簡単インストール

iPhoneの勝手アプリ開発キットとして、Toolchainと呼ばれる一連のツールが公開されていました。でも、この開発キットをインストールするのがとっても大変だったのです。そこで、コンパイルに何度も失敗した人(私だ〜笑)のためにワンタッチ(でもないけど)インストーラが作られ、簡単にセットアップできるようになりました。拍手〜!

iphone-dvekit-installer.jpg

以下、簡単になった開発キットのインストール手順です。

1. iPhone software restore file(直リンク、91.2MB)をダウンロードする。
2. 694-5262-39.dmgの暗号を解除し、マウントする。
3. /usr/local/arm-apple-darwin/heavenlyフォルダを作成する。
4. マウントされたディスクの中身をheavenlyフォルダにコピーする。
5. iPhoneToolchainv05.dmg(51.5MB)をダウンロードし、マウントする。
6. マウントされたディスクにあるiPhoneToolchainを起動し、インストールを行なう。
7. マウントされたディスクにあるOoo Shiny!!を起動する。

これでも面倒と思われるかもしれませんが、これまでは多くのファイルをダウンロードして、環境変数を設定して、コンパイルして…と無茶苦茶過酷だったので、かなり天国気分です。

あとですね、これまでに公開されている勝手アプリのMakefileとは互換性がない場合があるので、そのような場合はMakefileのヘッダ部分を以下のように書き換えると良いそうです。

CC=/usr/local/arm-apple-darwin/bin/gcc
CXX=/usr/local/arm-apple-darwin/bin/g++
CFLAGS=-fsigned-char
LDFLAGS=-Wl,-syslibroot,/usr/local/arm-apple-darwin/heavenly -lobjc -ObjC -framework CoreFoundation -framework Foundation -framework UIKit -framework LayerKit -framework CoreGraphics -framework GraphicsServices -framework Celestial -framework MusicLibrary
LD=$(CC)