diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-08-04 19:15:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-08-04 19:15:41 +0000 |
| commit | c878d3ca598a611cc066b027a4d4a317eed7c081 (patch) | |
| tree | c9a4e468ec0bf27abf1674fbbbe4b6bfc836d399 /src/plugins/Input/wildmidi/wildmidihelper.cpp | |
| parent | b9cc3f286ceae3972afd918b04474b162032c100 (diff) | |
| download | qmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.tar.gz qmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.tar.bz2 qmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.zip | |
midi plugin: added some improvements (still disabled)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1817 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wildmidi/wildmidihelper.cpp')
| -rw-r--r-- | src/plugins/Input/wildmidi/wildmidihelper.cpp | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/src/plugins/Input/wildmidi/wildmidihelper.cpp b/src/plugins/Input/wildmidi/wildmidihelper.cpp index f5cb11fc1..c52c36b8d 100644 --- a/src/plugins/Input/wildmidi/wildmidihelper.cpp +++ b/src/plugins/Input/wildmidi/wildmidihelper.cpp @@ -19,9 +19,11 @@ ***************************************************************************/ #include <QApplication> +#include <QSettings> extern "C"{ #include <wildmidi_lib.h> } +#include <qmmp/qmmp.h> #include "wildmidihelper.h" WildMidiHelper *WildMidiHelper::m_instance = 0; @@ -30,6 +32,7 @@ WildMidiHelper::WildMidiHelper(QObject *parent) : QObject(parent) { m_inited = false; + m_sample_rate = 0; } WildMidiHelper::~WildMidiHelper() @@ -41,17 +44,69 @@ WildMidiHelper::~WildMidiHelper() bool WildMidiHelper::initialize() { + m_mutex.lock(); if(m_inited) + { + m_mutex.unlock(); return true; - if (WildMidi_Init ("/etc/timidity/timidity.cfg", 48000, 0) < 0) + } + + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Midi"); + unsigned short int mixer_options = 0; + QString conf_path = settings.value("conf_path", "/etc/timidity/timidity.cfg").toString(); + unsigned short int sample_rate = settings.value("sample_rate", 44100).toInt(); + if(settings.value("enhanced_resampling", false).toBool()) + mixer_options |= WM_MO_ENHANCED_RESAMPLING; + if(settings.value("reverberation", false).toBool()) + mixer_options |= WM_MO_REVERB; + settings.endGroup(); + + m_sample_rate = sample_rate; + if (WildMidi_Init (qPrintable(conf_path), sample_rate, mixer_options) < 0) { qWarning("WildMidiHelper: unable to initialize WildMidi library"); + m_mutex.unlock(); return false; } m_inited = true; + m_mutex.unlock(); return true; } +void WildMidiHelper::readSettings() +{ + m_mutex.lock(); + if(!m_ptrs.isEmpty()) + { + m_mutex.unlock(); + return; + } + if(m_inited) + WildMidi_Shutdown(); + m_inited = false; + m_mutex.unlock(); + initialize(); +} + +void WildMidiHelper::addPtr(void *t) +{ + m_mutex.lock(); + m_ptrs.append(t); + m_mutex.unlock(); +} + +void WildMidiHelper::removePtr(void *t) +{ + m_mutex.lock(); + m_ptrs.removeAll(t); + m_mutex.unlock(); +} + +quint32 WildMidiHelper::sampleRate() +{ + return m_sample_rate; +} WildMidiHelper *WildMidiHelper::instance() { |
