Twitter

データの流れる順番

Pdのデータの流れ方には揺るがない大前提があります。

  • データは上のオブジェクトから下につながったオブジェクトへ流れる。
  • オブジェクトの複数のアウトレットがある場合、右から左へ順に出力されていく。

その代わり、Pd独自の困惑するような仕様があります。それは、

  • 1つのアウトレットから複数にインレットに接続した場合、接続した順番で出力される。

この仕様は時にはトラブルの元になる場合があります。それは一見しただけではどこを先につないだのかがわからないからです。

data_order

data_order

このパッチの左上のBangボタンをクリックしてからPdコンソールウィンドウを見ると、

C: bang
B: bang
A: bang

と表示されています。これは右の[print C]から左の[print A]に順番にbangデータが送られたことを意味します。

次に右上のBangボタンをクリックしてからPdコンソールウィンドウを見てください。

A: bang
B: bang
C: bang

と表示されています。今度は左の[print A]から右の[print C]に順番にbangデータが送られています。

同じオブジェクトの配置なのですが、ラインをつなぐ順番が[print C]からか[print A]からかの違いがあったのです。

そこで、これを確実に右から左の順番にするには[trigger]オブジェクトを使います。

[trigger b b b]はどんなデータが入力されてもbangデータに変換して、右アウトレットから左アウトレットへ順番に出力します。メッセージボックスの[4 (をクリックしても出力されるのはbangデータです。引数の「b」はbangデータの「b」です。

入力された数値データを数値データとして出力するには[trigger f f f]とします。引数の「f」はfloat(数値データ)の「f」を意味します。

[trigger]は[t]と省略することができ、上記のオブジェクトも[t b b b]や[t f f f]と書き換えることができます。

text by sei matsumura