1

如何使用自定义样本以泛音演奏音符?

例如,您可以使用预定义的钢琴样本弹奏一个音符,(piano (note :C4))但我如何对使用样本或加载样本加载的自定义样本执行相同的操作?

换句话说:假设我有(def my-piano (load-sample "/path/to/my/piano_sample.wav"))并且想要使用它而不是预定义的钢琴乐器。

我的理解是,我需要定义一种新的乐器,将音符或频率作为参数。问题是如何定义这种工具。scaled-play-buf 和 play-buf 都不将频率作为参数。

我在这里看到了一个示例——“如何在泛音中定义自定义乐器” ——看起来我应该为每个音符提供一个单独的样本。那是对的吗?

4

1 回答 1

0

找到了答案(有点) - scaled-play-buf 中的 :rate 参数可用于达到预期的效果(好吧,实际上最好与其他人结合使用,尤其是如果你想用你的乐器演奏多个八度音阶) :

;; define sample and instrument, rate is the key here
(def piano (sample "~/Music/Samples/mypiano.wav"))
(definst i-piano
                [note 60 level 1 rate 1 loop? 0 attack 0 decay 1 sustain 1 release 0.1 curve -4 gate 1]
                (let [env (env-gen (adsr attack decay sustain release level curve)
                            :gate gate
                            :action FREE)]
                  (scaled-play-buf 1 piano :rate rate :level level :loop loop? :action FREE)))

;; try it
(i-piano :rate 1) ; original note
(i-piano :rate 1.2)
(i-piano :rate 0.7)
于 2016-03-06T07:43:35.500 回答