diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-10-24 19:42:04 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-10-24 19:42:04 +0300 |
commit | 306ecba785a64fa111c1198b9b986ac3e98db619 (patch) | |
tree | 3a09f5e634cf64c228f5ccf90d106258cc4244c4 | |
parent | a89983b3c5b5e1024090b66f24b142e1138df2ce (diff) | |
download | libADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.tar.gz libADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.tar.bz2 libADLMIDI-306ecba785a64fa111c1198b9b986ac3e98db619.zip |
Absolute time position now is known!
-rw-r--r-- | libADLMIDI-test.pro | 3 | ||||
-rw-r--r-- | src/adlmidi_midiplay.cpp | 9 | ||||
-rw-r--r-- | src/adlmidi_private.hpp | 3 |
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; |