Я хочу использовать Overtone
исключительно для отправки данных в миди-инструменты. Есть ли быстрый способ загрузить Overtone
без поддержки SuperCollider
? Я понял, что поддержка midi может быть добавлена в программу, используя overtone.studio.midi
, но я также заинтересован в загрузке всех помощников, которые облегчают работу с данными, представляющими музыку. Выяснение, какие файлы для загрузки и какие из них исключить - это трудоемкая задача, поэтому вопрос.Overtone without SuperCollider
ответ
Нет, все Overtone полагаются на Суперколлайдер, вы можете сделать некоторые взломы, но это будет очень болезненно. Я бы рекомендовал проверить Pink от Steven Yi, он реализовал java-звук с Clojure, где вы можете подключить clojure к MIDI-устройствам через javasound.
Вы можете использовать overtone.core и получить на много функциональных возможностей студии без фактического подключения к серверу. Вы не можете определить или defsynth или что-нибудь, что могло бы вызвать любую связь OSC с сервером SC, но у вас есть полный доступ к собственным средствам OSC Overtone. Вы можете создавать слушатели и обработчики. У вас также есть доступ к подсистеме MIDI и системе событий.
Вы должны быть в состоянии сделать все, что хотите, с помощью overtone.core. Весь следующий код будет работать без запуска (подключение-внешний-сервер) или любой из других смежных функций:
(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
)
Этот код управляет Sooperlooper над OSC на основе MIDI от моего Behringer FCB1010. Очень просто отправить MIDI-события на устройство. См .: https://github.com/overtone/overtone/wiki/MIDI#sending-midi-messages