Я создал простую программу на Java, которая генерирует последовательность аккордов MIDI на основе ввода пользователя. Программа позволяет пользователям указывать количество аккордов в последовательности, фактические названия аккордов и аккорды, которые они хотят использовать в одной доле. Сгенерированная MIDI-последовательность сохраняется в файле с именем «output.mid» и воспроизводится с помощью секвенсора.
В коде нет ошибок, однако при запуске программы в выходном файле не воспроизводится музыка, а выходной файл светится красным. Буду признателен за вашу помощь в этом вопросе

Основной класс:
import javax.sound.midi.*; импортировать java.util.Arrays; импортировать java.util.List; импортировать java.util.Scanner; общественный класс Main { public static void main(String[] args) { пытаться { Сканер-сканер = новый сканер(System.in); System.out.println("Добро пожаловать в генератор последовательности аккордов!"); // Разрешить пользователю настраивать последовательность аккордов System.out.print("Введите количество аккордов в прогрессии: "); int numChords = Scanner.nextInt(); сканер.nextLine(); // Используем символ новой строки System.out.println("Доступные аккорды: " + Arrays.toString(ChordProгрессияГенератор.getAllChordNames())); System.out.println("Введите аккорды прогрессии, разделенные пробелами:"); List userChordProгрессия = Arrays.asList(scanner.nextLine().trim().split("\\s+")); // Разрешить пользователю указывать аккорды в одной доле System.out.print("Введите нужные аккорды в одной доле (через пробелы) или оставьте пустым по умолчанию: "); List chordsInSameBeat = Arrays.asList(scanner.nextLine().trim().split("\\s+")); // Создаём секвенсор Секвенсор секвенсор = MidiSystem.getSequencer(); секвенсор.open(); // Создаем последовательность Последовательность последовательности = новая последовательность(Sequence.PPQ, 480); // Указываем тип деления и разрешение // Продолжаем генерацию MIDI int NotesPerChord = chordsInSameBeat.isEmpty() ? 4: chordsInSameBeat.size(); ChordProprofitGenerator.generateMIDI(sequence, userChordProгрессия, numChords, NotesPerChord, 480, chordsInSameBeat); // Указываем имя выходного файла и записываем MIDI-последовательность в файл Строка fileName = "output.mid"; MidiSystem.write(sequence, 1, new java.io.File(fileName)); System.out.println("MIDI-файл сохранен: " + fileName); // Устанавливаем последовательность для секвенсора Sequencer.setSequence(последовательность); // Начинаем играть секвенсор.старт(); // Даём некоторое время секвенсору поиграться Thread.sleep(5000); // Спим на 5 секунд // Остановим и закроем секвенсор секвенсор.стоп(); секвенсор.закрыть(); // Закрываем сканер сканер.закрыть(); } catch (Исключение е) { е.printStackTrace(); } } } Мой класс генератора:
import java.util.Arrays; импортировать java.util.Iterator; импортировать java.util.List; импортировать javax.sound.midi.InvalidMidiDataException; импортировать javax.sound.midi.MidiEvent; импортировать javax.sound.midi.Sequence; импортировать javax.sound.midi.ShortMessage; импортировать javax.sound.midi.Track; общественный класс ChordProгрессионГенератор { частный статический int LastChordIndex = 0; общественный ChordProгрессионГенератор () { } public static void ignoreMIDI(Sequence Sequence, List chordProgression, int NumberOfBeats, int NotesPerChord, int TicketsPerBeat, List chordsInSameBeat) выдает InvalidMidiDataException { Трек трек = последовательность.createTrack(); for(int Beat = 0; Beat