MuseScore/mscore/importmidi_meter.h
2013-07-15 18:44:21 +04:00

54 lines
1.4 KiB
C++

#ifndef IMPORTMIDI_METER_H
#define IMPORTMIDI_METER_H
namespace Ms {
class Fraction;
class TDuration;
namespace MidiTuplet {
struct TupletData;
}
namespace Meter {
enum class DurationType
{
NOTE,
REST
};
bool isSimple(const Fraction &barFraction);
bool isCompound(const Fraction &barFraction);
bool isComplex(const Fraction &barFraction);
bool isDuple(const Fraction &barFraction);
bool isTriple(const Fraction &barFraction);
bool isQuadruple(const Fraction &barFraction);
Fraction beatLength(const Fraction &barFraction);
struct DivisionInfo;
DivisionInfo metricDivisionsOfBar(const Fraction &barFraction);
DivisionInfo metricDivisionsOfTuplet(const MidiTuplet::TupletData &tuplet,
int tupletStartLevel);
// division lengths of bar, each can be a tuplet length
std::vector<Fraction> divisionsOfBarForTuplets(const Fraction &barFraction);
// duration and all tuplets should belong to the same voice
// nested tuplets are not allowed
QList<std::pair<Fraction, TDuration> >
toDurationList(const Fraction &startTickInBar,
const Fraction &endTickInBar,
const Fraction &barFraction,
const std::vector<MidiTuplet::TupletData> &tupletsInBar,
DurationType durationType,
bool useDots);
} // namespace Meter
} // namespace Ms
#endif // IMPORTMIDI_METER_H