Использование отложенной игры JFugue - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я пытаюсь успешно использовать JFugue 5.0.9 в своем проекте и собирался использовать функцию отложенного воспроизведения для визуализации индикатора выполнения и положения нот.Я написал свой собственный парсер и создал шаблон для игры.Трек использует аккорды (например, «C4 + B5q»).Всякий раз, когда появлялись ноты аккорда, вместо события аккорда запускалось событие ноты, и выход DiagnosticParserListener выходил из синхронизации.Плеер был в порядке и звучал правильно.Что-то не так с нотацией аккордов?

Пример и дорожка, которые я использовал:

import org.jfugue.player.Player;
import org.jfugue.temporal.TemporalPLP;
import org.staccato.StaccatoParser;

public class TemporalExample {
    private static final String MUSIC = "TIME:3/4 T108 B4h D5q A4h G4i A4i B4h D5q A4h. B4h D5q A5h G5q D5h C5i B4i A4h G4i A4i B4h D5q A4h Rq B4h D5q A4h. B4h D5q A5h G5q D6h. D6q Rq G5s A5s B5s C6s D5+D6h C5+C6i B4+B5i C5+C6i B4+B5i G4+G5h C5+C6h B4+B5i A4+A5i B4+B5i A4+A5i E4+E5h D5+D6h C5+C6i B4+B5i T96 C5+C6i B4+B5i G4+G5q C5+C6q T86 G5+G6h. A5i C6i F6i A6i D6i B6i G7h.";
    private static final long TEMPORAL_DELAY = 0;

    public static void main(String[] args) {
        // Part 1. Parse the original music
        StaccatoParser parser = new StaccatoParser();
        TemporalPLP plp = new TemporalPLP();
        parser.addParserListener(plp);
        parser.parse(MUSIC);

        // Part 2. Send the events from Part 1, and play the original music with a delay
        DiagnosticParserListener dpl = new DiagnosticParserListener(); // Or your AnimationParserListener!
        plp.addParserListener(dpl);
        new Player().delayPlay(TEMPORAL_DELAY, MUSIC);
        plp.parse();
    }
}
...