月別アーカイブ: 2008年5月

Core Audio Clock その1 インターナル

ちょっと最近Core Audio Clockの使い方を調べていたので、分かったところまでを書いておきます。たぶんオーディオデバイスとMIDIデータとの同期などに本来の威力を発揮するのでしょうが、MIDI関係はまだちゃんと調べていないので、とりあえず内部のクロックをソースにした簡単な動かし方といったところです。 最初からいろいろ書くのはめんどくさいので、とりあえずサンプルコードからです。単純なストップウォッチです。 // //  CAClockTest.h // #import <Cocoa/Cocoa.h> #... read more

オーディオファイル その2 AudioFile

今回は、Audio File APIを使ったオーディオファイルの読み書きの方法を見て行きたいと思います。前回のExtendedAudioFileはフォーマットを指定すれば勝手に変換して読み書きしてくれましたが、Audio Fileではほぼそのまんまデータが読み込まれますので、変換が必要であれば自前で実装するか、AudioToolboxにあるAudio Converterを使うということになります。 オーディオファイルの読み込み オーディオファイルの読み込みをする時は、 1 オーディオファイルを開く2 オーディオファイルのフォーマットを取得する3 読み込むバッファを確保する4 バッファへデータ... read more

オーディオファイル その1 ExtendedAudioFile

Core AudioのAudioToolbox.Frameworkにはオーディオファイルの読み書きに2通り方法が用意されています。<AudioToolbox/AudioFile.h>での、ほぼ生のデータを直接扱う方法と、<AudioToolbox/ExtendedAudioFile.h>での、オーディオファイルの読み書きにコンバーターを組み合わせてあるものを使う方法です。 圧縮ファイルを扱う場合や、リニアPCMでサンプリング周波数を変換して扱いたい場合には、ExtendedAudioFile.hを使ったほうが楽だと思います。逆にリニアPCMでフォーマットの変換が全く必要... read more

Core Audio その7 IOProc

Core Audioのオーディオデバイスと入出力のデータをやり取りするには、入出力を行う関数を登録したあと、デバイスの動作を開始させます。入出力の関数の登録を行う関数は<CoreAudio/AudioHardware.h>で宣言されていて、AudioDeviceCreateIOProcIDという関数になります。Tiger以前はAudioDeviceAddIOProcという関数でしたが、LeopardからはDeprecatedになって、こちらに変わっています。 extern OSStatus AudioDeviceCreateIOProcID(  AudioDeviceI... read more

Core Audio その6 プロパティリスナー

オーディオデバイスの設定が外部から変更された時や、前回のようにオーディオデバイスの設定を変更し、その変更がちゃんと適用された後に処理を行いたい場合、プロパティが変更されたという通知を受け取るように設定します。 変更された事を知りたいプロパティを、〜AddPropertyListenerと名前のついた関数で登録します。必要がなくなったら〜RemovePropertyListerで登録を解除します。以下が<CoreAudio/AudioHardware.h>で宣言されている関数です。 //AudioHardware用 extern OSStatus AudioHar... read more