【问题标题】:How to play a note using a custom sample in overtone?如何在泛音中使用自定义样本演奏音符?
【发布时间】:2016-06-03 14:06:03
【问题描述】:

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

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

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

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

我看过一个例子——“如何在泛音中定义一个自定义乐器”here——看起来我应该为每个音符提供一个单独的样本。对吗?

【问题讨论】:

    标签: clojure overtone


    【解决方案1】:

    找到了一个答案(有点) - 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2022-08-21
      • 2023-03-18
      • 2017-03-13
      • 1970-01-01
      • 2011-12-22
      相关资源
      最近更新 更多