mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 04:06:26 +01:00
"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo
This commit is contained in:
parent
c0aa738395
commit
6a0ea65885
2 changed files with 47 additions and 4 deletions
|
|
@ -93,7 +93,26 @@ public:
|
||||||
|
|
||||||
int num_tempos () const;
|
int num_tempos () const;
|
||||||
|
|
||||||
typedef smf_tempo_t Tempo;
|
/* This is exactly modelled on smf_tempo_t */
|
||||||
|
struct Tempo {
|
||||||
|
size_t time_pulses;
|
||||||
|
double time_seconds;
|
||||||
|
int microseconds_per_quarter_note;
|
||||||
|
int numerator;
|
||||||
|
int denominator;
|
||||||
|
int clocks_per_click;
|
||||||
|
int notes_per_note;
|
||||||
|
|
||||||
|
Tempo ()
|
||||||
|
: time_pulses (0)
|
||||||
|
, time_seconds (0)
|
||||||
|
, microseconds_per_quarter_note (-1)
|
||||||
|
, numerator (-1)
|
||||||
|
, denominator (-1)
|
||||||
|
, clocks_per_click (-1)
|
||||||
|
, notes_per_note (-1) {}
|
||||||
|
Tempo (smf_tempo_t*);
|
||||||
|
};
|
||||||
|
|
||||||
Tempo* tempo_at_smf_pulse (size_t smf_pulse) const;
|
Tempo* tempo_at_smf_pulse (size_t smf_pulse) const;
|
||||||
Tempo* tempo_at_seconds (double seconds) const;
|
Tempo* tempo_at_seconds (double seconds) const;
|
||||||
|
|
|
||||||
|
|
@ -522,6 +522,17 @@ SMF::instrument_names(vector<string>& names) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SMF::Tempo::Tempo (smf_tempo_t* smft)
|
||||||
|
: time_pulses (smft->time_pulses)
|
||||||
|
, time_seconds (smft->time_seconds)
|
||||||
|
, microseconds_per_quarter_note (smft->microseconds_per_quarter_note)
|
||||||
|
, numerator (smft->numerator)
|
||||||
|
, denominator (smft->denominator)
|
||||||
|
, clocks_per_click (smft->clocks_per_click)
|
||||||
|
, notes_per_note (smft->notes_per_note)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
SMF::num_tempos () const
|
SMF::num_tempos () const
|
||||||
{
|
{
|
||||||
|
|
@ -532,13 +543,21 @@ SMF::num_tempos () const
|
||||||
SMF::Tempo*
|
SMF::Tempo*
|
||||||
SMF::tempo_at_smf_pulse (size_t smf_pulse) const
|
SMF::tempo_at_smf_pulse (size_t smf_pulse) const
|
||||||
{
|
{
|
||||||
return smf_get_tempo_by_seconds (_smf, smf_pulse);
|
smf_tempo_t* t = smf_get_tempo_by_seconds (_smf, smf_pulse);
|
||||||
|
if (!t) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return new Tempo (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
SMF::Tempo*
|
SMF::Tempo*
|
||||||
SMF::tempo_at_seconds (double seconds) const
|
SMF::tempo_at_seconds (double seconds) const
|
||||||
{
|
{
|
||||||
return smf_get_tempo_by_seconds (_smf, seconds);
|
smf_tempo_t* t = smf_get_tempo_by_seconds (_smf, seconds);
|
||||||
|
if (!t) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return new Tempo (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
SMF::Tempo*
|
SMF::Tempo*
|
||||||
|
|
@ -546,7 +565,12 @@ SMF::nth_tempo (size_t n) const
|
||||||
{
|
{
|
||||||
assert (_smf);
|
assert (_smf);
|
||||||
|
|
||||||
return smf_get_tempo_by_number (_smf, n);
|
smf_tempo_t* t = smf_get_tempo_by_number (_smf, n);
|
||||||
|
if (!t) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Tempo (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Evoral
|
} // namespace Evoral
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue