SlideShare a Scribd company logo
PureData
Start-up process
@PdKai #3
id:nagachika
1
Pd の 起動プロセス
Mac OS X(Linux 等その他の Unix系も多分一緒)
/Application/Pd-extended.app/Contents/MacOS/Pd-extended
実は Tcl 埋め込み(GUI)
GUIから起動する場合(sys_startfromgui)
(Linux 等では pd-gui)
/Application/Pd-extended.app/Contents/Resources/bin/pd
通常の pd プロセス
アプリとして起動の時はGUIの子プロセスと
して起動
ex) pd -guiport 5600
2
• アプリケーションとして(GUIから)起動
• まず MacOS/Pd-extended (pd-gui) が起動(t_tkcmd.c sys_startfromgui))
• Resources/bin/pd -guiport 5600 のように pd が fork+exec される
• pd → gui の方向にソケット接続して通信するみたい
GUI
pd
ポートは GUI のほうが開いて待ってる。
ただし最初に接続してきた1クライアントしか
相手にしていない
fork
(-guiport 5600)
connect
3
• pd から起動(GUIあり版)
• Resources/bin/pd を起動(-nogui はつけない)
• -open, -send などの起動時にあれこれするオプションは無効
• pd → gui → pd と1段多くプロセスの親子関係ができる
• pd ← gui ← pd の方向にソケット接続して通信するみたい
ただし最初の pd ← gui のソケットは繋げるだけ繋げて放置される
GUI
pd
ここのソケット通信は使われてないっぽい。
fork
(-guiport 5600)
connect
pd
fork
(u_main.tk 5400)
connect
おそらく主な処理はこちらが担当
4
• pd から起動(GUIなし版)
• Resources/bin/pd -nogui で起動
• -open, -send などの起動時にあれこれするオプションが使える
• GUI がいないのでそのままでは操作できないので、-open や -send
で netreceive オブジェクトを貼った canvas を作って操作
• スクリプトから操作するにはこの方法しかない(PureData 自体を弄
らなければ)
pd
5
• Windows(適当)
• GUI は受信ソケットは作らずに接続するようになってる
• おそらくは pd が親で GUI(tcl)を子として起動
• pd ← gui ← pd の方向にソケット接続して通信するみたい
GUI
GUI の処理をみると MSW の時は GUI→pd の
接続をするようになっている。
Mac OS X でもこの構成だと楽なのに…
pd
fork connect
6
外部から操作
• GUI のとりかえ
• -guicmd で GUI のコマンドラインを置き換えできる
• しかし g_canvas 等は tk のコマンドを直に書いてる(tk にべったり依存)
• 抽象化レイヤを作りたい。そこそこ手を入れないといけない。
• -nogui で起動して netreceive 経由で弄るという手も
• Ruby/PureData(GUl 起動してから操作もできる)
• GUI 関係のメッセージは抑制されてしまうから表示系は断念
• Array(Table)等はだめだけどGEMは別口で画面を開いてるかも(未確認)
• エラー(オブジェクト名間違いなど)の検出ができない
7
netreceive
• netreceive <port> <udp> <old>
• <port> listen するポート番号
• <udp> 0:TCP or 1: UDP
• <old> “old” ならば Pd アプリケーショ
ン自体にメッセージが送信できる(セ
キュリティの観点から obsolete にし
ているらしい)
8
message
• pd <msg> <args>...;
• PureData アプリケーションへのmessage
• pd filename <name> <dir>; で canvas に命名
• #N canvas <xpos> <ypos> <xsize> <ysize> <font>;
• xpos/ypos canvas ウィンドウの位置
• xsize/ysize ウィンドウのサイズ
• font フォントのポイントサイズ
9
message
• pd-<canvas名> <message> <args>... ;
• canvas 毎の message
• obj - オブジェクト作成
• obj <xpos> <ypos> <class> <args>...
• text - コメントオブジェクト作成
• msg - メッセージオブジェクト作成
• connect - オブジェクト間の接続
10

More Related Content

PDF
Raspberry Pi + Go で IoT した話
PPTX
RgGen ご紹介
PDF
Rubyで実はwritev(2) が使われているはなし
PDF
20110205.linux 0.01
PPTX
OSCによるソフトウェア連携
PDF
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
PDF
140607 lib o-mini_con-ryoon
Raspberry Pi + Go で IoT した話
RgGen ご紹介
Rubyで実はwritev(2) が使われているはなし
20110205.linux 0.01
OSCによるソフトウェア連携
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
140607 lib o-mini_con-ryoon

What's hot (20)

PDF
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
PPTX
「Dockerはいいぞ」 for Laboratory LT
PDF
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
PDF
Lagopus, raw socket build
PDF
HaskellではじめるCortex-M3組込みプログラミング
PDF
Blenderde Qr Code
PDF
Hudson using Groovy #jggug
PDF
自分的pkgsrcの課題
PDF
NanoStrand
PDF
griffon plugin を 実際に作ってみよう #jggug
PDF
Rust-DPDK
PDF
Bossan dentoo
PDF
とある帽子の大蛇料理Ⅱ
PDF
GoでEPC作って本番運用している話
PDF
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
PDF
Lagopus as open flow hybrid switch 実践編
PDF
Raspberry Piにdiskless modeのalpine linuxを導入してみる
PDF
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
ODP
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
PDF
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
「Dockerはいいぞ」 for Laboratory LT
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
Lagopus, raw socket build
HaskellではじめるCortex-M3組込みプログラミング
Blenderde Qr Code
Hudson using Groovy #jggug
自分的pkgsrcの課題
NanoStrand
griffon plugin を 実際に作ってみよう #jggug
Rust-DPDK
Bossan dentoo
とある帽子の大蛇料理Ⅱ
GoでEPC作って本番運用している話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
Lagopus as open flow hybrid switch 実践編
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
Ad

Viewers also liked (12)

PPTX
Kwik start
PDF
2010 Honda Accord Crosstour Omaha Nebraska
PPT
Universityof tokyo02032011tagumaoecd
PPTX
Linux
PPTX
Falando de MySQL
PDF
La noticia de hoy 15 06 2012
PDF
2.3.open day8sep iscrib
PPT
打造全功能型团队:核心团队建设之路 V2.0
PDF
Puredataの基礎
PDF
OpenStreetMap初級編
PDF
セグツリーイメージ
PDF
Re永続データ構造が分からない人のためのスライド
Kwik start
2010 Honda Accord Crosstour Omaha Nebraska
Universityof tokyo02032011tagumaoecd
Linux
Falando de MySQL
La noticia de hoy 15 06 2012
2.3.open day8sep iscrib
打造全功能型团队:核心团队建设之路 V2.0
Puredataの基礎
OpenStreetMap初級編
セグツリーイメージ
Re永続データ構造が分からない人のためのスライド
Ad

More from nagachika t (14)

PDF
Make Ruby Differentiable
PDF
All bugfixes are incompatibilities
PDF
Inspection of CloudML Hyper Parameter Tuning
PDF
Functional Music Composition
PDF
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
PDF
Magellan on Google Cloud Platform
PDF
CRuby Committers Who's Who in 2013
PDF
CRuby_Committers_Whos_Who_in_2014
PDF
怠惰なRubyistへの道 fukuoka rubykaigi01
PPTX
Ruby on azure で game server service
PDF
怠惰なRubyistへの道
PDF
Ruby Kaja のご提案
PDF
Ruby trunk changes 統計版
PDF
Pd Kai#2 Object Model
Make Ruby Differentiable
All bugfixes are incompatibilities
Inspection of CloudML Hyper Parameter Tuning
Functional Music Composition
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
Magellan on Google Cloud Platform
CRuby Committers Who's Who in 2013
CRuby_Committers_Whos_Who_in_2014
怠惰なRubyistへの道 fukuoka rubykaigi01
Ruby on azure で game server service
怠惰なRubyistへの道
Ruby Kaja のご提案
Ruby trunk changes 統計版
Pd Kai#2 Object Model

Pd Kai#3 Startup Process

  • 2. Pd の 起動プロセス Mac OS X(Linux 等その他の Unix系も多分一緒) /Application/Pd-extended.app/Contents/MacOS/Pd-extended 実は Tcl 埋め込み(GUI) GUIから起動する場合(sys_startfromgui) (Linux 等では pd-gui) /Application/Pd-extended.app/Contents/Resources/bin/pd 通常の pd プロセス アプリとして起動の時はGUIの子プロセスと して起動 ex) pd -guiport 5600 2
  • 3. • アプリケーションとして(GUIから)起動 • まず MacOS/Pd-extended (pd-gui) が起動(t_tkcmd.c sys_startfromgui)) • Resources/bin/pd -guiport 5600 のように pd が fork+exec される • pd → gui の方向にソケット接続して通信するみたい GUI pd ポートは GUI のほうが開いて待ってる。 ただし最初に接続してきた1クライアントしか 相手にしていない fork (-guiport 5600) connect 3
  • 4. • pd から起動(GUIあり版) • Resources/bin/pd を起動(-nogui はつけない) • -open, -send などの起動時にあれこれするオプションは無効 • pd → gui → pd と1段多くプロセスの親子関係ができる • pd ← gui ← pd の方向にソケット接続して通信するみたい ただし最初の pd ← gui のソケットは繋げるだけ繋げて放置される GUI pd ここのソケット通信は使われてないっぽい。 fork (-guiport 5600) connect pd fork (u_main.tk 5400) connect おそらく主な処理はこちらが担当 4
  • 5. • pd から起動(GUIなし版) • Resources/bin/pd -nogui で起動 • -open, -send などの起動時にあれこれするオプションが使える • GUI がいないのでそのままでは操作できないので、-open や -send で netreceive オブジェクトを貼った canvas を作って操作 • スクリプトから操作するにはこの方法しかない(PureData 自体を弄 らなければ) pd 5
  • 6. • Windows(適当) • GUI は受信ソケットは作らずに接続するようになってる • おそらくは pd が親で GUI(tcl)を子として起動 • pd ← gui ← pd の方向にソケット接続して通信するみたい GUI GUI の処理をみると MSW の時は GUI→pd の 接続をするようになっている。 Mac OS X でもこの構成だと楽なのに… pd fork connect 6
  • 7. 外部から操作 • GUI のとりかえ • -guicmd で GUI のコマンドラインを置き換えできる • しかし g_canvas 等は tk のコマンドを直に書いてる(tk にべったり依存) • 抽象化レイヤを作りたい。そこそこ手を入れないといけない。 • -nogui で起動して netreceive 経由で弄るという手も • Ruby/PureData(GUl 起動してから操作もできる) • GUI 関係のメッセージは抑制されてしまうから表示系は断念 • Array(Table)等はだめだけどGEMは別口で画面を開いてるかも(未確認) • エラー(オブジェクト名間違いなど)の検出ができない 7
  • 8. netreceive • netreceive <port> <udp> <old> • <port> listen するポート番号 • <udp> 0:TCP or 1: UDP • <old> “old” ならば Pd アプリケーショ ン自体にメッセージが送信できる(セ キュリティの観点から obsolete にし ているらしい) 8
  • 9. message • pd <msg> <args>...; • PureData アプリケーションへのmessage • pd filename <name> <dir>; で canvas に命名 • #N canvas <xpos> <ypos> <xsize> <ysize> <font>; • xpos/ypos canvas ウィンドウの位置 • xsize/ysize ウィンドウのサイズ • font フォントのポイントサイズ 9
  • 10. message • pd-<canvas名> <message> <args>... ; • canvas 毎の message • obj - オブジェクト作成 • obj <xpos> <ypos> <class> <args>... • text - コメントオブジェクト作成 • msg - メッセージオブジェクト作成 • connect - オブジェクト間の接続 10