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

AVAudioEngine

iOS8からAVAudioEngineという新たなオーディオの機能がAVFoundationに追加されました。AVAudioEngineというのはAUGraphのObjective-C版のような感じのものです。オーディオのプレイヤーやエフェクトやミキサーなどがNodeと呼ばれる部品で用意されていて、それらを繋いで音を鳴らす事が出来ます。 AUGraphよりもかなり簡単に使えるようになっているのですが、その反面、AUGraphを使うときのように細かい設定が出来るわけではなかったり、AUGraphで出来た事が出来なかったりする部分もあるので、いままでAUGraphを使っていた人にとっては物足... read more

mediaServiceWereResetNotificationが呼ばれるタイミング

AVAudioSessionのmediaServiceWereResetNotificationですが、たまたま確実に呼ばれるタイミングを見つけられたのでメモしておきます。 1、AudioSessionのCategoryをAVAudioSessionCategoryMultiRouteにする。 2、iPad本体にヘッドホンを接続し、Lightning端子に外部出力を接続する。 3、ヘッドホンとLightningケーブルを同時に素早く抜き取る。 LightningやiPadと書きましたが、たぶんDockケーブルやiPhoneでもMultiRouteな状態からケーブルを一気に引き抜けば同... read more

Multi Route Audio

iOS6からの機能なので今さら感がありますが、拙作のTouch the Waveでも導入したMulti Route Audioの使い方をまとめておこうと思います。 Multi Route Audioとは USBオーディオインターフェースやHDMIなどの外部出力を接続したときに、ヘッドホンへ別系統の音を出力できる機能です。外部出力2chとヘッドホン2chの計4ch出力する事が出来ます。残念ながらマルチイン・アウトが搭載されているオーディオインターフェースをマルチで使えるという機能ではなく、USBオーディオインターフェースはイン・アウト2chのみで、それとは別にヘッドホンにも別の音をだせ... read more

AudioQueueProcessingTap

iOS6からAudioQueueServiceにProcessingTapという機能が追加されました。 これを利用すると、Queueにバッファされた後のデータにエフェクトなど処理を挟み込む事ができるようになります。AudioQueueのピッチ処理はiOSでは機能していないと思いますが、AudioUnitを挟み込む事もできるので、VarispeedとかNewTimePitchとか使えば実現する事ができます。 AudioQueueProcessingTapNew ProcessingTapをAudioQueueで使えるようにするのが以下の関数です。 extern OSStatus... read more

iOS 5のオーディオ新機能

世の中iOS 5といったらiCloudだSiriだと騒いでいますが、オーディオの新機能も実は結構あります。とりあえずどんなものがあるかだけ書いておきます。 AudioUnitプラグイン AudioUnitのプラグインがかなり追加されてます。Macでは以前からあるもののサブセット的な感じです。 【Generator】 ・ScheduledSoundPlayer ・AudioFilePlayer 【MusicDevice】 ・Sampler 音を再生するものはGeneratorとMusicDeviceですね。特にSamplerはSoundFont&MIDI対応のプレ... read more

CMSampleBufferからオーディオデータを取り出す

前回の続きというほどのものでもない内容になってしまいますが、CMSampleBufferからオーディオのデータを取り出す方法です。CMSampleBufferGetAudioBufferListWithRetainedBlockBufferという関数を使います。前回の内容も含めてDeveloper Forumsに書いてあったコードを参考に調べていたのですが、削るに削ってこれだけになりました。 CMSampleBufferRef sampleBuffer = [audioMixOutput copyNextSampleBuffer]; CMBlockBufferRef ... read more

AVAssetReaderとAVAssetWriter

iOS4.0のAVAssetExportSessionでiPod Libraryからファイルの書き出しができるようになったことは以前のエントリーに書きましたが、さらにiOS4.1からは、AVAssetReaderによって事前にコピーすること無く、直接iPodLibraryのオーディオファイルのデータを生のデータで読み込むことが出来るようになっています。また、AVAssetWriterという、オーディオファイルを作ることの出来るクラスも追加されています。 AVAssetExportSessionがMP3などを読み込むのにかなり使い勝手の悪いものだったのですが、AVAssetReaderはE... read more

iPodライブラリからのファイル書き出し その2

※この記事の内容は、iOS4.2以降では正常に動作しない可能性があります。 iPodライブラリからの書き出し、第二回です。 前回、MP3からAACへの書き出しができないと書きましたが、おそらくAVAssetExportSessionがサポートしているファイルタイプにMP3がないからと思われます。supportedFileTypesメソッドで取得できるAVAssetExportSessionがサポートしているとおぼしきファイルタイプは以下のようなものです。 "com.apple.quicktime-movie", "com.apple.m4a-audio&#... read more

iPodライブラリからのファイル書き出し その1

iOS 4.0になってようやくiPodライブラリにある音楽を生のデータとして扱うことができるようになりましたので、その方法をまとめておきたいと思います。ムービーも同じような方法でできるようですが、とりあえずここではオーディオに限定して説明していきます。ちなみにシミュレータにはiPodライブラリがないので試せません。コードは実機で実行してください。 大まかな手順としては以下のような感じです。 ① MPMediaItemを取得 ② AVURLAssetを生成 ③ AVAssetExportSessionを生成 ④ Exportを実行 では、やっていきましょう。 ① MPMedia... read more

iPhone Core Audio プログラミング

ちょっと記事にするには乗り遅れた感がありますが、「iPhone Core Audio プログラミング」という、iPhoneのオーディオプログラミングに特化した本が発売されています。今はもうだいたいどこの本屋さんいっても置いてありますね。詳しい内容については筆者の永野さんのサイトのページ「iPhone Core Audioプログラミング」(書籍) 発売へ。 iPhoneのオーディオのAPIについては、これ一冊に日本語でほぼ全て書いてあります。日本語です!iPhone Dev Centerにも「Core Audio 概要」とか「Audio Session Programming Guide」... read more