首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带SuperCollider的泛音

不带SuperCollider的泛音
EN

Stack Overflow用户
提问于 2015-08-06 06:01:12
回答 2查看 364关注 0票数 0

我想纯粹为了向midi乐器发送数据而使用Overtone。有没有在没有SuperCollider支持的情况下加载Overtone的快速方法?我知道可以通过使用overtone.studio.midi将midi支持添加到程序中,但我也对加载所有的帮助程序感兴趣,这些帮助程序使处理表示音乐的数据变得更容易。弄清楚哪些文件要加载,哪些文件要排除是一项耗时的任务,因此出现了这个问题。

EN

回答 2

Stack Overflow用户

发布于 2015-11-28 22:34:22

不,所有的Overtone都依赖于超级对撞机,你可以做一些破解,但这将是一个非常痛苦的。我推荐Steven Yi的Pink,他用Clojure实现了java声音,你可以通过javasound将clojure连接到midi设备。

https://github.com/kunstmusik/pink

票数 1
EN

Stack Overflow用户

发布于 2016-11-30 03:35:54

您可以使用overtone.core并获得许多studio功能,而无需实际连接到服务器。您不能定义或defsynth或任何会触发到SC服务器的OSC通信的东西,但您可以完全访问Overtone自己的OSC工具。您可以创建侦听器和处理程序。您还可以访问MIDI子系统和事件系统。

你应该能够用overtone.core做任何你想做的事情。以下所有代码都将在不运行(connect-external-server)或任何其他相关函数的情况下运行:

代码语言:javascript
复制
(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控制Sooperlooper over OSC。将MIDI事件发送到设备也非常简单。请参阅:https://github.com/overtone/overtone/wiki/MIDI#sending-midi-messages

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31843582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档