Регистрирани параметри в MIDI (RPN)

Регистрираните параметри в MIDI (на англ. Registered Parameter Numbers (RPN)) са стойности, които се носят от съобщението "контрола" в MIDI с номера на контролата 0x64 или 0x65. Тези съобщения определят как съобщенията контрола за специфични данни, които следват, ще влияят на някакъв вид контрола, която е регистрирана в сдружението International MIDI Association с определен номер.

Регистрираните параметри следователно разширяват възможностите за съобщения "контрола" над границата от 128 възможни контроли. Съобщението "транспониране" в MIDI например транспонира един от каналите в MIDI, като стойността на транспониране е между 0x0000 и 0x3FFF. 0x2000 е винаги в средата (няма транспониране). 0x0000 обикновено (но не винаги) е с два полутона надолу и 0x3FFF обикновено (но не винаги) е с два полутона нагоре. Няма възможни съобщения контрола в MIDI, а и други съобщения в MIDI, които да позволяват да се определи интервала между 0x0000 и 0x3FFF точно като брой полутонове или по друг начин. Сдружението International MIDI Association обаче, е запазило (регистрирало) един параметър за съобщението контрола в MIDI със стойности на контролата 0x64 и 0x65, което позволява да се определи интервала на транспониране точно със съобщенията контрола, които следват.

Пример

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

0xB0 0x64 0x00
0xB0 0x65 0x00

Статусният байт 0xB0 показва, че и двете съобщения са контроли за канал 0. Първата контрола има стойността 0x64, което означава, че това е контролата регистриран параметър (прецизен, долни битове). Втората контрола има стойността 0x65, което означава, че това е контролата регистриран параметър (непрецизен, горни битове). Последните два байта на двете съобщения са 0x00 и 0x00, което ще покаже на устройството MIDI, че интервалът за транспониране ще бъде променен. Тези две стойности са регистрирани в сдружението International MIDI Association да носят такава информация. Накратко, двете съобщения ще кажат на устройството MIDI, че интервалът за транспониране ще бъде променен. Устройството MIDI тогава ще очаква съобщения за данни или за промяна в данните, които ще определят новия интервал за транспониране.

За да промени интервала за транспониране действителност, устройството MIDI трябва да получи две съобщения подобни на тези по-долу. Да предположим, че устройството получи следните съобщения.

0xB0 0x06 0x02
0xB0 0x26 0x03

Статусният байт 0xB0 показва, че и двете съобщения са контроли за канал 0. Първото съобщения носи стойност на контролата 0x06, което означава, че това е контролата "стойност на данните (непрецизна)". Второто съобщения носи стойност на контролата 0x26, което означава, че това е контролата "стойност на данните (прецизна)". Тъй като устройството MIDI очаква промяна в интервала за транспониране, то ще преведе третите байтове на съобщенията по следния начин: Непрецизната стойност на данните е 0x02, което означава, че интервалът за транспониране е +/- 2 полутона. Прецизната стойност на данните е 0x03, което означава, че интервалът за транспониране е +/- 3 цента. Следователно, интервалът за транспониране е точно определен. Транспонирането може да е надолу най-много до два полутона и три цента при 0x0000 или нагоре най-много до два полутона и три цента при 0x3FFF.

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

0xB0 0x64 0x7F
0xB0 0x65 0x7F

Статусният байт 0xB0 показва, че и двете съобщения са контроли за канал 0. Те носят стойностите на контролите 0x64 и 0x65 и следователно са контроли с регистрирани параметри (прецизна и непрецизна). Регистрираните параметри са 0x7F, което показва, че това е края на поредицата от съобщения за контрола чрез регистрирани параметри.

Протокол за изпращането на съобщения контроли с регистрирани параметри

За правилното използване на съобщенията контроли с регистрирани параметри (RPN) трябва да се изпрати следната поредица от съобщения до едно устройство MIDI.

  1. Две съобщения контроли със стойности на контролите 0x64 и 0x65 и със стойности на регистрираните параметри, които определят какво ще следва. Стойностите на третите байтове на тези две съобщения ще бъдат комбинирани в една 14-битова стойност след като се махне най-горния бит на всяка от двете стойности. 14-битовата стойност е регистрирана със сдружението International MIDI Association (IMA) и определя целта на съобщенията, които следват (0x0000 например означава нов интервал за транспонирането; други стойности са показани по-долу).
  2. Едно или две съобщения за "стойности на данните", които показват какво трябва да се направи с определената контрола. Съобщенията за стойности на данните имат стойности на контролите 0x06 и 0x26 (непрецизна стойност и прецизна стойност съответно). В зависимост от регистрирания параметър определен с двете съобщения по-горе, съобщението за прецизна стойност на данните (0x26) може да не се използва. Стойностите на третите байтове на двете съобщения за стойности на данните също ще бъдат събрани в една 14-битова стойност след премахването на най-важния бит на всеки от байтовете. 14-битовата стойност има различно значение в зависимост от контролата, с която се работи. Ако регистрираният параметър е този за интервала на транспонирането както в по-горния пример и ако стойностите на съобщенията стойности на данните имат събраната стойност 0x0103 (които, разделени на две 7-битови стойности, стават 0x02 и 0x03), тогава транспонирането може да е +/- два полутона и три цента както в по-горния пример. Като алтернатива на съобщенията стойности на данните, устройството MIDI може да получи и съобщения за "увеличаване на данните" или "намаляване на данните". Това са съобщения контрола в MIDI със стойност на контролите 0x60 и 0x61 и, вместо да определят точната нова стойност на контролата, тези съобщения увеличават или намаляват сегашната стойност на контролата. Пример за тези съобщения е показан по-долу.
  3. Две съобщения контроли със стойност на контролите 0x64 и 0x65 и със стойности 0x7F и 0x7F. Тези съобщения определят края на поредицата от съобщения. Те не са задължителни, но е добре да бъдат изпратени. Ако тези съобщения не са изпратени, тогава непрецизната и прецизната контрола ще останат определени и едно случайно и може би погрешно съобщение може да има нежелан ефект.

Регистрирани параметри

Следното е списък на 14-битови стойности на контролите 0x64 и 0x65, които са регистрирани при IMA.

0x0000 – Интервал на транспонирането
0x0001 – Прецизна настройка
0x0002 – Непрецизна настройка
0x0003 – Избор на програмата за настройка
0x0004 – Избор на сбирката от програми за настройка
0x0005 – Промяна на "дълбочината" на вибратото

Интервал на транспонирането: Поредицата от съобщения с този регистриран параметър променя интервала за транспониране със съобщението транспониране в MIDI. В тази поредица трябва да се използват и двете (прецизни и непрецизни) съобщения.

Прецизна настройка: Поредицата от съобщения с този регистриран параметър променя настройката на един канал. Ако 14-битовата стойност на съобщенията със стойности на данните е 0x2000, тогава настройката е средна с Ла = 440 Hz. Целият интервал (от 0x0000 до 0x3FFF на 14-битовата стойност) е от два полутона. Така, настройката може да се променя до един полутон нагоре или надолу. Тъй като един полутон е равен на 100 цента и разстоянието между центъра 0x2000 и всяка от границите на интервала е 8192 (десетична стойност) една промяна от една единица е равна на 100 / 8192 = 0.0122 цента (приблизително). Стойността 0x2001 например означава, че Ла е 440 Hz плюс 0.0122 цента, което е A = 440.0031 Hz.

Непрецизна настройка: Непрецизната настройка работи по същия начин, но използва само съобщението за непрецизна стойност на данните. 0x20 е средната настройка Ла = 440 Hz и една единица променя настройката с един цял полутон (0x21 например е промяна с цял полутон нагоре).

Избор на програма или сбирка от програми за настройка: Тези регистрирани параметри не се използват често. Най-вероятно тези регистрирани параметри използват настройка, която не е равномерна.

Промяна на "дълбочината" на вибратото: Този регистриран параметър променя дълбочината на вибратото, но в протокола General MIDI не е определена нито максималната нито минималната дълбочина. Производителя на устройства MIDI може сам да ги избере. Според сдружението MIDI Manufacturer Association, този регистриран параметър може да се използва и за други неща освен за вибратото.

Първите три регистрирани параметри по-горе (интервала за транспонирането, фината настройка и грубата настройка) са част от стандарта General MIDI 1. Дълбочината на вибратото бе добавена със стандарта General MIDI 2. Останалите параметри вероятно са добавени след това.

Пример

За да се настрой канал 0 с непрецизната настройка към Ла = 440 Hz, устройството MIDI първо трябва да получи следните съобщения

0xB0 0x65 0x00
0xB0 0x64 0x02

Статусният байт 0xB0 показва, че това са съобщенията контрола за канал 0. Контролите са 0x65 и 0x64, което са контролите за непрецизния и прецизния регистрирани параметри. Стойностите 0x00 и 0x02 имат двоичните стойности 0x00000000 и 0x00000010 и образуват 14-битовата стойност 0x00000000000010, което е шестнадесетичната стойност 0x0002. Тази стойност означава, че това са съобщения за промяна на непрецизната настройка на канала. Така, тези съобщения определят, че непрецизната настройка на канал 0 ще бъде променена.

Устройството MIDI тогава ще получи и следното съобщение.

0xB0 0x06 0x40

Със статусен байт 0xB0 това съобщение е контрола за канал 0. Стойността на контролата е 0x06, което означава, че това е непрецизната стойност на данните. Стойността на данните е 0x40, което е двоичната стойност 0x01000000 и образува горните седем бита на 14-битовата стойност 0x10000000000000 или 0x2000. Тази стойност е средната настройка Ла = 440 Hz. Съобщението за прецизната стойност на данните не е нужно.

За да се знае, че тази поредица от съобщения е завършена, устройството MIDI би трябвало да получи и следните две съобщения.

0xB0 0x64 0x7F
0xB0 0x65 0x7F

Пример

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

0xB0 0x65 0x00
0xB0 0x64 0x01

Стойностите 0x00 и 0x01 имат 14-битовата шестнадесетична стойност 0x0001, което означава, че това е поредицата за прецизната настройка на канал 0.

След това устройството ще получи следните съобщения.

0xB0 0x06 0x40
0xB0 0x26 0x01

Тези съобщения имат стойностите 0x40 и 0x01, които образуват 14-битовата шестнадесетична стойност 0x2001. Това е настройката приблизително Ла = 440.0031 Hz.

Поредицата от съобщения за регистрирани параметри ще бъде завършена с двете съобщения 0xB0 0x64 0x7F и 0xB0 0x65 0x7F.

Пример

Да предположим, че настройката вече е 0x2001 (Ла = 440.0031 Hz) и че искаме да я променим на 0x2002. Вместо да изпратим една цяла нова поредица от съобщения за определения регистриран параметър, можем да използваме едно съобщение за увеличаване на данните (даже преди да се завърши поредицата за този регистриран параметър).

Това съобщение би било следното.

0xB0 0x60 0x00

0xB0 показва, че това е контрола за канал 0. 0x60 определя, че това е съобщението за прецизно увеличение в данните. Настройката на канала това ще бъде увеличена с един цент от 0x2001 до 0x2002. Последният байт (0x00) в съобщението не се използва и може да бъде каквото и да е.

Нерегистрирани параметри (от англ. non-registered parameter numbers (NRPN))

Нерегистрираните параметри работят по същия начин, но използват стойности на контролите 0x62 и 0x63 и не трябва да са регистрирани с IMA. Така производителите могат да ги използват както искат и предопределени стандарти не съществуват.

Виж също:
Протокол Musical Instrument Digital Interface (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.