本文整理汇总了C++中MidiEvent::setMetaTempo方法的典型用法代码示例。如果您正苦于以下问题:C++ MidiEvent::setMetaTempo方法的具体用法?C++ MidiEvent::setMetaTempo怎么用?C++ MidiEvent::setMetaTempo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MidiEvent
的用法示例。
在下文中一共展示了MidiEvent::setMetaTempo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createMidiFile
void createMidiFile(const char* filename, vector<vector<int> >& sequence) {
MidiFile midifile;
midifile.absoluteTicks();
midifile.addTrack(1);
int tpq = 120;
double beat = 0.0;
midifile.setTicksPerQuarterNote(tpq);
MidiEvent tempo;
tempo.setMetaTempo(60.0);
tempo.track = 0;
tempo.tick = 0;
midifile.addEvent(tempo);
int maxlen = 0;
int i, j;
for (i=0; i<(int)sequence.size(); i++) {
if ((int)sequence[i].size() > maxlen) {
maxlen = sequence[i].size();
}
}
vector<int> notelist;
MidiEvent noteon(0x90, 0, 64);
MidiEvent noteoff(0x80, 0, 64);
noteon.track = 1;
noteoff.track = 1;
for (i=0; i<maxlen; i++) {
notelist.clear();
for (j=0; j<(int)sequence.size(); j++) {
if (i<(int)sequence[j].size()) {
notelist.push_back(sequence[j][i]);
}
}
for (j=0; j<(int)notelist.size(); j++) {
noteon[1] = 0x7f & notelist[j];
noteoff[1] = 0x7f & notelist[j];
noteon.tick = (int)(beat * tpq + 0.5);
noteoff.tick = (int)(beat * tpq + 1 * tpq + 0.5);
midifile.addEvent(noteon);
midifile.addEvent(noteoff);
}
beat += 1.0;
}
midifile.sortTracks();
midifile.write(filename);
}