summaryrefslogtreecommitdiffhomepage
path: root/MIDIPlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'MIDIPlayer.cpp')
-rw-r--r--MIDIPlayer.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/MIDIPlayer.cpp b/MIDIPlayer.cpp
index c7945d6..f2bba8c 100644
--- a/MIDIPlayer.cpp
+++ b/MIDIPlayer.cpp
@@ -1,12 +1,18 @@
#include "MIDIPlayer.h"
#include <signal.h>
+#include <fmt/format.h>
+#include <algorithm>
+#include <chrono>
#include <iostream>
+#include <thread>
namespace bp = boost::process;
namespace fs = std::filesystem;
+using namespace std::chrono_literals;
+
MIDIPlayer::MIDIPlayer(const std::filesystem::path& path):
m_child{},
m_dir{path},
@@ -24,7 +30,7 @@ void MIDIPlayer::start()
if (m_child.valid() && m_child.running()) {
stop();
} else {
- m_child = bp::child("aplaymidi -p24 locked_out_of_heaven.midi");//, bp::std_out > bp::null);
+ m_child = bp::child(fmt::format("aplaymidi -p24 \"{}\"", m_file).c_str());//, bp::std_out > bp::null);
}
}
@@ -51,6 +57,12 @@ bool MIDIPlayer::is_playing()
void MIDIPlayer::set_file(const std::string& filename)
{
m_file = filename;
+
+ if (is_playing()) {
+ stop();
+ std::this_thread::sleep_for(100ms);
+ start();
+ }
}
std::string MIDIPlayer::get_file()
@@ -71,6 +83,7 @@ std::vector<std::string> MIDIPlayer::get_filelist()
break;
}
}
+ std::sort(result.begin(), result.end());
return result;
}