在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上生成音调/正弦波的简单方法? (红宝石会很好)的主要内容,如果未能解决你的问题,请参考以下文章