播放振荡/振动会产生的声音

时间:2010-09-09 13:54:35

标签: windows audio physics

我有一个振荡:对于每个时刻 t ,我有一组样本

我需要播放这种振荡的声音(输出到扬声器)。

首选跨平台C ++(或Qt)解决方案,Windows解决方案也很好。

如果你知道怎么做,请帮助我改进这个问题......

2 个答案:

答案 0 :(得分:2)

以下是使用Qt的示例; http://diotavelli.net/PyQtWiki/Playing%20a%20sound%20with%20QtMultimedia

使用QAudioOutput来播放PCM音频。

答案 1 :(得分:0)

这是C ++ / Qt代码:

#include<math.h>
#include<QBuffer>
#include<QAudioFormat>
#include<QAudioOutput>
...
QAudioFormat format;
format.setChannels(1);
format.setFrequency(22050);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
QAudioOutput* output=new QAudioOutput(format);
QBuffer* buffer=new QBuffer();
QByteArray data;
for (int i=0;i<22050*2;i++)
{
    short value=(/*Volume:*/10000*sin(2*3.1415*/*Frequency:*/600*i/22050.0));
    data.append((char*)&value,2);
}
buffer->setData(data);
buffer->open(QIODevice::ReadOnly);
buffer->seek(0);
output->start(buffer);

相当脏的解决方案,我认为它有内存泄漏......但它有效!