在mac上生成音调/正弦波的简单方法? (红宝石会很好)

Posted

技术标签:

【中文标题】在mac上生成音调/正弦波的简单方法? (红宝石会很好)【英文标题】:A simple way to generate tones / sine waves on mac? (ruby would be nice) 【发布时间】:2009-10-19 05:14:23 【问题描述】:

我正在编写一个涉及播放正弦波和正弦波组合的程序...它必须在 Mac 上运行,我正在寻找一个我可以使用的简单 API。我对 ObjC、C、C++、Ruby、Python 等持开放态度。我不在乎什么语言,只要它只是几行代码。但是Ruby会很好:-)

在 Linux 上,您可以写入 /dev/dsp、/dev/sound 等,但不能在 mac 上。我知道如何生成正弦波,但问题是将我创建的 PCM 样本传输到音频硬件。我知道 /Developer/Examples/CoreAudio/SimpleSDK/DefaultOutputUnit 中的示例代码,但它是数百行荒谬的 Core Audio / AudioUnit 代码,我想要一些简单的东西。

【问题讨论】:

【参考方案1】:

一种方法是使用PyAudio

import pyaudio, array, math

p = pyaudio.PyAudio()
stream = p.open(rate=44100, channels=1, format=pyaudio.paFloat32, output=True)
stream.write(array.array('f',
    (.25 * math.sin(i / 10.) for i in range(44100))).tostring())
stream.close()
p.terminate()

不是很干净的代码,但它可以工作

PyAudio 不是标准的,但是可以通过 easy_install 获得(我用的是 python2.5)

【讨论】:

看来我也可以直接在 ObjC 应用程序中使用 PortAudio。【参考方案2】:

您可以将 PCM 转储到磁盘上的波形文件并使用 /usr/bin/afplay 这是 OSX 上的标准二进制文件。

【讨论】:

关于磁盘速度和空间的事情。将其保存在 RAM 中。【参考方案3】:

编辑: Bloopsaphone!

根据您的需要,CSound可能值得研究,尽管它可能与您的想法不完全一致。

【讨论】:

以上是关于在mac上生成音调/正弦波的简单方法? (红宝石会很好)的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中生成音调而不冻结线程?

方波转成锯齿波和三角波的原理???

用于拟合正弦波的神经网络

傅里叶变换推导

急求正弦波转为方波的方法(利用单片机测1Hz~3MHz的正弦波)

怎么把1K~10K的方波信号变换成三角波、锯齿波、正弦波?可以提供电路图的最好。