0

我想Overtone纯粹用于将数据发送到 midi 仪器。Overtone有没有没有支持的快速加载方法SuperCollider?我发现可以通过使用将 midi 支持添加到程序中overtone.studio.midi,但我也有兴趣加载所有使处理表示音乐的数据更容易的帮助程序。确定要加载哪些文件以及要排除哪些文件是一项耗时的任务,因此是个问题。

4

2 回答 2

1

不,所有的 Overtone 都依赖于 Supercollider,你可以做一些黑客攻击,但这将是一个非常痛苦的攻击。我建议您查看 Steven Yi 的 Pink,他使用 Clojure 实现了 java 声音,您可以通过 javasound 将 clojure 连接到 midi 设备。

https://github.com/kunstmusik/pink

于 2015-11-28T14:34:22.027 回答
0

您可以使用 overtone.core 并获得很多工作室功能,而无需实际连接到服务器。您不能定义或定义合成器或任何会触发与 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 回答