Я пытаюсь создать программу чтения MIDI на Java.Цель состоит в том, чтобы сохранить заметки из MIDI-файла и временные подписи нот, используя отметки каждой ноты и вычитая их, чтобы найти разницу значений, а затем преобразовать их в соответствующие значения времени.
Пример вывода моей программы:
Tick at @27576
Channel: 2
Note = AS1 key = 34
Tick at @27600
Channel: 2
Note = AS1 key = 34
Tick at @27624
Channel: 2
Note = AS1 key = 34
Tick at @29952
//and so on
Затем значения тиков будут вставлены в ArrayList с именем noteTimings
, а значения заметок будут вставлены вArrayList с именем noteKeyValues
Итак, в примере вывода - noteTimings
будет иметь значения: [27576, 27600, 27624, 29952]
Теперь, что я пытаюсьexecute выполняет вычитание последнего элемента с предыдущим (например, 29952 - 27624) и вставку этого значения в новый ArrayList.Это будет продолжаться до тех пор, пока каждый элемент не будет повторен в цикле for.
Мой цикл for:
ArrayList<Integer> newNoteTimings = new ArrayList<>();
for (int i = noteTimings.size() - 1; i >= 1; i--) {
for (int j = i - 1; j >= 0; j--) {
newNoteTimings.add((noteTimings.get(i) - noteTimings.get(j)));
}
}
System.out.println(newNoteTimings);
Ожидаемые результаты:
2328
24
24
Фактические результаты:
2328
2352
2376
Есть что-то, что я пропускаю?Любая помощь будет оценена!