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

ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
delayed_jobの自動再起動
delayed_jobの自動再起動delayed_jobの自動再起動
delayed_jobの自動再起動firewood
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へKazumi IWANAGA
 
ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話Kenta Harada
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINE Corporation
 
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成Fuminobu TAKEYAMA
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。Masahiko Hashimoto
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマットAkihiro Suda
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例briscola-tokyo
 
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているやはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているyouten (ようてん)
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろうCROOZ, inc.
 
はじめてのAmazon Aurora
はじめてのAmazon AuroraはじめてのAmazon Aurora
はじめてのAmazon AuroraJun Okubo
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...NTT DATA Technology & Innovation
 
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたEtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたミソジ
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
 
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)NTT DATA Technology & Innovation
 
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...NTT DATA Technology & Innovation
 
サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践TakefumiYoshii
 

What's hot (20)

Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
delayed_jobの自動再起動
delayed_jobの自動再起動delayed_jobの自動再起動
delayed_jobの自動再起動
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
 
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているやはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろう
 
はじめてのAmazon Aurora
はじめてのAmazon AuroraはじめてのAmazon Aurora
はじめてのAmazon Aurora
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
 
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたEtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみた
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
 
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
 
サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践
 

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
 
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
 
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜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
 
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を使うと逮捕されるのか〜
 
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜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