Почувствуйте музыку с MIDI
Musical Instrument Digital Interface (цифровой интерфейс музыкальных инструментов) или MIDI появился в начале 80-х годов как попытка установить стандартный интерфейс между музыкальными инструментами. В то время основным применением MIDI была возможность использования специальной клавиатуры для управления синтезатором. Клавишные синтезаторы состоят из двух основных частей: клавиатуры и синтезатора. Клавиатура используется для обработки входной информации: какая нота была нажата и насколько сильно нажата клавиша. А синтезатор отвечает за выработку соответствующих звуков на основе полученной от клавиатуры информации. Поэтому исходной задачей MIDI была стандартизация контроля синтезатора с использованием клавиатуры. Со временем MIDI стал поддерживать большое число разнообразных музыкальных инструментов и устройств, но отношение клавиатура/синтезатор очень важно для MIDI при использовании на компьютере.
Так же, как и волновые звуки, MIDI-музыка – это цифровой сигнал. Однако в отличие от звуков, которые представляют собой аппроксимацию звуковой волны, MIDI-музыка состоит из нот. Иначе говоря, MIDI-песня состоит из набора тщательно подобранных музыкальных нот. Вы можете создать MIDI-песню точно так же, как записывают мелодию на нотном листе. Такая задача требует специального программного обеспечения, но она выполнима, если у вас есть музыкальное образование. Поскольку MIDI-музыка состоит из нот, а не из волн, результат ее воспроизведения зависит от устройства, используемого для проигрывания музыки. В случае мобильных телефонов MIDI-синтезатор имеет весьма ограниченные способности по сравнению с синтезаторами настольных компьютеров.
Я уже несколько раз упомянул термин MIDI-музыка, но не объяснил, как она хранится и как работать с ней. Подобно волновым звукам, MIDI-музыка хранится в файлах, которые имеют расширение. mid. В отличие от wav-файлов, файлы MIDI-музыки не так велики, поскольку ноты не занимают много места. Подобно wav-файлам, их можно воспроизводить с помощью проигрывателя, например, Windows Media Player (рис. 9.2). В отличие от волновых файлов, создание MIDI-музыки требует специальных музыкальных знаний и особого программного обеспечения.
Рис. 9.2. Для воспроизведения MIDI-музыки можно использовать Windows Media Player
Чтобы тестировать MIDI-файлы, отобранные для звукового оформления игр, вы можете использовать проигрыватель компьютера. Если вы можете создать такой файл самостоятельно, то для оценки результата вашей работы вы можете протестировать его прежде, чем внедрять в игру.
Воспроизведение MIDI-музыки в мобильных играх
Благодаря интерфейсу Player из MIDP 2.0 Media API подобно wav-файлам MIDI-музыку очень легко воспроизводить. Процесс воспроизведения MIDI-музыки несколько отличается от процесса воспроизведения волновых файлов.
Воспроизведение MIDI-музыки из JAR-файла
Чтобы воспроизвести MIDI-песню из JAR-файла, вы должны создать входящий поток, как и при воспроизведении из JAR-архива волнового файла. После того как вы создали входящий поток MIDI-файла, его необходимо использовать для создания проигрывателя, после чего воспроизводить. Ниже приведен код, который создает проигрыватель MIDI-файла из JAR-архива:
try {
Player musicPlayer;
InputStream is = getClass().getResourseStream("Music.mid");
musicPlayer = Manager.createPlayer(is, "audio/midi"); //Обратите внимание, что для воспроизведения MIDI-файла используется другой MIME-тип
musicPlayer.prefetch();
musicPlayer.start();
}
catch (IOException ioe)
}
catch (MediaException e) {
}
Единственная хитрость в этом коде – это MIME-спецификация воспроизводимого MIDI-файла при создании проигрывателя. Помимо этого, вызывается метод prefetch(), который минимизирует задержку, а метод start() запускает воспроизведение звука.
...
Совет Разработчику
MIDP 2.0 Media API также поддерживает воспроизведение MP3-музыки. Чтобы загрузить и воспроизвести MP3-песню, создайте входящий поток точно так же, как и в случае воспроизведения MIDI-песни или волнового файла, передайте имя и укажите MIME-тип файла, audio/mpeg.
Говоря о воспроизведении музыки, я упустил одну деталь. Я имею в виду повторы воспроизведения. По умолчанию звуковой файл воспроизводится один раз. Если требуется воспроизводить мелодию снова и снова, вы можете установить большое число повторов:
MusicPlayer.setLoopCount(-1);
Обычно в этот метод передается число повторов воспроизведения музыки, если вы передадите -1, то мелодия будет повторяться бесконечно, или до тех пор, пока не будет вызван метод stop().
Читать дальше
Конец ознакомительного отрывка
Купить книгу