http://decomo.info/wiki/" /> クソゲ〜製作所 - NSSoundと戯れる

クソゲ~製作所

新システムに移行中:http://decomo.info/wiki/

« 戦利品@H/O | メイン | NSArrayとNSTableViewとNSArchiverを学ぶ »
スポンサーリンク

2005年10月07日

 

NSSoundと戯れる

 

そろそろ、本格的に簡易オーディオプレーヤを作るべく、NSSoundクラスのドキュメントを読んだ。

何か、扱いが凄い簡単なんですけどー...。ファイルを与えてオブジェクトを作成し、あとは「play」「stop」と言った、見て字の如くな機能を備えたメソッドを呼んでやれば、その通りに動作してくれるようだ。

というわけで、早速実装実装。

ドキュメントにはサンプルコードが付いているので、それを切り貼りして、InterfaceBuilderでActionを設定してやるだけ。そして、出来たのがこれ。

20051007-01.jpg

最初は動かなかったが、試行錯誤を繰り返すうちに、無事動くようになった。かかった時間は1時間もないだろうか。ソースの行数にして、僅かに70行。たったそれっぽっちのプログラムで、オーディオプレーヤとして有するべき、基本的な機能は持ってしまっているという点が凄い。NSSound万歳である。

ドキュメントによれば、NSSoundは16bit/44.1k or 22.05k HzのAIFFやWAVEなどの、単純なファイル形式しかサポートしていないことになっている。が、しかし、実際にはMP3やAAC(m4a)も難なく読めてしまっている。Technical Q&A QA1335を読むと、v10.3以降では(?)QuickTimeやCoreAudioで再生できる形式ならば、再生できるようになったとか。

便利なNSSoundにも欠点はあって、それはストリーム再生ができないということ。つまりそれは、NSSoundで再生できないファイルは、どんなに足掻いても再生できないということだ。非対応のファイルは再生できなくても当然、と思うかもしれないが、ストリーム再生に対応していれば、様々なデコーダを用意しておいて、そのデコーダが吐き出すWAVEなりAIFFなりを流し込んでやれば、再生することができる。

ストリーム再生を行うとなると、CoreAudioかQuickTimeを使わざるを得なくなるわけで、そうすると一気に難易度が上がる。しかし、各種オーディオファイル(エミュの音源ファイルなんかも含む)の再生を考えると、避けては通れない道だ。まぁ、そのうち勉強しよう。

Decomo | 01:06

トラックバック

 

■このエントリーのトラックバックアドレス:
http://www.decomo.info/cgi-php/mt/mt-KusoGA-gattsuIshimatsu.cgi/160


■このエントリーのアドレス:
http://decomo.info/mt/archives/2005/200510070106.shtml

 

コメント

 
 

コメントをどうぞ...

 






保存しますか?