SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Introducing libpd
-Pdをアプリのサウンドエンジンに-
一応 自己紹介
● 半導体メーカ勤務
○ Arduino互換ボード ヨロシク!
● 学生時代は計測工学・信号処理が専門
○ LabVIEW とか Simulink がお友達 (Pdの遠い親戚)
● 趣味1 音楽制作
○ DJしてました(最近あんまり機会がない)
○ チェロも弾く
○ 同人CDとか作ったり
ふと、music-orientedなゲームを作ろうと思い立つ
自作のプログラムで音を鳴らしたいとき…
QuickTime
AVAudioPlayer
SoundPlayer
SoundPool
「このwavファイル再生しといて」 程度のノリ
● 変更できるのは音量、ステレオ、再生速度くらい
● タイミング(発音遅延など)の精度は考慮なし
かんたん再生機能
本格的なサウンドAPIは…
DirectX
CoreAudio
ASIO
AudioTrack
エフェクト、ミキシング、シンセサイズ
なんでも自由にできるが…
● バッファ制御(音を鳴らしている間に次の音を準備する)
● ストリーミング(時間を止めるわけにはいかない)
など、リアルタイム系プログラミングの知識が必要で
ハードル高い
サウンドデバイスに直接
波形データを渡せる
コンピュータ 音 音楽
DirectX
CoreAudio
ASIO
AudioTrack
このへんで
音楽的な発想をプログラムしやすい
Pdみたいな環境があったらいいな…
それぞれのドメイン(立ち位置)
ファイル
QuickTime
AVAudioPlayer
SoundPlayer
SoundPool
_人人人人人_
> l i b p d <
 ̄Y^Y^Y^Y^Y^ ̄
それぞれのドメイン(立ち位置)
コンピュータ 音 音楽
DirectX
CoreAudio
ASIO
AudioTrack
このへんで
音楽的な発想をプログラムしやすい
Pdみたいな環境があったらいいな…
ファイル
QuickTime
AVAudioPlayer
SoundPlayer
SoundPool
libpdとは
● Peter Brinkmann先生がメイン開発者
○ Patchfield (Android版Rewireみたいなん)の作者でもある
● Pdをプログラム内に組み込む
○ 描画に関する機能は無し(Pdのnogui mode)
● Cでコンパイルできれば動作環境は不問
○ DSPのサポート手厚いのは、iOSとAndroid
○ MaxにないPdならではの特徴
Pd Max
libpd -
小文字らしい
ここでひとつサンプル
ゲームエンジン
プロジェクトにlibpdを組み込んだもの
内蔵してみた音楽的な発想:
● 効果音を16分刻みで揃えて鳴らす
→適当に操作してもリズミカルに
● フレーズキャプチャ
→フレーズ変化をゲーム化したい
でスケッチ中の
どうやって動いてるか
1. 自作のプログラムの中でPdが起動する
2. [send]や[receive]で値を通信
意外とシンプルやん
libpdのウリ
クロスプラットフォームな「サウンドエンジン」
動作環境やプログラミング言語の違いを越えて
サウンドまわりの機能をPdで書ける
libpd
PortAudio / OpenFrameworks
DirectSound ASIO CoreAudio AudioTrack OpenSL
Your App
Pure Data
C / C++ / C# / Obj-C / Java / Processing / Python
libpd
PortAudio / OpenFrameworks
DirectSound ASIO CoreAudio AudioTrack OpenSL
Your App
Pure Data
C / C++ / C# / Obj-C / Java / Processing / Python
クロスプラットフォームな「サウンドエンジン」
動作環境やプログラミング言語の違いを越えて
サウンドまわりの機能をPdで書けるlibpdの機能がすごいというか
libpdを色々な環境に対応させる取り組みがすごい
libpdのウリ
❖ 音楽をダイナミックに変化させたい
➢ サウンドエンジンを自作する必要あり
■ libpd: 細かいリアルタイム制御不要で高い柔軟性
(Pdそのものの素性の良さ...クセはあるけど)
libpdをモバイルアプリ制作に活かす
❖ 音楽関係の知り合いを巻き込みたい
➢ 制作環境をばらまくため可搬性が必要
■ libpd: Pure Data上で音楽データ制作
■ libpd: 開発・テスト環境がフリーなAndroidで動く
Main Developer
Sound Designer
TEST
Sound Designer
TEST
Sound Designer
TEST
libpdをモバイルアプリ制作に活かす
❖ ある程度は反応の速さ(レイテンシ)を気にする
➢ Androidのサウンド事情は結構悲惨
■ libpd: OpenSL ESに対応、しかも自動で最適化
Droidcon Italy 2014 slide: http://www.slideshare.net/rotxed/tales-legends-of-low-latency-audio-on-android
libpdをモバイルアプリ制作に活かす
おすすめ文献
“Making Musical Apps”
Peter Brinkmann直々に解説(英語)
20% Pd入門
20% RjDj入門
15% libpd入門
25% libpd on Android
20% libpd on iOS
Githubでサンプルコード公開
GPLはモバイルアプリと相性が悪い
iOS : App Storeの規約に適合せず
Android : Google Playで公開するには全ソースをGPL化
注意事項
Pd-extendedはGPLオブジェクトを含有
例: [expr], [expr~], [knob], [freeverb~], [route~], [atoi]
初期状態のlibpdにGPLオブジェクトは無いが
Pd側でパッチを仕込むときに使わないよう注意
おわり
http://tkrkapps.blogspot.jp/

Más contenido relacionado

La actualidad más candente

M5Stack用3G拡張モジュールの光と闇
M5Stack用3G拡張モジュールの光と闇M5Stack用3G拡張モジュールの光と闇
M5Stack用3G拡張モジュールの光と闇Kohei MATSUSHITA
 
深層学習と音響信号処理
深層学習と音響信号処理深層学習と音響信号処理
深層学習と音響信号処理Yuma Koizumi
 
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -Hironori Washizaki
 
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介Haruki Yamashita
 
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @MonospaceJason Cheng
 
Holographic Whisper - CHI2017 oral presentation by Yoichi Ochiai
Holographic Whisper - CHI2017 oral presentation by Yoichi OchiaiHolographic Whisper - CHI2017 oral presentation by Yoichi Ochiai
Holographic Whisper - CHI2017 oral presentation by Yoichi OchiaiYoichi Ochiai
 
Basic of Basics of Agile Development Returns
Basic of Basics of Agile Development ReturnsBasic of Basics of Agile Development Returns
Basic of Basics of Agile Development ReturnsNaoto Nishimura
 
音声コーパス設計と次世代音声研究に向けた提言
音声コーパス設計と次世代音声研究に向けた提言音声コーパス設計と次世代音声研究に向けた提言
音声コーパス設計と次世代音声研究に向けた提言Shinnosuke Takamichi
 
音声合成のコーパスをつくろう
音声合成のコーパスをつくろう音声合成のコーパスをつくろう
音声合成のコーパスをつくろうShinnosuke Takamichi
 
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜Tetsutaro Watanabe
 
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリットTokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリットMasashi Ito
 
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019Game Tools & Middleware Forum
 
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Tier_IV
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
QUICとNATと
QUICとNATとQUICとNATと
QUICとNATとYuya Rin
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージMori Ken
 
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]DeNA
 
複数話者WaveNetボコーダに関する調査
複数話者WaveNetボコーダに関する調査複数話者WaveNetボコーダに関する調査
複数話者WaveNetボコーダに関する調査Tomoki Hayashi
 
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜Shuichi Tsutsumi
 

La actualidad más candente (20)

M5Stack用3G拡張モジュールの光と闇
M5Stack用3G拡張モジュールの光と闇M5Stack用3G拡張モジュールの光と闇
M5Stack用3G拡張モジュールの光と闇
 
深層学習と音響信号処理
深層学習と音響信号処理深層学習と音響信号処理
深層学習と音響信号処理
 
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
 
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介
システム監視のアラート大量発生を抑えるZabbixトリガー「依存関係」機能の紹介
 
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace
突破困境:資安開源工具之應用分享_社群議程加強版 [2019/06/08] @Monospace
 
Holographic Whisper - CHI2017 oral presentation by Yoichi Ochiai
Holographic Whisper - CHI2017 oral presentation by Yoichi OchiaiHolographic Whisper - CHI2017 oral presentation by Yoichi Ochiai
Holographic Whisper - CHI2017 oral presentation by Yoichi Ochiai
 
Basic of Basics of Agile Development Returns
Basic of Basics of Agile Development ReturnsBasic of Basics of Agile Development Returns
Basic of Basics of Agile Development Returns
 
音声コーパス設計と次世代音声研究に向けた提言
音声コーパス設計と次世代音声研究に向けた提言音声コーパス設計と次世代音声研究に向けた提言
音声コーパス設計と次世代音声研究に向けた提言
 
音声合成のコーパスをつくろう
音声合成のコーパスをつくろう音声合成のコーパスをつくろう
音声合成のコーパスをつくろう
 
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
 
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリットTokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
 
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019
Game Server Services ではじめる サーバー開発運用しないゲーム開発 /GTMF2019
 
AARIのご紹介
AARIのご紹介AARIのご紹介
AARIのご紹介
 
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
QUICとNATと
QUICとNATとQUICとNATと
QUICとNATと
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
 
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
 
複数話者WaveNetボコーダに関する調査
複数話者WaveNetボコーダに関する調査複数話者WaveNetボコーダに関する調査
複数話者WaveNetボコーダに関する調査
 
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
 

Introducing libpd -Pdをアプリのサウンドエンジンに-