SlideShare a Scribd company logo
1 of 48
Download to read offline
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 Diffs から見る iOS 9 の新機能
• 基調講演やニュース記事を見
るだけではわからない、iOS 9
の細かい新機能を「API Diffs」
「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に配慮しスクリーンショットは会場のみとします
→ 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

What's hot

RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装Koji Morikawa
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編NAKAOKU Takahiro
 
猫でも分かる3人称視点VRコンテンツ
猫でも分かる3人称視点VRコンテンツ猫でも分かる3人称視点VRコンテンツ
猫でも分かる3人称視点VRコンテンツpafuhana 1213
 
PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装尾上 兼透
 
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』UE4 Saitama 初心者向けハンズオン #7『サウンド機能』
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』Yuuki Ogino
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!エピック・ゲームズ・ジャパン Epic Games Japan
 
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~Unity Technologies Japan K.K.
 
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Tsuji Yuko
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019Game Tools & Middleware Forum
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupgree_tech
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!historia_Inc
 

What's hot (20)

RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編
 
猫でも分かる3人称視点VRコンテンツ
猫でも分かる3人称視点VRコンテンツ猫でも分かる3人称視点VRコンテンツ
猫でも分かる3人称視点VRコンテンツ
 
PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装
 
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』UE4 Saitama 初心者向けハンズオン #7『サウンド機能』
UE4 Saitama 初心者向けハンズオン #7『サウンド機能』
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
 
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~
【Unity道場 2017】パーティクルエフェクト実践編 ~ヒットエフェクト制作プレイクダウン~
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
UE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成についてUE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成について
 
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
 
UE4モバイルブートキャンプ
UE4モバイルブートキャンプUE4モバイルブートキャンプ
UE4モバイルブートキャンプ
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
 

Viewers also liked

UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つUI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つShuichi Tsutsumi
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編Shuichi Tsutsumi
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話Shuichi Tsutsumi
 
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoオープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoShuichi Tsutsumi
 
iPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめiPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめShuichi Tsutsumi
 
おもしろく働くための「わらしべ長者方式」
おもしろく働くための「わらしべ長者方式」おもしろく働くための「わらしべ長者方式」
おもしろく働くための「わらしべ長者方式」Shuichi Tsutsumi
 
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまでShuichi Tsutsumi
 

Viewers also liked (8)

UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つUI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
 
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoオープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyo
 
Company Scouter
Company ScouterCompany Scouter
Company Scouter
 
iPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめiPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめ
 
おもしろく働くための「わらしべ長者方式」
おもしろく働くための「わらしべ長者方式」おもしろく働くための「わらしべ長者方式」
おもしろく働くための「わらしべ長者方式」
 
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
 

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

Osc2012 appinventor のその後
Osc2012 appinventor のその後Osc2012 appinventor のその後
Osc2012 appinventor のその後Katsumi Honda
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみたjustice_sm
 
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦Tetsuya Shiraishi
 
App extension for iOS
App extension for iOSApp extension for iOS
App extension for iOStoyship
 
会津IT秋フォーラム2012での講演資料
会津IT秋フォーラム2012での講演資料会津IT秋フォーラム2012での講演資料
会津IT秋フォーラム2012での講演資料Shigeru Kobayashi
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発ta9mar
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書くYusuke Kita
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!Hiroko Umetsu
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編株式会社 NTTテクノクロス
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようKoji Hasegawa
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理Tadashi Miyazato
 
JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009Tatsuya Shiozawa
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京Kohsuke Kawaguchi
 
Android アプリケーション開発応用
Android アプリケーション開発応用Android アプリケーション開発応用
Android アプリケーション開発応用OESF Education
 
App Extensions in iOS ver JP
App Extensions in iOS ver JPApp Extensions in iOS ver JP
App Extensions in iOS ver JPqohj
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段Pierre3 小林
 

Similar to Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜 (20)

Programming Is Fun
Programming Is FunProgramming Is Fun
Programming Is Fun
 
Osc2012 appinventor のその後
Osc2012 appinventor のその後Osc2012 appinventor のその後
Osc2012 appinventor のその後
 
20101022
2010102220101022
20101022
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
 
App extension for iOS
App extension for iOSApp extension for iOS
App extension for iOS
 
会津IT秋フォーラム2012での講演資料
会津IT秋フォーラム2012での講演資料会津IT秋フォーラム2012での講演資料
会津IT秋フォーラム2012での講演資料
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書く
 
Wankuma0402
Wankuma0402Wankuma0402
Wankuma0402
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
 
Android アプリケーション開発応用
Android アプリケーション開発応用Android アプリケーション開発応用
Android アプリケーション開発応用
 
App Extensions in iOS ver JP
App Extensions in iOS ver JPApp Extensions in iOS ver JP
App Extensions in iOS ver JP
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 

More from Shuichi Tsutsumi

Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoCore MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoShuichi Tsutsumi
 
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略Shuichi Tsutsumi
 
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfUIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfShuichi Tsutsumi
 
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfUIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfShuichi Tsutsumi
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDCShuichi Tsutsumi
 
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDevDeep Learning on iOS #360iDev
Deep Learning on iOS #360iDevShuichi Tsutsumi
 
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Shuichi Tsutsumi
 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Shuichi Tsutsumi
 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Shuichi Tsutsumi
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Shuichi Tsutsumi
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2Shuichi Tsutsumi
 
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜Shuichi Tsutsumi
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことShuichi Tsutsumi
 
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトShuichi Tsutsumi
 
カヤックを退職すべきではない3つの理由
カヤックを退職すべきではない3つの理由カヤックを退職すべきではない3つの理由
カヤックを退職すべきではない3つの理由Shuichi Tsutsumi
 
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜Shuichi Tsutsumi
 

More from Shuichi Tsutsumi (20)

Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoCore MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
 
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
 
Depth in Depth #iOSDC
Depth in Depth #iOSDCDepth in Depth #iOSDC
Depth in Depth #iOSDC
 
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfUIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconf
 
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfUIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconf
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
 
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDevDeep Learning on iOS #360iDev
Deep Learning on iOS #360iDev
 
Client-Side Deep Learning
Client-Side Deep LearningClient-Side Deep Learning
Client-Side Deep Learning
 
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"
 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2
 
Apple Watch 間通信
Apple Watch 間通信Apple Watch 間通信
Apple Watch 間通信
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
 
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
 
カヤックを退職すべきではない3つの理由
カヤックを退職すべきではない3つの理由カヤックを退職すべきではない3つの理由
カヤックを退職すべきではない3つの理由
 
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
 

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 Diffs から見る iOS 9 の新機能 • 基調講演やニュース記事を見 るだけではわからない、iOS 9 の細かい新機能を「API Diffs」 「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に配慮しスクリーンショットは会場のみとします
  • 39.
  • 40.
  • 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