我正在从MIDI轨道移除事件,我认为通过这样做,轨道的总持续时间会相应减少,如果轨道中没有事件,那么我认为轨道的大小将为0。 / p>
不幸的是,情况似乎并非如此,即使事件被删除,Ticks的大小也不会改变,只会随着添加更多而增加。
这是正常的MIDI / Java行为吗?
修改
这是从Track中删除所有事件的方法:
public static boolean Remove() {
//TODO: Test the bejeezus out of it.
if(_sequencer.isRunning()){
_sequencer.stop();
}
for (int i = 0; i < _track.size(); i++) {
if (!_track.remove(_track.get(i))) {
Logger.Add("MIDI Event not removed");
return false;
}
}
//Used for debugging purposes
long z = _track.ticks();
}
然而,当我使用一些粗略的调试技术并在删除事件后直接检查滴答数量时,我发现了这一点;
它似乎没什么区别,我真的不明白它为什么这样做。我假设Ticks的大小取决于Track中的事件数量,因此如果一个轨道中有10个事件,则标记大小将为10(当我将它们添加到轨道时将标记长度设置为1)没有大小为0的事件。
添加活动:
public static void AddMessage(int channel, int pitch, long tick, int velocity) {
_track.add(CreateNoteOnEvent(channel, pitch, tick, velocity));
_track.add(CreateNoteOffEvent(channel, pitch tick, velocity));
}
答案 0 :(得分:2)