使用rsound播放正弦波信号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用rsound播放正弦波信号相关的知识,希望对你有一定的参考价值。
我在阅读了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
>
“正弦波”不是一个功能,它不是以频率为参数吗?
答案
我阅读了更多关于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)
所以,我刚刚回答了我自己的问题。
另一答案
这比我想象的要难。原来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)
以上是关于使用rsound播放正弦波信号的主要内容,如果未能解决你的问题,请参考以下文章