summaryrefslogtreecommitdiff
path: root/muse/al/pos.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse/al/pos.cpp')
-rw-r--r--muse/al/pos.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/muse/al/pos.cpp b/muse/al/pos.cpp
index 8e9fcf87..f8418a00 100644
--- a/muse/al/pos.cpp
+++ b/muse/al/pos.cpp
@@ -498,7 +498,7 @@ bool PosLen::operator==(const PosLen& pl) const {
if(type()==TICKS)
return (_lenTick==pl._lenTick && Pos::operator==((const Pos&)pl));
else
- return (_lenFrame==pl._lenFrame && Pos::operator==((const Pos&)pl));
+ return (_lenFrame==pl._lenFrame && Pos::operator==((const Pos&)pl));
}
//---------------------------------------------------------
@@ -516,6 +516,7 @@ void Pos::mbt(int* bar, int* beat, int* tk) const
void Pos::msf(int* min, int* sec, int* fr, int* subFrame) const
{
+#if 0
//double has been replaced by float because it prevents (mysteriously)
//from a segfault that occurs at the launching of muse
/*double*/ float time = double(frame()) / double(AL::sampleRate);
@@ -540,6 +541,30 @@ void Pos::msf(int* min, int* sec, int* fr, int* subFrame) const
}
*fr = int(rest);
*subFrame = int((rest- *fr)*100);
+#else
+ // for further testing:
+
+ double time = double(frame()) / double(AL::sampleRate);
+ *min = int(time) / 60;
+ *sec = int(time) % 60;
+ double rest = time - ((*min) * 60 + (*sec));
+ switch(AL::mtcType) {
+ case 0: // 24 frames sec
+ rest *= 24;
+ break;
+ case 1: // 25
+ rest *= 25;
+ break;
+ case 2: // 30 drop frame
+ rest *= 30;
+ break;
+ case 3: // 30 non drop frame
+ rest *= 30;
+ break;
+ }
+ *fr = lrint(rest);
+ *subFrame = lrint((rest - (*fr)) * 100.0);
+#endif
}
//---------------------------------------------------------