SonicPiアップデートによる修正

SonicPi v3.2.0とCh9サンプルコードの修正

SonicPiがv3.2.0にアップデート

SonicPiがv3.2.0にアップデートされたことで、見た目も少し変わりましたが、OSCのところにも大きな変更がありました(書籍執筆時点ではv3.1でした)。そのため書籍のサンプルコードを使っても音が出なくなってしまい、調べてみたところ、少し修正することで音を出すことができました。ここではその修正について、説明します。修正するのはProcessingとSonicPiの両方です。

そのまえに、SonicPiのOSCの2つの変更点と、どうやって修正するかを説明します。具体的な修正方法は後半にあります。

1,SonicPiのOSC受信ポートが、4560に変更になった。

v3.1までは「4559」だったのですが「4560」に番号が変わってしまいました。SonicPiで変更することができないので、OSC送信側となるProcessingのほうを修正します。


2,SonicPiのOSC受信情報に、詳細が加わった


SonicPiがOSCを受信すると「どこから来たのか」の情報がついてきます。v3.1までは”/osc/fromP5″という感じでシンプルでしたが、v3.2.0では”/osc:127.0.0.1:62963/fromP5″のように、詳細な情報(「127.0.0.1」がIPアドレスで「62963」がポート)が加わりました。しかもポートの「62963」は毎回変わります。

なぜ毎回変わるかもう少し細かく説明すると、ProcessingのOSCとSonicPiのOSCが接続を確立するとき、空いたポートがランダムに選ばれているためです。

これはSonicPiがさらに拡張できる可能性を示しています。例えば同じ「fromP5」でもどのPCから送られてきたかを見分けて演奏を変えるなど、複数でのセッションが簡単になりそうです。しかし、この場合は毎回変わるポート番号を正しく設定する必要があり、その方法が複雑になってしまいます。毎回決まったポート番号にできればいいのですが、まだやりかたがわかりません。

そこで今回は「どんなアドレスのどんなポートからきた”fromP5″でも受け取れる」ようにします。これはv3.1のときと同じ使い方です。

「どんなアドレスのどんなポートからきた◯◯でも」を判断する方法は「*(アスタリスク)」を使います。あいまい検索などで使われる方法で「ワイルドカード」といいます。

「/osc」と「/fromP5」が確実にわかっていてその間が不明なものは「/osc*/fromP5」となります。これで「/oscではじまり/fromP5でおわるどんなものでも」という意味にすることができます。

ちょっと長くなりましたが、次から具体的に修正していきます。


具体的な修正方法

修正1:Processingで、OSC送信ポートを4560に変更する

Processing側で「osc」タブの「oscOpen」関数に注目してください。ここで、SonicPiのOSCポートを指定しています。このポートを、4560に書き換えます。

修正2:SonicPiを修正

SonicPiでの修正は、OSC受信するとき「/oscではじまり/fromP5でおわるどんなものでも」を判別するため、「*(アスタリスク)」を1文字だけ追加します。わかりにくいので注意してください。

以上で修正は終わりです。

最後に、気がつくのが遅くなってしまって申し訳ありませんでした。

何か質問などありましたら久世までご連絡ください(shozo[at]kuze.jp ※[at]を@に変えてメールください)。