Перейти к содержанию

Звук в Линуксе/MIDI

Материал из Викиучебника — открытых книг для открытого мира

Пользователям

[править]

Музыкантам

[править]

Основные понятия

[править]

MIDI (Musical Instrument Digital Interface) — это протокол, который был разработан в начале 1983 года ведущими фирмами-производителями музыкального оборудования, такими как Roland, Korg, E-mu, Yamaha и другими. Изначально он был предназначен для замены принятого в то время способа управления музыкальными инструментами при помощи аналоговых сигналов на управление посредством информационных сообщений (events), передаваемых по цифровому интерфейсу. Впоследствии он стал стандартом де-факто в области электронных музыкальных инструментов и компьютерных модулей синтеза. В настоящее время существует несколько стандартов протокола MIDI: XG, GS, GM и другие.

Основным понятием в MIDI-протоколе является событие (event) или сообщение. Каждый раз, когда происходит нажатие на клавишу MIDI-клавиатуры, отпускание нажатой клавиши, вращение ручки или нажатие кнопки, устройство формирует соответствующее MIDI-сообщение или событие. Таким образом, MIDI-поток отражает в себе все действия производимые музыкантом, включая динамику исполнения, технические приёмы и прочее. Каждое такое MIDI-событие привязано к временной сетке и набор этих событий представляет собой способ записи партитуры. Записанное таким образом произведение может быть сохранено в файл (обычно с расширением mid) и использоваться для последующего воспроизведения и/или редактирования; также возможно использование MIDI в «реальном времени».

Очень важно понять, что MIDI-протокол не является протоколом передачи звука, а только лишь «кодирует» действия, совершаемые музыкантом на музыкальном инструменте, и передаёт их устройству, которое, в свою очередь, отвечает за воспроизведение звука. Информация, передаваемая устройству в MIDI-потоке, эквивалентна нажатию клавиш, вращению ручек и нажатию кнопок устройства (естественно, при том условии, что в самом устройстве данной кнопке или ручке соответствует какое-либо MIDI-сообщение).

Для того, чтобы устройство могло передавать и получать MIDI-информацию, оно должно иметь внутри себя программу и микропроцессор, которые интерпретируют MIDI-поток, а снаружи — разъёмы, к которым подсоединяется MIDI-кабель.

Виды MIDI разъёмов:

  1. MIDI Out. MIDI-выход  — через этот разъём устройство посылает MIDI-сообщение на другое устройство;
  2. MIDI In. MIDI-вход  — через этот разъём устройство получает MIDI-сообщение от другого устройства;
  3. MIDI Thru. Сквозной  — через этот разъём посылается точная копия любого MIDI-сообщения, которое поступило на разъём MIDI.

Для подсоединения MIDI-устройств к компьютеру используется MIDI/joystick-порт. Большинство современных MIDI-клавиатур также имеют USB-разъём.

MIDI-каналы

[править]

MIDI-каналы предназначены для того, чтобы один синтезатор или звуковой модуль мог играть несколькими разными тембрами одновременно, причём каждый тембр (инструмент) исполняет свою независимую партию. Когда одно устройство передаёт канальные MIDI-сообщения на другое, внешне это выглядит так, как если бы они были соединены шестнадцатью кабелями (и по каждому следуют указания о том, какие ноты каким тембром играть). На самом деле MIDI-технология использует один кабель, но в каждое канальное MIDI-сообщение вписывается номер MIDI-канала, для которого оно предназначено. Устройство-получатель, пользуясь этим номером, направляет каждое канальное MIDI-сообщение на свой канал.

Каким образом звучит MIDI-файл

[править]

Как уже было сказано выше, MIDI-информация не содержит в себе непосредственно звуковых данных, а лишь указания некоему устройству, будь то внешний синтезатор или программа, выполняющая те же функции, которое ответственно за воспроизведение звука. Таким устройством может быть внешний инструмент или же звуковая карта, которая входит в сборку вашего компьютера.

Как правило, звуковые карты воспроизводят MIDI-файлы при помощи FM-синтезатора, встроенного в них. Хотя возможности FM-синтеза велики, как правило, звучание таких синтезаторов оставляет желать лучшего — на звуковых картах часто используются дешёвые чипсеты фирмы Yamaha — OPL2/OPL3 или совместимые с ними.

Гораздо более убедительный звук можно получить при помощи wavetable-синтезатора (WT), который представляет собой комбинацию постоянной памяти, в которую обычно прошиты банки со звуками от фирмы-производителя, и оперативной, в которую могут загружаться пользовательские банки (как, например, на некоторых картах Turtle Beach или Gravis Ultra Sound). Таким образом wavetable-синтезатор совмещает в себе функции синтезатора и семплера, что делает возможным использование как прошитых в ROM банков, так и пользовательских.

Каждый тембр, как правило, состоит из семплов — аудиозаготовок, которые определяют звучание инструмента. Сэмпл может быть как синтезированным так и записанным при помощи реальных инструментов. Когда вы пытаетесь воспроизвести MIDI-файл (например при помощи программы playmidi [1] или любого другого MIDI-плейера), устройство получает сообщение, которое «просит» его воспроизвести ноту определённой высоты определённым тембром  — и, в зависимости от того, по какому принципу оно работает, либо синтезирует этот тембр с нужной частотой, либо воспроизводит семпл, который соответствует данному тембру, меняя его высоту (pitch) в соответствии с тем, какова должна быть результирующая высота ноты. Кроме того, при воспроизведении семпла его звук может претерпеть многие другие трансформации, но, к сожалению, их описание выходит за рамки данного текста.

В итоге качество звука, который вы слышите при воспроизведении, зависит от того, насколько качественный синтезатор встроен в вашу звуковую карту, или от того, насколько качественные семплы использованы в её wavetable.

Некоторые карты (например, Creative SB Live!) не имеют фиксированного wavetable и работают по принципу семплера, позволяя загружать в оперативную память компьютера или же в свою собственную память внешние банки звуков (для SB Live! это банки звуков в формате SF2). При этом размер семплов ограничен только объёмом памяти, поэтому при таком варианте воспроизведения MIDI-файлов можно достичь очень неплохого звучания.

В настоящее время возможности семплера SB Live! и многих других карт могут быть полностью использованы в операционной системе GNU/Linux при использовании драйверов звуковых устройств ALSA.

Рекомендуется прочитать следующую литературу:

  1. Евгений Музыченко. "FAQ: Описание интерфейса MIDI" (http://www.midi.ru/doc/35.htm)
  2. Павел Живайкин. "MIDI-технология в картинках и таблицах" (http://infocity.com.ua/other/content/pr003.phtml)

[1] При наличии только FM-синтезатора рекомендуем обратить внимание на программу timidity, которая является программным WT-синтезатором.