首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rsound播放正弦波信号

使用rsound播放正弦波信号
EN

Stack Overflow用户
提问于 2016-01-19 03:17:45
回答 2查看 163关注 0票数 4

在阅读了Racket中的rsound文档后,我编写了以下代码:

代码语言:javascript
复制
#lang racket
(provide (all-defined-out))
(require rsound)


(define (sunet)
  (sine-wave 880))

(signal-play sunet)

(stop)

我在880 Hz的频率上使用了“正弦波”函数,并将其存储在函数"sunet“中。然后我对它应用了"signal-play“功能,它将信号作为声音播放。我得到了这个错误:

代码语言:javascript
复制
application: not a procedure;
 expected a procedure that can be applied to arguments
  given: #<network/s>
  arguments.:
   880
> 

“正弦波”不是一个函数吗?它不是以频率作为参数吗?

EN

回答 2

Stack Overflow用户

发布于 2016-01-20 01:36:02

我阅读了更多关于rsound的文档和关于网络的知识。显然,您需要创建一个带有输入信号和输出信号的网络,该网络可以输出到signal-play之类的东西。

这是我昨天需要的代码:

代码语言:javascript
复制
(define sunet
  (network ()
       [A5 <= sine-wave 880]
       [out = A5]))

(signal-play sunet)

(sleep 3)

(stop)

并使用两个信号来创建powerchord:

代码语言:javascript
复制
(define sunet
  (network ()
       [E2 <= sine-wave 82]
       [B2 <= sine-wave 123]
       [out = (+ E2 B2)]))
(signal-play sunet)
(sleep 3)
(stop)

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

票数 3
EN

Stack Overflow用户

发布于 2016-01-20 21:38:47

这比我预想的要难。事实证明sine-wave不是一个函数,而是一个网络。下面将播放一个正弦波。

代码语言:javascript
复制
    #lang racket
    (require rsound)

    (define s (network ()
                 [a <= sine-wave 880]
                 [out = a]))
    (signal-play s)

我不知道为什么下面这个更简单的程序不能工作:

代码语言:javascript
复制
    #lang racket
    (require rsound)

    (define s (network ()
                 [out = sine-wave 880]))
    (signal-play s)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34862373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档