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/

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