aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-10-24 19:42:04 +0300
committerWohlstand <admin@wohlnet.ru>2017-10-24 19:42:04 +0300
commit306ecba785a64fa111c1198b9b986ac3e98db619 (patch)
tree3a09f5e634cf64c228f5ccf90d106258cc4244c4
parenta89983b3c5b5e1024090b66f24b142e1138df2ce (diff)
downloadlibADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.tar.gz
libADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.tar.bz2
libADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.zip
Absolute time position now is known!
-rw-r--r--libADLMIDI-test.pro3
-rw-r--r--src/adlmidi_midiplay.cpp9
-rw-r--r--src/adlmidi_private.hpp3
3 files changed, 12 insertions, 3 deletions
diff --git a/libADLMIDI-test.pro b/libADLMIDI-test.pro
index 1d2806c..66432f4 100644
--- a/libADLMIDI-test.pro
+++ b/libADLMIDI-test.pro
@@ -13,7 +13,8 @@ INCLUDEPATH += $$PWD/src $$PWD/include
#LIBS += -Wl,-Bstatic -lSDL2 -Wl,-Bdynamic -lpthread -ldl
LIBS += -lSDL2 -lpthread -ldl
-DEFINES += DEBUG_TIME_CALCULATION
+#DEFINES += DEBUG_TIME_CALCULATION
+DEFINES += DEBUG_SHOW_AUDIO_TIMER
QMAKE_CFLAGS += -std=c90 -pedantic
QMAKE_CXXFLAGS += -std=c++98 -pedantic
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index 8742b3d..d1ee447 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -401,6 +401,13 @@ double MIDIplay::Tick(double s, double granularity)
{
//if(CurrentPositionNew.began)
CurrentPositionNew.wait -= s;
+ CurrentPositionNew.absTimePosition += s;
+
+ #ifdef DEBUG_SHOW_AUDIO_TIMER
+ std::fprintf(stdout, " \r");
+ std::fprintf(stdout, "Time position: %10f\r", CurrentPositionNew.absTimePosition);
+ std::fflush(stdout);
+ #endif
int antiFreezeCounter = 10000;//Limit 10000 loops to avoid freezing
while((CurrentPositionNew.wait <= granularity * 0.5) && (antiFreezeCounter > 0))
@@ -1227,7 +1234,7 @@ bool MIDIplay::ProcessEventsNew()
#ifdef DEBUG_TIME_CALCULATION
std::fprintf(stdout, " \r");
- std::fprintf(stdout, "Time: %10f\r", maxTime);
+ std::fprintf(stdout, "Time: %10f; Audio: %10f\r", maxTime, CurrentPositionNew.absTimePosition);
std::fflush(stdout);
#endif
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index c75dc59..75094d2 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -397,6 +397,7 @@ private:
bool began;
char padding[7];
double wait;
+ double absTimePosition;
struct TrackInfo
{
size_t ptr;
@@ -407,7 +408,7 @@ private:
TrackInfo(): ptr(0), delay(0), status(0), pos(NULL) {}
};
std::vector<TrackInfo> track;
- PositionNew(): began(false), wait(0.0), track()
+ PositionNew(): began(false), wait(0.0), absTimePosition(0.0), track()
{}
} CurrentPositionNew, LoopBeginPositionNew, trackBeginPositionNew;