Файл output.mid не передает ноты аккордов MIDIJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Файл output.mid не передает ноты аккордов MIDI

Сообщение Anonymous »


Я создал простую программу на 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Если я воспроизводим MIDI (.MID FILE) в IOS Native Avmidiplayer, он просто воспроизводит инструменты, а не вокал [закрыт
    Anonymous » » в форуме IOS
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Как рассчитать продолжительность ноты в файле Midi с помощью Mido
    Anonymous » » в форуме Python
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous
  • Длинные ноты в MIDI
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как изменить формат Dry Wet Midi для вывода времени ноты
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как изменить формат Dry Wet Midi для вывода времени ноты
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»