« 夏祭り | トップページ | 「12人の優しい日本人」 »

2007.08.19

Core Audio のお勉強

IMGP3225久しぶりに、Core Audio の勉強をしてみました。最初は、Mac OS X がリリースされて間もない頃でした。それから、特にサウンドプログラミングを勉強したという訳ではありませんが、2 度目となると、それなりに理解できてしまうものですね。こういうのも年の功と言うのでしょうか(笑)

IMGP3225

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

Core Audio の一番下のレイヤーで音を出してみることにしました。いわゆる Audio HAL (Audio Hardware Abstraction Layer) です。HAL は、複数のアプリケーションでオーディオデバイスを共有するための仕組みで、OS によってハードウェアが上手く抽象化されています。この仕組みを覚えるだけで、どんなハードウェアへのアクセスも同様に可能になるのです。

IMGP3231

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

HAL の関数群はここにずらっと並んでいますが、まず最初のキモはこの 2 つ。

  • AudioDeviceAddIOProc( AudioDeviceID inDevice, AudioDeviceIOProc inProc,void*inClientData);
  • AudioDeviceStart( AudioDeviceID inDevice, AudioDeviceIOProc inProc);

あるデバイスに、定期的にオーディオデータを書き出すための関数を登録してスタートする。実にシンプルで美しいです。Mac OS 9 時代には、ダブルバッファを自前で用意して、いちいち交互に割り込みを自分で発生させてデータを書き出していました。懐かしくはあるけれど、あれは大変だったなぁ。

IMGP3214

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

Core Audio なら、上の2つに加えて、コールバックで呼ばれる関数に処理の中身を書いておくだけで、後は OS がよろしく処理してくれます。早速、AIFF や WAV ファイルを読み込んで再生してみました。しかし、音は出たもののボリュームがやたら大きいのとノイズまみれになってしまう問題が発生。数時間プログラムと格闘した後…。

ここを読んでいて原因に気づきました。32 bit 浮動小数点のところ、AIFF や WAV の波形データを 16 bit のまま書き出していました。まあ良くあることです(言い訳)。でも、こうして自力で解決できたので良しとしましょう。終わり良ければすべて良しですからね。

IMGP3216

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

« 夏祭り | トップページ | 「12人の優しい日本人」 »

プログラミング」カテゴリの記事

写真」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/82331/16163051

この記事へのトラックバック一覧です: Core Audio のお勉強:

« 夏祭り | トップページ | 「12人の優しい日本人」 »

Flickr


  • www.flickr.com
    This is a Flickr badge showing public photos from Youichi UeDA. Make your own badge here.
  • Youichi UeDA's latest photos slideshow on Flickr

あわせて読みたい

  • あわせて読みたいブログパーツ

スポンサードリンク



本・音楽・映画

現代音協楽別館

  • 現代音協楽ねりまん館
    現代音協楽の元・共同編集者ねりまんによる別館ブログ。
  • ピアノの発表会
    みんなで少しずつ練習して、少しずつうまくなって、少しずつプログラムができあがる。そんな架空のピアノの発表会です。
  • 京極和志 - sitekyogoku
  • 大御殿の裏口
    RKB毎日放送「原口・はなわの踊る!すまいる大御殿」スタッフによる非公式ブログです。
  • 音や
    音に関することを書くつもりのBlog
  • K-5's kitchen
    日々の料理や音楽のことを中心に綴っています。
  • Be-Photogenic (re:born)
    内観を探る旅の途中です。レンジファインダーカメラで覘いています。