2015-08-05 5 views
0

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

ответ

1

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

https://github.com/kunstmusik/pink

0

Вы можете использовать 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