max for live を使ってableton LiveのmidiでProcessingをトリガーする


  1. Max for Live(以下m4l)のmax Midi effectを作成する。
  2. maxからudpsednオブジェクトを使って、Oscを出す。
  3. processingでoscP5というライブラリとその関連オブジェクトを使って、Oscを受信する。
  4. 受信したOSCを元に映像をトリガーする。

OSCを使ったmaxとprocessingの連携に関しては次の記事をまず読んでください。

max processing osc 連携

(1〜2) M4Lの中のパッチ

noteinオブジェクトを使ってnote numberを抜き取る

スクリーンショット 2016-03-22 8.53.39

noteinオブジェクトにMIDIを入力すると、3つの要素に分解して各outletから出力します。このoutletのうち、一番左からnote numberがでます。これを使用します。

この出力を、numberオブジェクトに入力すると数字が見えるのでわかりやすいでしょう。さらにこれを以下のように見た目(Appearance)の中のformatからMIDIに設定するとよりわかりやすくみえます。これは単に見た目が変わっただけで、あくまでデータの内容は数字であって(G#3)といった文字列になっているわけではありません。

スクリーンショット 2016-03-22 8.53.01

LIVEの指定のトラックにMIDIクリップを作成して、MIDIを出す

M4LをさしているトラックにMIDIクリップを作成してMIDIを出力してください。いつもどおりの作曲の時にやっている方法でやるだけです。

スクリーンショット 2016-03-22 9.21.12

udpsendオブジェクトを使ってデーター送る

スクリーンショット 2016-03-22 9.14.04

「udpsend IPアドレス ポート番号」をつくり、データを送ります。ここでは同じパソコン内の通信ですのでIPアドレスの場所には「localhost」とし、ポート番号はなんでもいいのですが「12000」としました。

ちゃんと送れているかUDP TesterでReceiverのPortを12000にして確認してください。出し方は以下画像。ここではしっかり68が受信できています。

スクリーンショット 2016-03-18 8.42.57

識別しやすいようにメッセージを加える

スクリーンショット 2016-03-22 9.37.12

processing側で受信した際に、一体どんなデータが来たのかわかるように、識別用のラベル(メッセージ)を加えます。OSCにおいては「/任意の文字列」というものを加えることでメッセージとして認識されます。

そのために、データの冒頭に文字列を加えるにはprependオブジェクトを使用します。「prepend 文字列」という形式で作成します。またこの追加する文字列は「set 文字列」というメッセージをinletに入力することで、変更できます。「set anymessage」というメッセージオブジェクトがそれです。

これで「/midi1 60」という形式のデータを送れるようになりました。

3〜4 Processing側で受信し描写

次のコードをプロセシング側に作成。これで受信したMIDI note numberを画面に表示してくれます。

今後の発展

m4lのからのデータをOSCを介してprocessingで受け取ることができるようになったので、あとはMIDIデータのうち、どのデータをどのように抽出するか、そしてprocessing側でどう映像に活用するか、という処理だけになります。

ではまた!

この投稿は役に立ちましたか? 役に立った 役に立たなかった 1 人中 1 人がこの 投稿 は役に立ったと言っています。

One comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

以下の数式は「スパム対策」です。空欄に正しい数字をいれてください。お手数をおかけします。 * Time limit is exhausted. Please reload the CAPTCHA.