diff options
author | Chris Xiong <chirs241097@gmail.com> | 2021-01-07 20:34:34 +0800 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2021-01-07 20:34:34 +0800 |
commit | a4914ceb5c96e65b2923f2dcf414d7a7f7ccd92b (patch) | |
tree | c8395cc4ad2bf3f177917d4def67bea14d9d7f97 | |
parent | 9b5e38847c238587ab39ce01e2c0d2b94d7e2b0c (diff) | |
download | QMidiPlayer-a4914ceb5c96e65b2923f2dcf414d7a7f7ccd92b.tar.xz |
new_fluid_audio_driver2 doesn't work for any audio drivers available on Windows.
whoops.
another opportunity to inject my crappy code into fluidsynth though.
-rw-r--r-- | core/qmpmidioutfluid.cpp | 5 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpmainwindow.cpp | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/core/qmpmidioutfluid.cpp b/core/qmpmidioutfluid.cpp index 22f4aa2..621840e 100644 --- a/core/qmpmidioutfluid.cpp +++ b/core/qmpmidioutfluid.cpp @@ -85,6 +85,11 @@ void qmpMidiOutFluid::deviceInit() , this); if (!adriver) { + adriver = new_fluid_audio_driver(settings, synth); + output_level = 1e9 + 7; + } + if (!adriver) + { fputs("Error creating fluidsynth audio driver!", stderr); delete_fluid_synth(synth); synth = nullptr; diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index 1c825ee..1198559 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -379,7 +379,7 @@ void qmpMainWindow::switchTrack(QString s, bool interrupt) { player->playerThread(); if (settings->getOptionBool("Midi/WaitVoice") && player->isFinished()) - while (internalfluid->getOutputLevel() > -100) + while (internalfluid->getOutputLevel() > -100 && internalfluid->getPolyphone() > 0) std::this_thread::sleep_for(std::chrono::milliseconds(10)); }); #ifdef _WIN32 @@ -534,7 +534,7 @@ void qmpMainWindow::on_pbPlayPause_clicked() { player->playerThread(); if (settings->getOptionBool("Midi/WaitVoice") && player->isFinished()) - while (internalfluid->getOutputLevel() > -100) + while (internalfluid->getOutputLevel() > -100 && internalfluid->getPolyphone() > 0) std::this_thread::sleep_for(std::chrono::milliseconds(10)); }); #ifdef _WIN32 |