0

Overtone純粋に MIDI 楽器にデータを送信する目的で使用したいと考えています。サポートOvertoneなしでロードする簡単な方法はありますか? SuperColliderを使用して midi サポートをプログラムに追加できることがovertone.studio.midiわかりましたが、音楽を表すデータの操作を容易にするすべてのヘルパーをロードすることにも関心があります。どのファイルをロードし、どのファイルを除外するかを判断するのは時間のかかる作業です。

4

2 に答える 2

1

いいえ、Overtone はすべて Supercollider に依存しています。いくつかのハックを行うことはできますが、非常に苦痛な作業になるでしょう。Steven Yi の Pink をチェックすることをお勧めします。彼は Java サウンドを Clojure で実装しており、Clojure を javasound 経由で MIDI デバイスに接続できます。

https://github.com/kunstmusik/pink

于 2015-11-28T14:34:22.027 に答える
0

overtone.core を使用すると、実際にサーバーに接続しなくても多くのスタジオ機能を利用できます。definst や defsynth など、SC サーバーへの OSC 通信をトリガーするものは使用できませんが、Overtone 独自の OSC 機能に完全にアクセスできます。リスナーとハンドラーを作成できます。MIDI サブシステムとイベント システムにもアクセスできます。

overtone.core でやりたいことがすべてできるはずです。次のコードはすべて、(connect-external-server) またはその他の関連する関数を実行しなくても機能します。

(ns beatboxchad-live.midi
 [:require [overtone.core :refer :all]
  [beatboxchad-live.sooperlooper]
  ]
 )

(def fcb (midi-mk-full-device-key (midi-find-connected-device "mio")))
(def overtone-osc (osc-server 9960 "osc-overtone"))  
(defn loop-setting [loop-index setting value]
(osc-send engine 
        (format "/sl/%s/set" loop-index) 
        setting
        value
        )
    )

(def loop-ops
  {0 {:action "record"    :hit false}
   1 {:action "overdub"   :hit false}
   2 {:action "trigger"   :hit true}
   3 {:action "pause"     :hit true}
   4 {:action "reverse"   :hit true}
   }
  )


(on-event (conj fcb :note-on)
          (fn [e]
            (let [note (:note e)]
              (let [loop-index (int (/ note 10))
                    cmd (mod note 10)
                    loop-op (if (:hit (get loop-ops cmd))
                              "hit"
                              "down")
                    ]
                (beatboxchad-live.sooperlooper/loop-op 
                  loop-index
                  (:action (get loop-ops cmd))
                  loop-op


                  )
                )
              )
            )
          ::fcb-note-on
          )

(on-event (conj fcb :note-off)
          (fn [e]
            (let [note (:note e)]
              (let [loop-index (int (/ note 10))
                    cmd (mod note 10)
                    ]
                (if-not (:hit (get loop-ops cmd))
                  (beatboxchad-live.sooperlooper/loop-op 
                    loop-index
                    (:action (get loop-ops cmd))
                    "up"

                    )
                  )

                )
              )
            )
          ::fcb-note-off
          )

このコードは、Behringer FCB1010 からの MIDI に基づいて、OSC 経由で Sooperlooper を制御します。MIDI イベントをデバイスに送信するのも非常に簡単です。参照: https://github.com/overtone/overtone/wiki/MIDI#sending-midi-messages

于 2016-11-29T19:35:53.550 に答える