我正在研究学位课程,并使用球拍6.10编写了以下代码:
(require rsound)
(define (arpeggio n fs q) (if(eq? 0 n) (stop)
((signal-play (mysound fs))(sleep q)(stop)(arpeggio (- n 1) (+ fs 100) q))))
其中fs是递归遍历中更新的起始频率,q是时间偏移,n是播放的声音数。 mysound定义为:
(define mysound (network ()
[a <= sine-wave 500]
[out = a])
代码运行良好,但是在播放结束时出现以下错误:
; stream-time: arity mismatch;
; the expected number of arguments does not match the given number
; expected: 0
; given: 3
; [,bt for context]
即使我已经尝试过,bt也可以作为上下文,因为它说我真的不知道错误在哪里。该错误会导致在else子句中是否调用(停止)过程。
样本调用为(琶音10 500 0.1)
怎么回事?