使用rsound播放正弦波信号

问题描述 投票:4回答:2

我在阅读了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
> 

“正弦波”不是一个功能,它不是以频率为参数吗?

audio lisp racket
2个回答
3
投票

我阅读了更多关于rsound的文档并阅读了有关网络的内容。显然你需要创建一个带有输入信号和输出信号的网络,这些信号会发出信号播放之类的信号。

这将是我昨天需要的代码:

(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)

所以,我刚刚回答了我自己的问题。


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)
© www.soinside.com 2019 - 2024. All rights reserved.