Initial
This commit is contained in:
138
guitar/Timing.cpp
Normal file
138
guitar/Timing.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
#include <guitar/Timing.hpp>
|
||||
#include <guitar/GlobalDefs.hpp>
|
||||
#include <guitar/registry.hpp>
|
||||
|
||||
int Timing::mMicrosecondsPerQuarterNote=Timing::microsecondsPerQuarterNote(Registry().getMicrosecondsPerQuarterNote());
|
||||
int Timing::mMillisecondsPerWholeNote;
|
||||
int Timing::mMillisecondsPerHalfNote;
|
||||
int Timing::mMillisecondsPerQuarterNote;
|
||||
int Timing::mMillisecondsPerEigthNote;
|
||||
int Timing::mMillisecondsPerSixteenthNote;
|
||||
int Timing::mMillisecondsPerThirtySecondNote;
|
||||
int Timing::mMillisecondsPerSixtyFourthNote;
|
||||
|
||||
int Timing::microsecondsPerQuarterNote(int microsecondsPerQuarterNote)
|
||||
{
|
||||
mMicrosecondsPerQuarterNote=microsecondsPerQuarterNote;
|
||||
mMillisecondsPerQuarterNote=(double)microsecondsPerQuarterNote*.001;
|
||||
mMillisecondsPerHalfNote=mMillisecondsPerQuarterNote*2;
|
||||
mMillisecondsPerWholeNote=mMillisecondsPerQuarterNote*4;
|
||||
mMillisecondsPerEigthNote=mMillisecondsPerQuarterNote/2;
|
||||
mMillisecondsPerSixteenthNote=mMillisecondsPerQuarterNote/4;
|
||||
mMillisecondsPerThirtySecondNote=mMillisecondsPerQuarterNote/8;
|
||||
mMillisecondsPerSixtyFourthNote=mMillisecondsPerQuarterNote/16;
|
||||
return mMicrosecondsPerQuarterNote;
|
||||
}
|
||||
|
||||
int Timing::microsecondsPerQuarterNote(void)
|
||||
{
|
||||
return mMicrosecondsPerQuarterNote;
|
||||
}
|
||||
|
||||
void Timing::secondsPerQuarterNote(float secondsPerQuarterNote)
|
||||
{
|
||||
mMicrosecondsPerQuarterNote=secondsPerQuarterNote*1000000.00;;
|
||||
mMillisecondsPerQuarterNote=(double)mMicrosecondsPerQuarterNote*.001;
|
||||
mMillisecondsPerHalfNote=mMillisecondsPerQuarterNote*2;
|
||||
mMillisecondsPerWholeNote=mMillisecondsPerQuarterNote*4;
|
||||
mMillisecondsPerEigthNote=mMillisecondsPerQuarterNote/2;
|
||||
mMillisecondsPerSixteenthNote=mMillisecondsPerQuarterNote/4;
|
||||
mMillisecondsPerThirtySecondNote=mMillisecondsPerQuarterNote/8;
|
||||
mMillisecondsPerSixtyFourthNote=mMillisecondsPerQuarterNote/16;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerWholeNote(void)
|
||||
{
|
||||
return mMillisecondsPerWholeNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerHalfNote(void)
|
||||
{
|
||||
return mMillisecondsPerHalfNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerQuarterNote(void)
|
||||
{
|
||||
return mMillisecondsPerQuarterNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerEightNote(void)
|
||||
{
|
||||
return mMillisecondsPerEigthNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerSixteenthNote(void)
|
||||
{
|
||||
return mMillisecondsPerSixteenthNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerThirtySecondNote(void)
|
||||
{
|
||||
return mMillisecondsPerThirtySecondNote;
|
||||
}
|
||||
|
||||
int Timing::millisecondsPerSixtyFourthNote(void)
|
||||
{
|
||||
return mMillisecondsPerSixtyFourthNote;
|
||||
}
|
||||
|
||||
int Timing::getDelay(const NoteType ¬eType)
|
||||
{
|
||||
switch(noteType.getNoteType())
|
||||
{
|
||||
case NoteType::WholeNote :
|
||||
return millisecondsPerWholeNote();
|
||||
case NoteType::HalfNote :
|
||||
return millisecondsPerHalfNote();
|
||||
case NoteType::QuarterNote :
|
||||
return millisecondsPerQuarterNote();
|
||||
case NoteType::EighthNote :
|
||||
return millisecondsPerEightNote();
|
||||
case NoteType::SixteenthNote :
|
||||
return millisecondsPerSixteenthNote();
|
||||
case NoteType::ThirtySecondNote :
|
||||
return millisecondsPerThirtySecondNote();
|
||||
case NoteType::SixtyFourthNote :
|
||||
return millisecondsPerSixtyFourthNote();
|
||||
default :
|
||||
return millisecondsPerSixtyFourthNote();
|
||||
}
|
||||
}
|
||||
|
||||
String Timing::toString(void)
|
||||
{
|
||||
String strTiming;
|
||||
strTiming+=String("1/1=")+String().fromInt(millisecondsPerWholeNote())+String("ms, ");
|
||||
strTiming+=String("1/2=")+String().fromInt(millisecondsPerHalfNote())+String("ms, ");
|
||||
strTiming+=String("1/4=")+String().fromInt(millisecondsPerQuarterNote())+String("ms, ");
|
||||
strTiming+=String("1/8=")+String().fromInt(millisecondsPerEightNote())+String("ms, ");
|
||||
strTiming+=String("1/16=")+String().fromInt(millisecondsPerSixteenthNote())+String("ms, ");
|
||||
strTiming+=String("1/32=")+String().fromInt(millisecondsPerThirtySecondNote())+String("ms, ");
|
||||
strTiming+=String("1/64=")+String().fromInt(millisecondsPerSixtyFourthNote())+String("ms, ");
|
||||
return strTiming;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
microseconds per quarter note = 631578
|
||||
milliseconds per quarter note = 631578/1000 = 631
|
||||
631578*.001 = 631
|
||||
|
||||
msecs per qtr note=usecs per qtr note *.001
|
||||
|
||||
quarter note = msecs per 4th note
|
||||
eigth note = msecs/2
|
||||
sixteenth note = msecs/4
|
||||
thirty second note = msecs/8
|
||||
sixty fourth note = msecs/16
|
||||
|
||||
(ie)
|
||||
microsecs millisecs 4th note 8th note 16th note 32nd note 64th note
|
||||
--------- --------- -------- -------- --------- --------- ---------
|
||||
631578 631 631 315 157 78 39
|
||||
|
||||
options
|
||||
seconds per qtr note: .5
|
||||
|
||||
msecs per qtr note=(seconds_per_qtr_note*1000)
|
||||
*/
|
||||
Reference in New Issue
Block a user