Обертон без суперколлайдера

Я хочу использовать Overtone исключительно для целей отправки данных на MIDI-инструменты. Есть ли быстрый способ загрузки Overtone без SuperCollider служба поддержки? Я понял, что поддержку MIDI можно добавить в программу, используя overtone.studio.midiНо я также заинтересован в загрузке всех помощников, облегчающих работу с данными, представляющими музыку. Выяснение, какие файлы загружать, а какие исключать, является трудоемкой задачей, поэтому возникает вопрос.

2 ответа

Нет, все Overtone полагается на Supercollider, вы могли бы сделать несколько взломов, но это будет очень болезненным. Я бы порекомендовал проверить Pink от Steven Yi, он реализовал звук java с Clojure, где вы можете подключить clojure к устройствам midi через javasound.

https://github.com/kunstmusik/pink

Вы можете использовать overtone.core и использовать все функциональные возможности студии, не подключаясь к серверу. Вы не можете определить или отменить или что-либо, что могло бы инициировать любую связь OSC с сервером SC, но у вас есть полный доступ к собственным средствам OSC Overtone. Вы можете сделать слушателей и обработчиков. У вас также есть доступ к подсистеме 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
          )

Этот код управляет Sooperlooper через OSC на основе MIDI из моего Behringer FCB1010. Также очень просто отправлять MIDI-события на устройство. Смотрите: https://github.com/overtone/overtone/wiki/MIDI

Другие вопросы по тегам