跟踪行为 - Java MIDI

时间:2011-04-17 21:01:41

标签: java midi

我正在从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();
}

然而,当我使用一些粗略的调试技术并在删除事件后直接检查滴答数量时,我发现了这一点;

enter image description here

它似乎没什么区别,我真的不明白它为什么这样做。我假设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));
    }

1 个答案:

答案 0 :(得分:2)