Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 构建泛音项目_Clojure_Overtone - Fatal编程技术网

Clojure 构建泛音项目

Clojure 构建泛音项目,clojure,overtone,Clojure,Overtone,我刚刚开始泛音,但我想从一开始就让事情有点条理 project.clj: (defproject overtone-sketchbook "0.1.0-SNAPSHOT" :dependencies [[org.clojure/clojure "1.5.1"] [overtone "0.9.1"]]) (ns overtone-sketchbook.synths (:use [overtone.live])) (definst pluck-saw [

我刚刚开始泛音,但我想从一开始就让事情有点条理

project.clj:

(defproject overtone-sketchbook "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [overtone "0.9.1"]])
(ns overtone-sketchbook.synths
  (:use [overtone.live]))

(definst pluck-saw [f 800 d 3]
         (* (saw (+ 100 (* 200 (saw d))))
            (pluck (* (white-noise)
                      (env-gen (perc 0.001 2) :action FREE))
                   1 3 (/ 1 f))))
src/overtone\u sketchbook/synths.clj:

(defproject overtone-sketchbook "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [overtone "0.9.1"]])
(ns overtone-sketchbook.synths
  (:use [overtone.live]))

(definst pluck-saw [f 800 d 3]
         (* (saw (+ 100 (* 200 (saw d))))
            (pluck (* (white-noise)
                      (env-gen (perc 0.001 2) :action FREE))
                   1 3 (/ 1 f))))
答复第1次会议: 答复第2次会议:
>lein repl
nREPL服务器已在端口52100上启动
REPL-y 0.2.0
Clojure 1.5.1
单据:(此处为单据功能名称)
(在此处查找文件“名称的一部分”)
Source:(此处为源函数名)
Javadoc:(此处为Javadoc java对象或类)
退出:控制+D或(退出)或(退出)
用户=>(使用“泛音sketchbook.synths”)
-->加载泛音。。。
********************************************************** 
警告:JVM参数TieredStopAtLevel=1处于活动状态,可能
导致性能下降。这恰好是目前的情况
默认lein设置:
https://github.com/technomancy/leiningen/pull/1230
如果您不打算指定此JVM参数,可以
在project.clj文件或全局
通过添加键val ~/.lein/profiles.clj文件
:jvm选项^:替换[]
********************************************************** 
-->正在启动内部超级编译器服务器。。。
找到0个LADSPA插件
***错误:打开目录失败“/Users/ilya/Library/Application Support/supercellider/synthdefs”
设备数量:2台
0:“内置输入”
1:“内置输出”
“内置输入”输入设备
溪流:1
0频道2
“内置输出”输出设备
溪流:1
0频道2
SC_音频驱动程序:采样率=44100.000000,驱动程序块大小=512
-->正在连接到内部超级编译器服务器。。。
-->建立连接
_____                 __
/ __  /_  _____  _____/ /_____  ____  ___
/ / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
/ /_/ /| |/ /  __/ /  / /_/ /_/ / / / /  __/
\____/ |___/\___/_/   \__/\____/_/ /_/\___/
协作可编程音乐。v0.9.1
你好,伊利亚,愿算法之美今天从你的指尖倾泻而出。
无
用户=>拔锯
#泛音.studio.inst.inst{:name“pullsaw”,:params({:value#,:name“f”,:default 800.0,:rate:kr}{:value#,:name“d”,:default 3.0,:rate:kr}),:args(“f”“d”),:sdef{:name“overtone-sketchboo96d/pullsaw”,:常量[0.0.0 2.0 3.0 0 0 0.0 1.0 50.0 100.0.0.0 1 2-99],:4.0.0,:args(“f”“d”),:d”),:sdef“d”,:索引1 1},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],:volume#,:pan#,:n-chans 1}
用户=>(演示弹拨锯)
CompilerException java.lang.RuntimeException:无法解析符号:在此上下文中演示,正在编译:(无源路径:1:1)
用户=>(overtone.live/demo-pull-saw)
IllegalArgumentException不知道如何从以下位置创建ISeq:clojure.lang.Symbol clojure.lang.RT.seqFrom(RT.java:505)
user=>再见!
我错过了一些非常基本的东西吗?

试试:
(演示“泛音sketchbook.synths/Pulk saw)


我仍然会在你的代码中遇到错误,我不明白,但这会让你走得更远。

首先,如果你能让你的问题变得更简单、简洁,这样就可以很容易地找到可能的解决方案,这将非常有帮助

另外,感谢您尝试泛音-很抱歉,事情还没有立即弄清楚。这里有很多事情要做,所以请在路上问几个问题:-)

然而,看看你的两篇REPL摘录,很明显你还没有完全理解三件事:

  • 泛音如何使用Clojure的名称空间
  • 合成器是如何设计的
  • 如何触发合成器
让我简单地讨论一下其中的每一个,希望它们能对正在发生的事情有所帮助

首先,泛音对Clojure命名空间的使用。当您
使用
泛音.live
时,泛音正在做的是将泛音的所有公共API函数导入到您当前的命名空间中。这意味着一旦此操作完成,您将可以使用所有公共API,即
demo
defsynch
sin osc

在第二个REPL示例中,您尝试做的第一件事是:
(demo-overtone-sketchbook.synths/pulk-saw)
这将不起作用,因为Clojure还不知道什么是
demo
,也不知道您的命名空间
overtone sketchbook.synth
。要让它了解这些,您需要
使用
需要
命名空间。有关更多信息,请阅读Clojure的
ns

其次,泛音合成器是通过调用表示合成器(称为ugens)部分的函数来设计的。ugens的示例有
saw
sin osc
lpf
。泛音备忘表中有可用ugens的完整列表:

demo
是一个宏,允许您传入(部分)synthdef并播放:

  • (演示(sin osc))
  • (演示(sin osc 440))
请注意,ugen是允许您传递参数以修改其行为的函数(如440 hz参数到
sin osc
ugen)

还需要注意的是,ugens不能(目前)与synth一样对待。ugen是synth的一个组件,synth是ugens的一棵树。这就把我引向了第三个问题——你试图
demo
Pulk saw
synth。这是一个已经设计好的合成器,可能只会被触发。要触发synth,只需将其作为函数调用:

(拔锯)

您还可以将参数(如果设计允许)传递给synth触发器函数

因此,总结如下:

  • 使用Clojure的
    ns
    宏加载外部名称p