Воспроизвести звук, который издаст колебание / вибрация - PullRequest
0 голосов
/ 09 сентября 2010

У меня есть колебание: для каждого момента времени т у меня есть набор выборок .

Мне нужно воспроизвести звук этого колебания (вывод на динамики).

Кроссплатформенное решение C ++ (или Qt) является предпочтительным, решение для Windows также хорошо.

И, пожалуйста, помогите мне улучшить вопрос, если вы знаете, как ...

Ответы [ 2 ]

2 голосов
/ 09 сентября 2010

Вот пример использования Qt;http://diotavelli.net/PyQtWiki/Playing%20a%20sound%20with%20QtMultimedia

Используется QAudioOutput для воспроизведения звука PCM.

0 голосов
/ 09 сентября 2010

Вот код 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);

Довольно грязное решение, и я думаю, что оно имеет утечки памяти ... Но это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...