1
我正在从MIDI轨道中移除事件,并且我认为这样做总的轨道持续时间会相应减少,如果轨道中没有事件,那么我认为轨道的大小将是0.跟踪行为 - Java MIDI
不幸的是,它似乎并非如此,即使事件已删除,Ticks中的大小不会改变,只会随着更多内容的增加而增加。
这是正常的MIDI/Java行为?
编辑:
这是删除所有来自跟踪事件的方法:
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个事件,则Tick的大小将为10(因为我将它们添加到轨道时将tick长度设置为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));
}
你能提供更多的信息吗?你在做什么的样本? – Brad 2011-04-17 22:09:28
好点,修正了这个问题! – 2011-04-18 08:40:21