SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなしpkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなしAkio OBATA
 
「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LT「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LTShimpeiIwamaru
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket buildMasaru Oki
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
自分的pkgsrcの課題
自分的pkgsrcの課題自分的pkgsrcの課題
自分的pkgsrcの課題Ryo ONODERA
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentookubo39
 
とある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理Ⅱとある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理ⅡMasami Ichikawa
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話雄也 日下部
 
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話雄也 日下部
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Masaru Oki
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSEFuminobu Takeyama
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...Kenichiro MATOHARA
 
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみたServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみたTaira Hajime
 

Tendances (20)

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

En vedette

2010 Honda Accord Crosstour Omaha Nebraska
2010 Honda Accord Crosstour Omaha Nebraska2010 Honda Accord Crosstour Omaha Nebraska
2010 Honda Accord Crosstour Omaha NebraskaHonda Cars of Bellevue
 
Universityof tokyo02032011tagumaoecd
Universityof tokyo02032011tagumaoecdUniversityof tokyo02032011tagumaoecd
Universityof tokyo02032011tagumaoecdDeborah Roseveare
 
La noticia de hoy 15 06 2012
La noticia de hoy 15 06 2012La noticia de hoy 15 06 2012
La noticia de hoy 15 06 2012megaradioexpress
 
2.3.open day8sep iscrib
2.3.open day8sep iscrib2.3.open day8sep iscrib
2.3.open day8sep iscribALTIC Altic
 
打造全功能型团队:核心团队建设之路 V2.0
打造全功能型团队:核心团队建设之路 V2.0打造全功能型团队:核心团队建设之路 V2.0
打造全功能型团队:核心团队建设之路 V2.0Michael Shieh
 
OpenStreetMap初級編
OpenStreetMap初級編OpenStreetMap初級編
OpenStreetMap初級編義治 蛭本
 
セグツリーイメージ
セグツリーイメージセグツリーイメージ
セグツリーイメージKazuma Mikami
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 

En vedette (12)

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

Similaire à Pd Kai#3 Startup Process

Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Tomoya Hibi
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話Akio OBATA
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidecosmo0920
 
Morinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothMorinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothAmuro Nishizawa
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 
20130315 abc firefox_os
20130315 abc firefox_os20130315 abc firefox_os
20130315 abc firefox_osTomoaki Konno
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話Akio OBATA
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]Mitsumasa Yamaga
 
サンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミングサンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミングYikei Lu
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGdaye001
 
Cygwin 1.7 の紹介
Cygwin 1.7 の紹介Cygwin 1.7 の紹介
Cygwin 1.7 の紹介fd0
 
最近の事とDebconf18に初発表してきた #debconf18
最近の事とDebconf18に初発表してきた #debconf18最近の事とDebconf18に初発表してきた #debconf18
最近の事とDebconf18に初発表してきた #debconf18Netwalker lab kapper
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりYuya Rin
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたHikari Morita
 

Similaire à Pd Kai#3 Startup Process (20)

Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slide
 
Morinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothMorinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetooth
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
20130315 abc firefox_os
20130315 abc firefox_os20130315 abc firefox_os
20130315 abc firefox_os
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
Datalab and colaboratory
Datalab and colaboratoryDatalab and colaboratory
Datalab and colaboratory
 
Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]
 
サンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミングサンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミング
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
 
Cygwin 1.7 の紹介
Cygwin 1.7 の紹介Cygwin 1.7 の紹介
Cygwin 1.7 の紹介
 
最近の事とDebconf18に初発表してきた #debconf18
最近の事とDebconf18に初発表してきた #debconf18最近の事とDebconf18に初発表してきた #debconf18
最近の事とDebconf18に初発表してきた #debconf18
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
Gulp ことはじめ
Gulp ことはじめGulp ことはじめ
Gulp ことはじめ
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみた
 

Plus de nagachika t

Make Ruby Differentiable
Make Ruby DifferentiableMake Ruby Differentiable
Make Ruby Differentiablenagachika t
 
All bugfixes are incompatibilities
All bugfixes are incompatibilitiesAll bugfixes are incompatibilities
All bugfixes are incompatibilitiesnagachika t
 
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter TuningInspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuningnagachika t
 
Functional Music Composition
Functional Music CompositionFunctional Music Composition
Functional Music Compositionnagachika t
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKnagachika t
 
Magellan on Google Cloud Platform
Magellan on Google Cloud PlatformMagellan on Google Cloud Platform
Magellan on Google Cloud Platformnagachika t
 
CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013nagachika t
 
CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014nagachika t
 
怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01nagachika t
 
Ruby on azure で game server service
Ruby on azure で game server serviceRuby on azure で game server service
Ruby on azure で game server servicenagachika t
 
怠惰なRubyistへの道
怠惰なRubyistへの道怠惰なRubyistへの道
怠惰なRubyistへの道nagachika t
 
Ruby Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案nagachika t
 
Ruby trunk changes 統計版
Ruby trunk changes 統計版Ruby trunk changes 統計版
Ruby trunk changes 統計版nagachika t
 
Pd Kai#2 Object Model
Pd Kai#2 Object ModelPd Kai#2 Object Model
Pd Kai#2 Object Modelnagachika t
 

Plus de nagachika t (14)

Make Ruby Differentiable
Make Ruby DifferentiableMake Ruby Differentiable
Make Ruby Differentiable
 
All bugfixes are incompatibilities
All bugfixes are incompatibilitiesAll bugfixes are incompatibilities
All bugfixes are incompatibilities
 
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter TuningInspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
 
Functional Music Composition
Functional Music CompositionFunctional Music Composition
Functional Music Composition
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Magellan on Google Cloud Platform
Magellan on Google Cloud PlatformMagellan on Google Cloud Platform
Magellan on Google Cloud Platform
 
CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013
 
CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014
 
怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01
 
Ruby on azure で game server service
Ruby on azure で game server serviceRuby on azure で game server service
Ruby on azure で game server service
 
怠惰なRubyistへの道
怠惰なRubyistへの道怠惰なRubyistへの道
怠惰なRubyistへの道
 
Ruby Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案
 
Ruby trunk changes 統計版
Ruby trunk changes 統計版Ruby trunk changes 統計版
Ruby trunk changes 統計版
 
Pd Kai#2 Object Model
Pd Kai#2 Object ModelPd Kai#2 Object Model
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