[iPhone app] AVAudioPlayer で音源多重再生
あけましておめでとうございます。今年もどうぞよろしくお願いします。
みんなが、聞ける音楽、使えるアプリ、楽しめる空間 を創る一年にしたいと思います。
で、相変わらずiPhoneアプリを作成しています。
iPhone OS 2.2からAVFoundation.frameworkが使用可能になり、mp3などの音楽コンテンツの再生が簡単に出来るようになったみたいです。
で、多重音楽再生のために使用したのですが、いろいろトラブったのでメモしておきます。
最初、リファレンスを見ながら、
#import<AVFoundation/AVFoundation.h>
して
NSString *path = [[NSBundle mainBundle] pathForResource:@”sound” ofType:@”mp3″];
NSURL *url = [NSURL fileURLWithPath:path]; AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
;
としたがビルド失敗。
“.objc_class_name_AVAudioPlayer”, referenced from: literal-pointer@__OBJC@__cls_refs@AVAudioPlayer in AVAudioTest2AppDelegate.o
ld: symbol(s) not found collect2: ld returned 1 exit status
このエラーをコピペしてググったら、原因がわかった。
–
XcodeのFrameworkにAVFoundation.frameworkを追加していなかったため。
しかし、追加しようにも、System/Library/Frameworks下に見当たらない。SpotLightで”AVFoundation.framework”を探したら、iPhoneシミュレータのフォルダにあったため、それをコピペ。
しかしまだ出来ない。下のエラーが出る。
Error loading
/Library/QuickTime/LiveType.component/Contents/MacOS/LiveType:
dlopen(/Library/QuickTime/LiveType.component/Contents/MacOS/LiveType,
262): Symbol not found:
またググったら、
Numata Designed Factoryさんのページに答えが。
http://numata.designed.jp/ja/2008/12/iphone-1.html
どうやら開発環境の不具合(仕様?)っぽい。
で、記載されている通り、/Library/QuickTimeから
- LiveType.component
を削除したら再生成功。エラー出力でググるのは強力だと、実感した。
で多重再生しようと
AVAudioPlayerのインスタンスを2つつくって両方再生させようとしたが、1曲目再生中に2曲目を再生させると、そこで1曲目の再生がストップしてしまい、交互にしか再生出来ない。。リファレンスには、
Using an audio player you can:
* Play sounds of any duration
* Play sounds from files or memory buffers
* Loop sounds
* Play multiple sounds simultaneously
* Control relative playback level for each sound you are playing
* Seek to a particular point in a sound file, which supports such application features as fast forward and rewind
* Obtain data that you can use for playback level metering
ってちゃんと書いてあるのにできない。
で調べたら、どうやら多重再生したい場合、フォーマットは .cafファイルを使わなければいけないらしい。
cafファイルはmp3ファイルから、ターミナル上で以下のコマンドにより作成出来る。
/usr/bin/afconvert -f caff -d ima4 sound.mp3 sound.caf
作成したcafファイルを使用したところ、ちゃんと多重再生できました。
コバルト爆弾αΩ
男女12人のメンバーから成るDJ/VJユニット。INAGE(インエイジ)所属。
ドイツのテクノアーティストMijk van DijkによるTraktor DJコンテスト(インターネットラジオ「Toby & DaiのEnter The Nation」主催、2001年)で優勝した経験を持つDigital DJのαがΩに声をかけ、2006年(皇紀2666年)8月15日(敗戦記念日)、靖国神社にて英霊達が見守る中、結成。
テクノ、ハウス、ディスコ、ラップのミックスを軸に、ポップス、カントリー、アニメソング、クラシックといった踊れなさそうな楽曲をαΩフィルタによってジャンルレスな汗だくクラブミュージックにマッシュアップし、多種多様な人々を同じフロアで同時に笑顔にする。
DJ/VJ以外にも多様なバックグラウンドを持つメンバーにより、ファニーなダンスミュージックの制作、ソフトウェア開発、グラフィック・服飾等のデザインをコバルト爆弾αΩというチームとして包括的に行い、異文化交流やクラブミュージックの発展に貢献することを目指す。
web:http://cobalt-bomb.kicks-ass.net/
myspace:http://www.myspace.com/cobaltbombalphaomega
謹賀新年
旧年中はひとかたならぬご愛顧にあずかり、誠にありがとうございました。
本年も一層の妄想を目指し、一同誠心誠意創造想像に努める覚悟でございます。
なにとぞ本年も倍旧のご支援のほどお願い申し上げます。
はじめての iPhone/iPod Touch アプリ作成
iPhone用アプリがapp storeから45日で1億本ダウンロードされてるって話や、アプリ数が1万本を超えているっていう話を聞いて、アプリが作りたくなりました。不景気知らずです。
作ったアプリはapple のapp storeで公開(販売)されて、売り上げの70%はもらえます。なにもマーケティングしなくてもiPhoneユーザに対して全世界で売る事ができます。これもかなりモチベーションです。
で、水曜くらいから、ほぼ家に籠って、iPhoneのアプリケーションを作っています。
音楽作曲系アプリが作りたかったのですが、まずは慣れないと、ってことで簡単なアプリを設計&実装し始めました。(写真参照)まだ出来ていないですが、ギタリストがギターのコードを知るためのアプリです。すでに別の人がつくってるけど、使いやすいUIにしたら勝ち目はあるかも(売れるかも)、と思ってます。
以下、ソフトウェア技術的内容です。これから同じようにiPhoneアプリを作りたいと考えてる日本人に、自分の体験を記録しておきます。
はじめてのiPhoneアプリ開発で、macのアプリも作った事が無いので、とっかかりは結構大変でした。今もですが。
はじめて使用した技術と感想、習得方法について列挙します。
ファーストステップ:
とっかかりとして「目指せ!iPhoneアプリ開発エキスパート」
は役に立った。とにかくこれを見ながら一つアプリを作ると、CocoaやXcode, Objective-Cについていろいろ見えてくる。
あと、iPhone Dev Center にはサンプルアプリもあるため、所望機能の実装方法について非常に参考になる。
[その他サイト]
iPhoneアプリケーション開発入門
もとまかのiPhone・iPod touch戯れ日記
Objective-C:
個人的な前提として、先週まで、appleアプリの開発言語と言えばObjective-C, ってことは知ってたのですが、それ以外は知らなかったレベルです。
最初Objective-C 2.0(萩原剛志)を読みました。かなり詳しく、マルチスレッドやメッセージ送信についても書かれているようです。が、手っ取り早くアプリを開発したい自分としては、導入にふさわしくないと思いました。アプリを2つくらい作ってから改めて読みたいです。
基本的な情報のみ厳選して知りたい、と探していたら、@ITの記事で、「Cocoaの素、Objective-Cを知ろう」ってのがありました。これは使えそうです。
あと、ざっくりと全体像を把握したいならwikipediaのObjective-Cもよいです。
インターフェース定義、クラス、メソッド、、ほかのオブジェクト指向言語のC++やJavaと全然違うので、慣れるまで気持ち悪いですが、基本的にオブジェクト指向という点では同じなので、設計実装方法が大きくかわることは無いと思います。
(たとえばobjインスタンスのmsgメソッドを使うときは [obj msg]; とかく。)
Cocoa:
ドキュメント(appleのサイト)はそれなりに充実しています。ただし、現状だと英語版しかないようです。
個人的印象ですが、MicrosoftのMSDNドキュメントに比べると少し見づらい部分があります。できればメソッドなどの説明部分にサンプルコードを記述してもらいたいです。
サンプルコードはGoogleで探してもそんなに出てこない。。C++とかならすぐでてくるのに。。
Xcode:
自分はVisualStudioユーザで、ほとんどそれしか使ってこなかったのですが、とくに大きな機能の隔たりも感じず、すぐに慣れました。UIはさすがアップルという感じです。コーディングが楽しくなりそうです。
デバッグ、ステップ実行も快適です。いまのところ落ちていないです。
が、コードの自動補完機能はちょっとおバカです。型とかを確認して補完してくれるわけではないみたいです。ここらへんはVisualStudioのintellisenseのほうがまだ賢い。
まだ僕も始めたばかりなので、間違っている箇所、不足箇所があるかもしれないです。ご指摘ください。
現在開発中ですが、いまのところ大きな障壁には出くわしていません。オブジェクト指向設計の経験がある人なら思ったより簡単に開発できるんじゃないかと思います。とくにUI設計に関してはかっこいいツールが用意されてるので、適当に作るだけでも結構それっぽくみえたりします。
というわけで、引き続き開発します。よかったら皆様もどうぞw
New tracks
I uploaded new tracks.”花” (tech house)”塵” (techno)”冬” (techno)
Recent entries
- jit.gl.gridshape の matrixoutput についてのメモ #max8
- jit.gl.pix で簡易モーションブラー #max8 #jitter
- jit.gl.pix で Gold Noise #max8 #jitter
- Gen で配列をつくる検討 #Max8
- Package Managerで配布されているease objectを使いやすくしてイージング #max8
- Node for Max を用いて、定形外のUDPデータを受信 #Max8 #n4m
- 平ハウス物語 – 山田尚子監督作品 非公式ファンイベント
- The Splendid Expression – GITADORA×NOSTALGIA
- ghost in my place【from DEEMO II】
- EP “Boys O’Clock”
- 7th Album “多次元宇宙論”
- LEON.jpのWEB特集「大人のいい時間」にAromが紹介されました。
- 音できらめくキャンドルライト Arom(第2世代)発売開始
- EP “Strange Story”
- 都市の呼吸【from Cytus II】