我在阅读了Racket中的rsound文档后编写了这段代码:
#lang racket
(provide (all-defined-out))
(require rsound)
(define (sunet)
(sine-wave 880))
(signal-play sunet)
(stop)
我在880 Hz频率上使用“正弦波”功能并将其存储到“sunet”功能中。然后我在它上面应用了“信号播放”功能,它将信号作为声音播放。我收到了这个错误:
application: not a procedure;
expected a procedure that can be applied to arguments
given: #<network/s>
arguments.:
880
>
“正弦波”不是一种功能而不是以频率为参数吗?
答案 0 :(得分:3)
我阅读了更多 rsound 的文档,并阅读了有关 networks 的内容。显然,您需要使用输入信号和输出信号创建一个网络,该输出信号可以显示为 signal-play 。
这就是我昨天需要的代码:
(define sunet
(network ()
[A5 <= sine-wave 880]
[out = A5]))
(signal-play sunet)
(sleep 3)
(stop)
用两个信号创建一个powerchord:
(define sunet
(network ()
[E2 <= sine-wave 82]
[B2 <= sine-wave 123]
[out = (+ E2 B2)]))
(signal-play sunet)
(sleep 3)
(stop)
所以,我刚刚回答了我自己的问题。
答案 1 :(得分:0)
这比我预期的要难。结果sine-wave
不是一个功能,而是一个网络。以下将发挥正弦波。
#lang racket
(require rsound)
(define s (network ()
[a <= sine-wave 880]
[out = a]))
(signal-play s)
我不知道为什么以下更简单的程序不起作用:
#lang racket
(require rsound)
(define s (network ()
[out = sine-wave 880]))
(signal-play s)