Протокол MIDI

Musical Instrument Digital Interface, (от англ., "цифров интерфейс за музикални инструменти") или просто "MIDI", е комплект от хардуерни изисквания и протокол, който различни електронни устройства използват за да общуват и за да съхраняват данни (т.е., това е език, формат на файловете, и комплект хардуерни спецификации) и който е създаден за съхраняването и прехвърлянето на цифров запис на музика.

Съобщения в MIDI

Според протокола MIDI, устройствата MIDI комуникират едно с друго, като си изпращат съобщенията MIDI. Съобщенията MIDI са поредици от байтове, които казват на получаващото устройство да направи нещо. Следната поредица от три байта е едно възможно съобщение.

0x90 0x26 0x3C

Първият байт е 0x90. 9-ката казва на получаващото устройство да свири една нота и 0-та определя, че тази нота трябва да е на канал 0. Нотата е 0x26, което е нотата Ре в третата октава от долу. Скоростта (например амплитудата), с която нотата трябва да се свири е 0x3C, което е приблизително средата. Така, това съобщение казва на устройството да започне да свири нотата Ре на канал 0 със средна амплитуда. Примери на други съобщения MIDI са в темите по-долу.

Статусен байт и байтове с данни на едно съобщение MIDI

Първият байт на едно съобщение MIDI е статусния байт. Останалите байтове са байтовете за данните.

В примера по-горе, статусния байт е 0x90 и данните се носят от байтовете 0x26 0x3C.

  • Статусните байтове имат стойности между 0x80 и 0xFF. Най-горният им бит в бинарната им стойност е 1.
  • Байтовете за данните имат стойности между 0x00 и 0x7F. Най-горният им бит в бинарната им стойност е 0.

Виж Статусен байт (на съобщение в MIDI) за един списък с възможни статусни байтове и тяхното значение. Виж темите по-долу за описания на байтовете за данните при различните видове съобщения и за примери.

Статусният байт описва това, което устройството трябва да направи и какво следва след статусния байт. Статусният байт 0x90 например казва, че това е съобщението Свири Нотата в MIDI за канал 0. Казва на получаващото устройство да свири една нота на канал 0. С този статусен байт, устройството ще очаква два байта с данни. Първият байт, който следва, ще каже на устройството, коя нота да свири. Последният байт ще каже на устройството скоростта (например амплитудата) на нотата.

Повечето съобщения MIDI се състоят от един статусен байт и един или два байта с данни. Съобщенията в реално време в MIDI са различни. Съобщението Започни в MIDI се състои само от един статусен байт и няма байтове с данни. Казва на устройството да започне да свири. Ексклузивните съобщения за системата в MIDI също са различни. Могат да съдържант повече от един или два байта след статусния байт.

Статус на изпълнението в MIDI

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

Ако например едно съобщение иска получаващото устройство да свири една нота на канал 0 (статусен байт 0x90) и следващото съобщение също иска устройствотот да свири една нота – същата или различна – на канал 0 (същият статусен байт 0x90), тогава вторият статусен байт може да се пропусне. В примера тук, получаващото устройство ще знае, че първото съобщение е завършено, след като получи всичките му три байта (статусният байт и двата байта с данни на съобщението Свири Нотата в MIDI). Устройството също ще знае, че следващото съобщение е без статусен байт, защото стойностите на статусните байтове са между 0x80 и 0xFF, а стойностите на байтовете с данни в MIDI са между 0x00 и 0x7F.

Това пропускане на статусният байт се нарича "статус на изпълнението" в MIDI. Статусът на получаващото устройство в MIDI ще остане каквото е, докато устройството не получи един н нов статус.

Видове съобщения в MIDI

Съобщенията в MIDI се изпращат в 16 канала. Съществуват два вида съобщения: съобщения за канала и съобщения за системата.

  • Съобщенията за канала са специфични за един канал. Горните четири бита на статусния им байт определя какво получаващото устройство трябва да направи (например 9 за да свири една нота както в примера по-горе) и долните четири бита на статусния байт определят канала (например 0 за канал 0 както в примера по-горе). Съобщенията за канала могат да са гласови (например свири една нота) или режимни (например избери един инструмент).
  • Съобщенията за системата не са специфични за един канал и техният статусен байт не определя един канал. Могат да са обикновени (например, подреди се на определено място в поредицата MIDI и се приготви за свирене), в реално време (например започни свиренето) и ексклузивни (например направи нещо специфично за това устройство).

Протоколът MIDI отбелязва, че едно получаващо устройство MIDI ще получава основните си инструкции (например режимните съобщения за канала) на един от каналите, наречен неговия основен канал и ще пренебрегне такива съобщения, ако са изпратени към други канали. Едно изпращащо устройство тогава може да избере, кое получаващо устройство трябва да получи такива съобщения.

Когато едно получаващо устройство MIDI има няколко инструмента, може да има и няколко основни канали и по този начин може да служи като няколко получаващи устройства.

Гласовите съобщения за канала пък могат да се изпращат към всички канали, включително и към основния канал.

Виж Статусен байт (на съобщение в MIDI) за един списък с озвучаващи съобщения за канала, обикновени съобщения за системата и съобщения за системата в реално време. Режимните съобщения за канала по принцип са съобщения контроли, но със стойност на контролата между 120-127. Съобщенията контроли с други стойности на контролите се считат за озвучаващи съобщения за канала. Ексклузивните съобщения за системата понякога се считат за обикновени съобщения за системата.

Формат на файловете MIDI

Файловете MIDI са разделени на "парчета". Всеки файл започва с парчето хедър и може да съдържа едно или повече пистови парчета. Хедърът съдържа информация за целия файл MIDI, като например времевата резолюция на файла или пък броя на пистите във файла. Пистите съдържат съобщенията на езика MIDI.

Забележи, че файла MIDI не е от вида файлове RIFF. Хедърът и пистите в MIDI са най-горните парчета във файла MIDI. За разлика от това, форматът на файловете wave разширява формата RIFF и най-горното парче в един файл уейв е парчето RIFF. Независимо от това, парчетата MIDI имат подобна структура както парчетата RIFF и парчетата wave.

Хардуерни спецификации в MIDI

MIDI има доста хардуерни изисквания. Свръзките в MIDI например са 5 иглови DIN (т.е., по стандарта на Deutsches Institut für Normung). Кабелите са защитена усукана двойка. Иглата 1 на свръзката не се използва. Иглата 2 е свързана със щита. Иглата 3 не се използва. Иглите 4 и 5 свързват усуканата двойка кабели. Устройствата MIDI използват отделни свръзки за входа и изхода и двете от които са "женски". Електрониката в MIDI използва силата на тока (т.е., сигнализацията използва силата на тока а не напрежението) и използва оптически изолатори, които реагират под 2 микросекунди. Електрониката работи на 5 mA и е "включена" при транзисторно-резисторна логика 0.

Стандарти в MIDI

Не всички устройства MIDI задоволяват всички изисквания в MIDI (по-точно, не всички устройства разбират езика MIDI в цялост). В момента има три нива на стандартите. Ранните устройства задоволяваха част от по-горните изисквания на MIDI и тази част се нарича General MIDI Level 1 (GM1) (англ., "общо MIDI ниво 1"). В 1999 тази част бе увеличена за да включи още от езика MIDI и бе наречена General MIDI Level 2 (GM2). Един скорошен стандарт за мобилни комуникации в MIDI се нарича General MIDI Lite (GM Lite) (от англ., "с ниско съдържание"). Стандарта Scalable Polyphony MIDI (SP-MIDI) (англ., "полифония, която може да се намалява/увеличава") описва как стандарта GM2 трябва да се намали (изчисти) до GM1 или до GM Lite, ако някаква музика в GM2 се изпраща до устройства, които използват GM1 или GM Lite.

Теми за MIDI

Следното са теми за MIDI в азбучен ред.

Времева резолюция (на файл MIDI)
Ексклузивно съобщение за системата в MIDI
Мета съобщение Бележка за Авторски Права в MIDI
Мета съобщение Знак за Встъпване в MIDI
Мета съобщение Име на Инструмента в MIDI
Мета съобщение Име на Пистата в MIDI
Мета съобщение Край на Пистата в MIDI
Мета съобщение Лирика в MIDI
Мета съобщение Маркер в MIDI
Мета съобщение Номер на Песента в MIDI
Мета съобщение Определи Темпото в MIDI
Мета съобщение Представка на Канала в MIDI
Мета съобщение Ритъм в MIDI
Мета съобщение Специално за Устройството в MIDI
Мета съобщение Текст в MIDI
Мета съобщение Тоналност в MIDI
Мета съобщение SMPTE Отлагане в MIDI
Мета съобщения в MIDI
Обикновени съобщения за системата в MIDI
Озвучаващи съобщения в MIDI
Писта (на файл MIDI)
Пулс в MIDI
Регистрирани Параметри в MIDI (RPN)
Стандарт General MIDI 1
Стандарт General MIDI 2
Статусен байт (на съобщение в MIDI)
Съобщение Активен Усет в MIDI
Съобщение Главна Сила на Звука в MIDI
Съобщение Започни в MIDI
Съобщение Избор на Песен в MIDI
Съобщение Контрола в MIDI
Съобщение Контрола за Глобални Параметри в MIDI
Съобщение Контрола за Инструмента с Клавиша в MIDI
Съобщение Контролно Предназначение в MIDI
Съобщение Настрой Се в MIDI
Съобщение Натиск на Канала в MIDI
Съобщение Натиск на Клавиша в MIDI
Съобщение Позволи / Спри Протокола General MIDI
Съобщение Позиция в Песента в MIDI
Съобщение Превключи в MIDI
Съобщение Продължи в MIDI
Съобщение Пълен Кадър в MIDI
Съобщение Свири Нотата в MIDI
Съобщение Смяна на Програмата в MIDI
Съобщение Спри в MIDI
Съобщение Спри Нотата в MIDI
Съобщение Транспониране в MIDI
Съобщение Часовник в MIDI
Съобщение Четвърт Кадър в MIDI
Съобщения за системата в реално време в MIDI
Формат (на файл MIDI)
Хедър (на файл MIDI)

Добави нов коментар

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.