Qt - generowanie dźwięku

0

Chciałbym zaimplementować generowanie dźwięku w czasie rzeczywistym lub przynajmniej odtwarzanie dźwięku z bufora w pamięci.

Generalnie interesuje mnie odtwarzanie dźwięku mono 16-bit, różne częstotliwości próbkowania.

Próbowałem przykłady na tej stronie
http://stackoverflow.com/questions/4473608/how-to-play-sound-with-qt

Ten przykład z QSound działa, ale z tego, co czytałem, potrafi odtwarzać wyłącznie dźwięk z pliku, a ja chciałbym ze strumienia lub vector lub tablicy int*/char*, zależy, z czego się da.

Natomiast przykład z phonon, nawet po ograniczeniu do czynności związanych z dźwiękiem nie chce się skompilować, pokazuje się, że jest jakiś problem z plikami DLL, a mam standardowy Qt SDK pod Windows XP.

W Javie jest możliwe buforowanie i odtwarzanie dźwięku w czasie rzeczywistym. Czy da się podobnie zrobić w Qt?

Od biedy można generować plik .wav i odtwarzać go za pomocą QSound, ale to raczej kiepski pomysł.

Druga sprawa, czy Qt oferuje możliwość generowania i odtwarzania ścieżek MIDI? Jeżeli tak, to w jaki sposób?

0

Chodzi ci o moduł Qt Multimedia i klasę QAudioOutput.
Z QAudioOutput nie korzystałem, ale QAudioInput korzystałem i działało jak należy.
Musisz utworzyć klasę pochodną do QIODevice, która będzie dostarczać dane do odtwarzania.

0

Jeszcze znalazłem coś takiego, ale nie wiem, jak wypróbować.

http://www.qtcentre.org/threads/44014-How-to-play-decoded-audio-buf-using-QIODevice
http://qt-project.org/forums/viewthread/7679

Problem jest juz przy próbie otworzenia obiektu QAudioInput lub QAdioFormat.

Jak dopiszę #include<QAutioInput>, to nie widzi pliku.
Jak dopiszę #include<Qt/QAutioInput> lub #include<QtMultimedia/QAutioInput> to przy kompilacji są takie błędy:

mainwindow.obj:-1: błąd unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QAudioInput::~QAudioInput(void)" (_imp??1QAudioInput@@UAE@XZ) referenced in function "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ)
mainwindow.obj:-1: błąd unresolved external symbol "__declspec(dllimport) public: __thiscall QAudioFormat::~QAudioFormat(void)" (_imp??1QAudioFormat@@QAE@XZ) referenced in function "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ)
mainwindow.obj:-1: błąd unresolved external symbol "__declspec(dllimport) public: __thiscall QAudioInput::QAudioInput(class QAudioFormat const &,class QObject *)" (_imp??0QAudioInput@@QAE@ABVQAudioFormat@@PAVQObject@@@Z) referenced in function "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ)
mainwindow.obj:-1: błąd unresolved external symbol "__declspec(dllimport) public: __thiscall QAudioFormat::QAudioFormat(void)" (_imp??0QAudioFormat@@QAE@XZ) referenced in function "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ)
debug\AudioTest.exe:-1: błąd 4 unresolved externals

Co tu jeszcze jest nie tak?

0

Plik pro:QT += multimediaco jest wyraźnie napisane w pierwszym linku jaki ci dałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1