aboutsummaryrefslogtreecommitdiff
path: root/utils/midiplay/adlmidiplay.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-11-01 20:53:42 +0300
committerWohlstand <admin@wohlnet.ru>2017-11-01 20:53:42 +0300
commit5177f65bab98b5b72bded7594af3680c1766bdb3 (patch)
tree315b3e3b82b48e73bcf4fd546ac2e18288dc6954 /utils/midiplay/adlmidiplay.cpp
parent39adce26ad639f180b3cb5742215e44c322bf015 (diff)
downloadlibADLMIDI-5177f65bab98b5b72bded7594af3680c1766bdb3.tar.gz
libADLMIDI-5177f65bab98b5b72bded7594af3680c1766bdb3.tar.bz2
libADLMIDI-5177f65bab98b5b72bded7594af3680c1766bdb3.zip
Added hooks and meta-info: title, copyright, track titles and markers
Diffstat (limited to 'utils/midiplay/adlmidiplay.cpp')
-rw-r--r--utils/midiplay/adlmidiplay.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/utils/midiplay/adlmidiplay.cpp b/utils/midiplay/adlmidiplay.cpp
index 8a94761..9719532 100644
--- a/utils/midiplay/adlmidiplay.cpp
+++ b/utils/midiplay/adlmidiplay.cpp
@@ -7,6 +7,7 @@
#include <cstdlib>
#include <cstring>
#include <deque>
+#include <cstdarg>
#include <signal.h>
#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>
@@ -83,6 +84,29 @@ static void sighandler(int dum)
stop = 1;
}
+
+static void debugPrint(void * /*userdata*/, const char *fmt, ...)
+{
+ char buffer[4096];
+ std::va_list args;
+ va_start(args, fmt);
+ int rc = std::vsnprintf(buffer, sizeof(buffer), fmt, args);
+ va_end(args);
+ if(rc > 0)
+ {
+ std::fprintf(stdout, " - Debug: %s\n", buffer);
+ std::fflush(stdout);
+ }
+}
+
+#ifdef DEBUG_TRACE_ALL_EVENTS
+static void debugPrintEvent(void * /*userdata*/, ADL_UInt8 type, ADL_UInt8 subtype, ADL_UInt8 channel, ADL_UInt8 * /*data*/, size_t len)
+{
+ std::fprintf(stdout, " - E: 0x%02X 0x%02X %02d (%d)\n", type, subtype, channel, (int)len);
+ std::fflush(stdout);
+}
+#endif
+
int main(int argc, char **argv)
{
std::fprintf(stdout, "==========================================\n"
@@ -168,6 +192,8 @@ int main(int argc, char **argv)
return 1;
}
+ adl_setDebugMessageHook(myDevice, debugPrint, NULL);
+
bool recordWave = false;
int loopEnabled = 1;
@@ -196,6 +222,10 @@ int main(int argc, char **argv)
//Turn loop on/off (for WAV recording loop must be disabled!)
adl_setLoopEnabled(myDevice, recordWave ? 0 : loopEnabled);
+ #ifdef DEBUG_TRACE_ALL_EVENTS
+ if(!recordWave)
+ adl_setRawEventHook(myDevice, debugPrintEvent, NULL);
+ #endif
std::fprintf(stdout, " - %s OPL3 Emulator in use\n", adl_emulatorName());
@@ -306,9 +336,11 @@ int main(int argc, char **argv)
if(got <= 0)
break;
+ #ifndef DEBUG_TRACE_ALL_EVENTS
std::fprintf(stdout, " \r");
std::fprintf(stdout, "Time position: %10f / %10f\r", adl_positionTell(myDevice), total);
std::fflush(stdout);
+ #endif
AudioBuffer_lock.Lock();
size_t pos = AudioBuffer.size();