25
25
using namespace drumstick ::File;
26
26
using namespace drumstick ::rt;
27
27
28
- Sequence::Sequence (QObject *parent) : QObject(parent),
29
- m_rmid(nullptr ),
30
- m_smf(nullptr ),
31
- m_wrk(nullptr ),
32
- m_uchardetErrors(0 ),
33
- m_format(0 ),
34
- m_numTracks(0 ),
35
- m_ticksDuration(0 ),
36
- m_division(-1 ),
37
- m_pos(0 ),
38
- m_curTrack(-1 ),
39
- m_beatMax(0 ),
40
- m_barCount(0 ),
41
- m_beatCount(0 ),
42
- m_lowestMidiNote(127 ),
43
- m_highestMidiNote(0 ),
44
- m_tempo(500000.0 ),
45
- m_tempoFactor(1.0 ),
46
- m_ticks2millis(0 ),
47
- m_duration(0 ),
48
- m_lastBeat(0 ),
49
- m_beatLength(0 ),
50
- m_tick(0 ),
51
- m_codec(nullptr )
28
+ Sequence::Sequence (QObject *parent)
29
+ : QObject(parent)
30
+ , m_rmid(nullptr )
31
+ , m_smf(nullptr )
32
+ , m_wrk(nullptr )
33
+ , m_uchardetErrors(0 )
34
+ , m_format(0 )
35
+ , m_numTracks(0 )
36
+ , m_ticksDuration(0 )
37
+ , m_division(-1 )
38
+ , m_pos(0 )
39
+ , m_curTrack(-1 )
40
+ , m_beatMax(0 )
41
+ , m_barCount(0 )
42
+ , m_beatCount(0 )
43
+ , m_lowestMidiNote(127 )
44
+ , m_highestMidiNote(0 )
45
+ , m_tempo(500000.0 )
46
+ , m_tempoFactor(1.0 )
47
+ , m_ticks2micros(0 )
48
+ , m_duration(0 )
49
+ , m_lastBeat(0 )
50
+ , m_beatLength(0 )
51
+ , m_tick(0 )
52
+ , m_codec(nullptr )
52
53
{
53
54
m_rmid = new Rmidi (this );
54
55
connect (m_rmid, &Rmidi::signalRiffData, this , &Sequence::dataHandler);
@@ -530,8 +531,9 @@ int Sequence::trackChannel(int track) const
530
531
531
532
void Sequence::timeCalculations ()
532
533
{
533
- m_ticks2millis = m_tempo / (1000.0 * m_division * m_tempoFactor);
534
- // qDebug() << Q_FUNC_INFO << "tempo:" << m_tempo << "div:" << m_division << "ticks2millis:" << m_ticks2millis;
534
+ m_ticks2micros = m_tempo / (m_division * m_tempoFactor);
535
+ // qDebug() << Q_FUNC_INFO << "tempo:" << m_tempo << "div:" << m_division
536
+ // << "ticks2micros:" << m_ticks2micros;
535
537
}
536
538
537
539
qreal Sequence::tempoFactor () const
@@ -557,14 +559,19 @@ MIDIEvent *Sequence::nextEvent()
557
559
return 0 ;
558
560
}
559
561
560
- std::chrono::milliseconds Sequence::deltaTimeOfEvent (MIDIEvent *ev) const
562
+ std::chrono::microseconds Sequence::timeOfEvent (MIDIEvent *ev) const
561
563
{
562
- return std::chrono::milliseconds ( std::lround (ev->delta () * m_ticks2millis ));
564
+ return std::chrono::microseconds ( static_cast < long > (ev->tick () * m_ticks2micros ));
563
565
}
564
566
565
- std::chrono::milliseconds Sequence::timeOfTicks ( const int ticks ) const
567
+ std::chrono::microseconds Sequence::deltaTimeOfEvent (MIDIEvent *ev ) const
566
568
{
567
- return std::chrono::milliseconds (std::lround (ticks * m_ticks2millis));
569
+ return std::chrono::microseconds (static_cast <long >(ev->delta () * m_ticks2micros));
570
+ }
571
+
572
+ std::chrono::microseconds Sequence::timeOfTicks (const int ticks) const
573
+ {
574
+ return std::chrono::microseconds (static_cast <long >(ticks * m_ticks2micros));
568
575
}
569
576
570
577
bool Sequence::hasMoreEvents ()
@@ -588,22 +595,6 @@ void Sequence::setTickPosition(long tick) {
588
595
m_pos = m_list.count () -1 ;
589
596
}
590
597
591
- void Sequence::setTimePosition (long time) {
592
- long lastTime = 0 ;
593
- for (int i=0 ; i<m_list.count (); ++i) {
594
- MIDIEvent* ev = m_list[i];
595
- long deltaTicks = ev->delta ();
596
- long deltaMillis = std::lround (m_ticks2millis * deltaTicks);
597
- long eventMillis = lastTime + deltaMillis;
598
- if (eventMillis > time ) {
599
- m_pos = i > 0 ? i -1 : 0 ;
600
- return ;
601
- }
602
- lastTime = eventMillis;
603
- }
604
- m_pos = m_list.count () -1 ;
605
- }
606
-
607
598
qreal Sequence::currentTempo () const
608
599
{
609
600
return m_tempo / m_tempoFactor;
0 commit comments