カテゴリー別アーカイブ: Core Audio – Mac

Core Audio その5 プロパティの設定

※2009/10/2追記《このエントリーはMac OS X 10.5での場合について書かれています。10.6以降の場合はこちらをご覧ください。》 今回はプロパティに値を設定してみたいと思います。 取得のときの〜GetPropertyの関数と同じような感じで、設定は〜SetPropertyと名前のついた関数を使います。<CoreAudio/AudioHardware.h>に以下のような関数があります。 extern OSStatus AudioHardwareSetProperty(   AudioHardwarePropertyID inProperty... read more

Core Audio その4 プロパティの取得

※2009/10/2追記《このエントリーはMac OS X 10.5での場合について書かれています。10.6以降の場合はこちらをご覧ください。》 今回は、Core Audioのデバイスなどから情報(※プロパティ)を実際にやりとりする方法を見ていきたいと思います。(※使用する関数名や引数でpropertyと名前が付けられているので、この情報の事を以後プロパティと表記する事にします。) まず、プロパティを取得するにはGetPropertyと名前のついた関数を使います。それぞれ以下の関数があります。 //オーディオシステム全体からの情報を取得する extern OSStatus... read more

Core Audio その3 AudioObjectID

※2009/10/2追記《このエントリーはMac OS X 10.5での場合について書かれています。10.6以降の場合はこちらをご覧ください。》 前回の最後に、情報のやり取りをすると書いていましたが、その前にもう一つ説明しておきたいものがあります。 マックにつなげているオーディオインターフェースのチャンネル数だとか、サンプリング周波数だとかを知りたいとしても、そのオーディオインターフェースを特定できなければ知りようもありません。 Core Audioでは、マックのオーディオシステム全体や、オーディオデバイスや、オーディオデバイス内の入出力に、それぞれIDナンバーが振られており、AudioO... read more

Core Audio その2 AudioStreamBasicDescription

Core Audioにおいて、オーディオデータの状態(リニアPCM等のフォーマットとか、ビットやサンプリングレートとか、チャンネル数とか)を表す構造体がAudioStreamBasicDescriptionです。 struct AudioStreamBasicDescription {     Float64 mSampleRate; //サンプリング周波数(1秒間のフレーム数)     UInt32  mFormatID; //フォーマットID(リニアPCM、MP3、AACなど) ... read more

Core Audio その1 AudioBufferとAudioBufferList

いままでvDSPやら何やらと、オーディオプログラミングでも補助的なものをネタにしていたので、ちょっとここらへんで基本に立ち返ってCore Audioの基本的な部分を書いていこうと思います。自分的にもちゃんと書いておかないと、オーディオ系のプログラミングからしばらく離れたりしたときに忘れてしまいそうになるので。 Core Audioというと、広い意味ではAudioUnitプラグインやCore MIDIまで含まれていると思いますが、ここではCoreAudio Frameworkという、まさにCore Audioな部分を見ていこうと思います。 どこから始めようかとと考えましたが、なにはなくともオーデ... read more

AudioUnitをオフラインで使う

オーディオファイルにエフェクトをバッチ処理でかけるような時に、AudioUnitを使って出来ないかと思ったのですが、そういう事ができそうなkAudioUnitType_OfflineEffectを取得しても、VariSpeedやTimePitchしか出てきません。しかし、Logicとかで出来てる事が出来ないはずはないと思い、普通のkAudioUnitType_Effectをオフラインで使える方法はないかと調べてみました。 リアルタイムでの処理をシミュレートするという形で調べた結果、ポイントのみをとりあえず書いておきます。 ・AudioUnitRender関数を実行すると別のスレッドでエフェクト... read more