狠狠撸

狠狠撸Share a Scribd company logo
Audio Unit Extensions
オーディオエフェクトのアプリ間共有
堤 修一 @shu223
2015.6.21 WWDC2015報告共有会@ネクスト
? iOS専業フリーランス
? ブログ『Over&Out その後』
? 著書
- 『iOS×BLE?Core Bluetoothプログラミング』
- 『iOSアプリ開発 達人のレシピ100』
堤 修一
お手伝いしたプロダクト(BLE関連)
Music for the Deaf
iOS 9 / watchOS 2 関連の
これまでのアウトプット
おさらい
API Di?s から見る iOS 9 の新機能
? 基調講演やニュース記事を見
るだけではわからない、iOS 9
の細かい新機能を「API Di?s」
「What’s new」から抜粋
? http://d.hatena.ne.jp/
shu223/20150609/1433813938
watchOS-2-Sampler
? watchOS 2 の新機能のサンプルコード集
- Accelerometer
- Gyroscope
- Pedometer
- Heart Rate
- Table Animations
- Animated Properties
- Audio Rec & Play
- Picker Styles
- Taptic Engine
- Alert
- Animation with Digital Crown
- Interactive Messaging
- Open System URL
- Audio File Player
? GitHub で公開中
- github.com/shu223/watchOS-2-Sampler
? 紹介記事
- d.hatena.ne.jp/shu223/20150614/1434313771
watchOS 2 新機能の細かい話5つ
? watchOS-2-Sampler 実装にあたって気付いた細かい
諸々について
- 2つのアセットカタログの 使い分け
- メディアデータの 保存場所
- WKAudioFilePlayer
- ウォッチ側 Bluetooth の (直接)利用
- Watch Connectivity のメッセージ送信可否の条件
? 『potatotips #18』での発表
? slideshare.net/t26v0748/uiux-watchos-2-3
? d.hatena.ne.jp/shu223/20150616/1434454680
UI/UX に影響の大きい watchOS 2 の新機能
? watchOS 2 の数ある新機能の中で、
UI/UX に影響の大きそうな機能を3
つ抜粋して紹介
? 『UI Crunch #5』というデザイナー
さん、ディレクターさんも来る勉強
会での発表
- (なのでコードは出てきません)
? http://www.slideshare.net/t26v0748/
uiux-watchos-2-3
Core Image の新機能
? iOS 9 の Core Image の新機能について
紹介&デモ
- 文字認識
- 新フィルタ47種
? @『WWDC Afterparty Roppongi』
? slideshare.net/t26v0748/ios-9-core-image
? d.hatena.ne.jp/shu223/20150622/
1434924215
今日の発表内容:
Audio Unit Extensions
※Appleの公開ドキュメントの範囲で発表します
Audio Unit とは?
Audio Unit とは?
? Core Audio においてもっとも低
レベル(ハードより)に位置す
るフレームワーク
Audio Unit とは?
? Core Audio においてもっとも低
レベル(ハードより)に位置す
るフレームワーク
? 低遅延での音声処理が可能
Audio Unit とは?
? Core Audio においてもっとも低
レベル(ハードより)に位置す
るフレームワーク
? 低遅延での音声処理が可能
? ユニット同士を繋げて複雑なオー
ディオ処理を実現可能
(図:iOS 5 プログラミングブック より)
Audio Unit とは?
? Core Audio においてもっとも低
レベル(ハードより)に位置す
るフレームワーク
? 低遅延での音声処理が可能
? ユニット同士を繋げて複雑なオー
ディオ処理を実現可能
? iOS 8 より AVFoundation に
AVAudioEngine が追加され、
Audio Unit の利用ハードルが
グッと下がった
(図:iOS 5 プログラミングブック より)
Audio Unit Extensions とは?
Audio Unit Extensions とは?
? iOS 9 で追加された Extension Point のひとつ
Audio Unit Extensions とは?
? iOS 9 で追加された Extension Point のひとつ
? Audio Unit をアプリ間で共有できる
Audio Unit Extensions とは?
? iOS 9 で追加された Extension Point のひとつ
? Audio Unit をアプリ間で共有できる
- 自作ユニットを他社のアプリでも使用できるようにする
Audio Unit Extensions とは?
? iOS 9 で追加された Extension Point のひとつ
? Audio Unit をアプリ間で共有できる
- 自作ユニットを他社のアプリでも使用できるようにする
- 他社が制作したユニットを自分のアプリでも利用する
Audio Unit Extensions とは?
? iOS 9 で追加された Extension Point のひとつ
? Audio Unit をアプリ間で共有できる
- 自作ユニットを他社のアプリでも使用できるようにする
- 他社が制作したユニットを自分のアプリでも利用する
? すなわち???
こういうことができるようになる!
Audio Unit のタイプはエフェクトだけではない
GarageBand が提供予定の AU Extension
AU Instruments
まずは体験してみる:
Audio Unit Extensions
利用側の実装方法
準備
? WWDC サンプルコード“AudioUnitV3Example”に入っ
ている“FilterDemo”をインストールしておく
? このサンプルが Extension を contain している
利用可能なユニットのリストを取得
? AVAudioUnitComponentManager の componentsMatchingDescription:
メソッドを利用
? AVAudioUnitComponent (Audio Unit のタイプや制作者等の情報を提供
するクラス)のリストが得られる
FilterDemo が contain していた Extension も入っている
※NDAに配慮しスクリーンショットは会場のみとします
エフェクトを適用する
1. 選択された AVAudioUnitComponent の
AudioComponentDescription (構造体)を取得
2. AVAudioUnit を
instantiateWithComponentDescription:options:
で生成
3. AVAudioEngine に attachNode
4. エフェクトノードと、プレイヤー?ミキサー
等のノードを connect
※ このあたりの AVAudioEngine の基本的なサンプ
ルは、iOS8-Sampler にも入っています?→
Extension が提供するビューを表示する
Extension が提供するビューを表示する
? AUViewController
Extension が提供するビューを表示する
? AUViewController
- 要 CoreAudioKit
Extension が提供するビューを表示する
? AUViewController
- 要 CoreAudioKit
- 定義はこれだけ
Extension が提供するビューを表示する
? AUViewController
- 要 CoreAudioKit
- 定義はこれだけ
→ 所望の AUAudioUnit に対して requestViewController ~すると
AUViewController オブジェクトを返してくれる(持っていなければ nil)
例)FilterDemo の Extension が提供するビュー
? 波形をドラッグしてカットオ
フ周波数とレゾナンスを変化
させられる
? Auto Layout やタッチハンドラ
でビューサイズ変更が考慮さ
れているので、画面の下半分
に表示、といったことも可能
? バグ:再生中に波形をいじっ
ても反映されない(どこかに
ちゃんと明記してあった)
※NDAに配慮しスクリーンショットは会場のみとします
Audio Unit Extensions
作成方法
? Xcode: [File] > [New] > [Target]
※NDAに配慮しスクリーンショットは会場のみとします
? Xcode: [File] > [New] > [Target]
Audio Unit Extension がない!!!!
※NDAに配慮しスクリーンショットは会場のみとします
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?
→ Xcode テンプレートはまだないのでサンプルからコピペしてね
まとめ
まとめ
? Audio Unit を用いると、ユニット同士を繋げて複雑なオー
ディオ処理を低遅延で実行することができる
まとめ
? Audio Unit を用いると、ユニット同士を繋げて複雑なオー
ディオ処理を低遅延で実行することができる
? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる
iOS 9 の新機能
まとめ
? Audio Unit を用いると、ユニット同士を繋げて複雑なオー
ディオ処理を低遅延で実行することができる
? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる
iOS 9 の新機能
- AVAudioUnitComponentManager???利用可能なユニットのリストの取
得。ここに AU Extension も入ってくる
まとめ
? Audio Unit を用いると、ユニット同士を繋げて複雑なオー
ディオ処理を低遅延で実行することができる
? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる
iOS 9 の新機能
- AVAudioUnitComponentManager???利用可能なユニットのリストの取
得。ここに AU Extension も入ってくる
- AUViewController???Audio Unit Extension が提供するカスタムビュー。
AUAudioUnit の requestViewController~ メソッドを呼ぶとそのオブジェクト
を取得できる(提供してなければ nil)
まとめ
? Audio Unit を用いると、ユニット同士を繋げて複雑なオー
ディオ処理を低遅延で実行することができる
? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる
iOS 9 の新機能
- AVAudioUnitComponentManager???利用可能なユニットのリストの取
得。ここに AU Extension も入ってくる
- AUViewController???Audio Unit Extension が提供するカスタムビュー。
AUAudioUnit の requestViewController~ メソッドを呼ぶとそのオブジェクト
を取得できる(提供してなければ nil)
- AU Extensions の作成方法???まだテンプレートがない。デモからコピー
してくる
watchOS-2-Sampler
GitHub: shu223/watchOS-2-Sampler
Blog: watchOS 2 の新機能のサンプルコード集『watchOS-2-Sampler』
watchOS 2 新機能のサンプルコード集
- Accelerometer
- Gyroscope
- Pedometer
- Heart Rate
- Table Animations
- Animated Properties
- Audio Rec & Play
- Picker Styles
- Taptic Engine
- Alert
- Animation with Digital Crown
- Interactive Messaging
- Open System URL
- Audio File Player

More Related Content

Audio Unit Extensions ?オーディオエフェクトのアプリ間共有?

  • 1. Audio Unit Extensions オーディオエフェクトのアプリ間共有 堤 修一 @shu223 2015.6.21 WWDC2015報告共有会@ネクスト
  • 2. ? iOS専業フリーランス ? ブログ『Over&Out その後』 ? 著書 - 『iOS×BLE?Core Bluetoothプログラミング』 - 『iOSアプリ開発 達人のレシピ100』 堤 修一
  • 4. iOS 9 / watchOS 2 関連の これまでのアウトプット おさらい
  • 5. API Di?s から見る iOS 9 の新機能 ? 基調講演やニュース記事を見 るだけではわからない、iOS 9 の細かい新機能を「API Di?s」 「What’s new」から抜粋 ? http://d.hatena.ne.jp/ shu223/20150609/1433813938
  • 6. watchOS-2-Sampler ? watchOS 2 の新機能のサンプルコード集 - Accelerometer - Gyroscope - Pedometer - Heart Rate - Table Animations - Animated Properties - Audio Rec & Play - Picker Styles - Taptic Engine - Alert - Animation with Digital Crown - Interactive Messaging - Open System URL - Audio File Player ? GitHub で公開中 - github.com/shu223/watchOS-2-Sampler ? 紹介記事 - d.hatena.ne.jp/shu223/20150614/1434313771
  • 7. watchOS 2 新機能の細かい話5つ ? watchOS-2-Sampler 実装にあたって気付いた細かい 諸々について - 2つのアセットカタログの 使い分け - メディアデータの 保存場所 - WKAudioFilePlayer - ウォッチ側 Bluetooth の (直接)利用 - Watch Connectivity のメッセージ送信可否の条件 ? 『potatotips #18』での発表 ? slideshare.net/t26v0748/uiux-watchos-2-3 ? d.hatena.ne.jp/shu223/20150616/1434454680
  • 8. UI/UX に影響の大きい watchOS 2 の新機能 ? watchOS 2 の数ある新機能の中で、 UI/UX に影響の大きそうな機能を3 つ抜粋して紹介 ? 『UI Crunch #5』というデザイナー さん、ディレクターさんも来る勉強 会での発表 - (なのでコードは出てきません) ? http://www.slideshare.net/t26v0748/ uiux-watchos-2-3
  • 9. Core Image の新機能 ? iOS 9 の Core Image の新機能について 紹介&デモ - 文字認識 - 新フィルタ47種 ? @『WWDC Afterparty Roppongi』 ? slideshare.net/t26v0748/ios-9-core-image ? d.hatena.ne.jp/shu223/20150622/ 1434924215
  • 12. Audio Unit とは? ? Core Audio においてもっとも低 レベル(ハードより)に位置す るフレームワーク
  • 13. Audio Unit とは? ? Core Audio においてもっとも低 レベル(ハードより)に位置す るフレームワーク ? 低遅延での音声処理が可能
  • 14. Audio Unit とは? ? Core Audio においてもっとも低 レベル(ハードより)に位置す るフレームワーク ? 低遅延での音声処理が可能 ? ユニット同士を繋げて複雑なオー ディオ処理を実現可能 (図:iOS 5 プログラミングブック より)
  • 15. Audio Unit とは? ? Core Audio においてもっとも低 レベル(ハードより)に位置す るフレームワーク ? 低遅延での音声処理が可能 ? ユニット同士を繋げて複雑なオー ディオ処理を実現可能 ? iOS 8 より AVFoundation に AVAudioEngine が追加され、 Audio Unit の利用ハードルが グッと下がった (図:iOS 5 プログラミングブック より)
  • 17. Audio Unit Extensions とは? ? iOS 9 で追加された Extension Point のひとつ
  • 18. Audio Unit Extensions とは? ? iOS 9 で追加された Extension Point のひとつ ? Audio Unit をアプリ間で共有できる
  • 19. Audio Unit Extensions とは? ? iOS 9 で追加された Extension Point のひとつ ? Audio Unit をアプリ間で共有できる - 自作ユニットを他社のアプリでも使用できるようにする
  • 20. Audio Unit Extensions とは? ? iOS 9 で追加された Extension Point のひとつ ? Audio Unit をアプリ間で共有できる - 自作ユニットを他社のアプリでも使用できるようにする - 他社が制作したユニットを自分のアプリでも利用する
  • 21. Audio Unit Extensions とは? ? iOS 9 で追加された Extension Point のひとつ ? Audio Unit をアプリ間で共有できる - 自作ユニットを他社のアプリでも使用できるようにする - 他社が制作したユニットを自分のアプリでも利用する ? すなわち???
  • 24. GarageBand が提供予定の AU Extension AU Instruments
  • 27. 利用可能なユニットのリストを取得 ? AVAudioUnitComponentManager の componentsMatchingDescription: メソッドを利用 ? AVAudioUnitComponent (Audio Unit のタイプや制作者等の情報を提供 するクラス)のリストが得られる
  • 28. FilterDemo が contain していた Extension も入っている ※NDAに配慮しスクリーンショットは会場のみとします
  • 29. エフェクトを適用する 1. 選択された AVAudioUnitComponent の AudioComponentDescription (構造体)を取得 2. AVAudioUnit を instantiateWithComponentDescription:options: で生成 3. AVAudioEngine に attachNode 4. エフェクトノードと、プレイヤー?ミキサー 等のノードを connect ※ このあたりの AVAudioEngine の基本的なサンプ ルは、iOS8-Sampler にも入っています?→
  • 34. Extension が提供するビューを表示する ? AUViewController - 要 CoreAudioKit - 定義はこれだけ → 所望の AUAudioUnit に対して requestViewController ~すると AUViewController オブジェクトを返してくれる(持っていなければ nil)
  • 35. 例)FilterDemo の Extension が提供するビュー ? 波形をドラッグしてカットオ フ周波数とレゾナンスを変化 させられる ? Auto Layout やタッチハンドラ でビューサイズ変更が考慮さ れているので、画面の下半分 に表示、といったことも可能 ? バグ:再生中に波形をいじっ ても反映されない(どこかに ちゃんと明記してあった) ※NDAに配慮しスクリーンショットは会場のみとします
  • 37. ? Xcode: [File] > [New] > [Target] ※NDAに配慮しスクリーンショットは会場のみとします
  • 38. ? Xcode: [File] > [New] > [Target] Audio Unit Extension がない!!!! ※NDAに配慮しスクリーンショットは会場のみとします
  • 43. まとめ ? Audio Unit を用いると、ユニット同士を繋げて複雑なオー ディオ処理を低遅延で実行することができる
  • 44. まとめ ? Audio Unit を用いると、ユニット同士を繋げて複雑なオー ディオ処理を低遅延で実行することができる ? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる iOS 9 の新機能
  • 45. まとめ ? Audio Unit を用いると、ユニット同士を繋げて複雑なオー ディオ処理を低遅延で実行することができる ? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる iOS 9 の新機能 - AVAudioUnitComponentManager???利用可能なユニットのリストの取 得。ここに AU Extension も入ってくる
  • 46. まとめ ? Audio Unit を用いると、ユニット同士を繋げて複雑なオー ディオ処理を低遅延で実行することができる ? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる iOS 9 の新機能 - AVAudioUnitComponentManager???利用可能なユニットのリストの取 得。ここに AU Extension も入ってくる - AUViewController???Audio Unit Extension が提供するカスタムビュー。 AUAudioUnit の requestViewController~ メソッドを呼ぶとそのオブジェクト を取得できる(提供してなければ nil)
  • 47. まとめ ? Audio Unit を用いると、ユニット同士を繋げて複雑なオー ディオ処理を低遅延で実行することができる ? Audio Unit Extensions は、Audio Unit をアプリ間で共有できる iOS 9 の新機能 - AVAudioUnitComponentManager???利用可能なユニットのリストの取 得。ここに AU Extension も入ってくる - AUViewController???Audio Unit Extension が提供するカスタムビュー。 AUAudioUnit の requestViewController~ メソッドを呼ぶとそのオブジェクト を取得できる(提供してなければ nil) - AU Extensions の作成方法???まだテンプレートがない。デモからコピー してくる
  • 48. watchOS-2-Sampler GitHub: shu223/watchOS-2-Sampler Blog: watchOS 2 の新機能のサンプルコード集『watchOS-2-Sampler』 watchOS 2 新機能のサンプルコード集 - Accelerometer - Gyroscope - Pedometer - Heart Rate - Table Animations - Animated Properties - Audio Rec & Play - Picker Styles - Taptic Engine - Alert - Animation with Digital Crown - Interactive Messaging - Open System URL - Audio File Player