Дополнительный материал, 324 midi-реализация, Òàáëèöà äåñÿòåðè÷íûõ è øåñòíàäöàòåðè÷íûõ âåëè÷èí – Инструкция по эксплуатации Roland Fantom-X6

Страница 322: Ïðèìåðû ôàêòè÷åñêèõ midi ñîîáùåíèé

Advertising
background image

324

MIDI-реализация

6. Дополнительный материал

„ Òàáëèöà äåñÿòåðè÷íûõ è
øåñòíàäöàòåðè÷íûõ âåëè÷èí.

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

+——————+——————++——————+——————++——————+——————++——————+——————+

| D | H || D | H || D | H || D | H |

+——————+——————++——————+——————++——————+——————++——————+——————+

| 0 | 00H || 32 | 20H || 64 | 40H || 96 | 60H |

| 1 | 01H || 33 | 21H || 65 | 41H || 97 | 61H |

| 2 | 02H || 34 | 22H || 66 | 42H || 98 | 62H |

| 3 | 03H || 35 | 23H || 67 | 43H || 99 | 63H |

| 4 | 04H || 36 | 24H || 68 | 44H || 100 | 64H |

| 5 | 05H || 37 | 25H || 69 | 45H || 101 | 65H |

| 6 | 06H || 38 | 26H || 70 | 46H || 102 | 66H |

| 7 | 07H || 39 | 27H || 71 | 47H || 103 | 67H |

| 8 | 08H || 40 | 28H || 72 | 48H || 104 | 68H |

| 9 | 09H || 41 | 29H || 73 | 49H || 105 | 69H |

| 10 | 0AH || 42 | 2AH || 74 | 4AH || 106 | 6AH |

| 11 | 0BH || 43 | 2BH || 75 | 4BH || 107 | 6BH |

| 12 | 0CH || 44 | 2CH || 76 | 4CH || 108 | 6CH |

| 13 | 0DH || 45 | 2DH || 77 | 4DH || 109 | 6DH |

| 14 | 0EH || 46 | 2EH || 78 | 4EH || 110 | 6EH |

| 15 | 0FH || 47 | 2FH || 79 | 4FH || 111 | 6FH |

| 16 | 10H || 48 | 30H || 80 | 50H || 112 | 70H |

| 17 | 11H || 49 | 31H || 81 | 51H || 113 | 71H |

| 18 | 12H || 50 | 32H || 82 | 52H || 114 | 72H |

| 19 | 13H || 51 | 33H || 83 | 53H || 115 | 73H |

| 20 | 14H || 52 | 34H || 84 | 54H || 116 | 74H |

| 21 | 15H || 53 | 35H || 85 | 55H || 117 | 75H |

| 22 | 16H || 54 | 36H || 86 | 56H || 118 | 76H |

| 23 | 17H || 55 | 37H || 87 | 57H || 119 | 77H |

| 24 | 18H || 56 | 38H || 88 | 58H || 120 | 78H |

| 25 | 19H || 57 | 39H || 89 | 59H || 121 | 79H |

| 26 | 1AH || 58 | 3AH || 90 | 5AH || 122 | 7AH |

| 27 | 1BH || 59 | 3BH || 91 | 5BH || 123 | 7BH |

| 28 | 1CH || 60 | 3CH || 92 | 5CH || 124 | 7CH |

| 29 | 1DH || 61 | 3DH || 93 | 5DH || 125 | 7DH |

| 30 | 1EH || 62 | 3EH || 94 | 5EH || 126 | 7EH |

| 31 | 1FH || 63 | 3FH || 95 | 5FH || 127 | 7FH |

+——————+——————++——————+——————++——————+——————++——————+——————+
*

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

*

7-битный байт может выражать данные в диапазоне 128 шагов. Для данных, где
необходима более высокая точность, мы должны использовать 2 или более байта.
Например, два шестнадцатеричных числа aa bbH, выражающих два 7-битных байта,
обозначают величину aa x 128 + bb.

*

В случае если величины имеют знак +/-, то 00H = -64, 40H = +/-0, а 7FH = +63, поэтому
десятеричное выражение будет на 64 меньше, чем величина, данная в вышеприведенной
таблице. В случае с двумя типами, 00 00Н = -8192, 40 00Н = +/-0, а 7F 7FH = + 8191.
Например, если aa bbH выражены как десятеричные, получится aa bbH-40 00H = aa x 128
+ bb-64 x 128.

*

Данные, обозначенные как "Использование полубайтовых данных" выражены в 4-битных
единицах. Величина, выраженная как 2-байтовая полубайтовая 0а 0bH обозначает
величину х 16+b.

<Ïðèìåð 1> Êàêèì ÿâëÿåòñÿ äåñÿòåðè÷íîå âûðàæåíèå 5ÀÍ?
Èç âûøåïðèâåäåííîé òàáëèöû: 5ÀÍ = 90

<Ïðèìåð 2> Êàêîå äåñÿòåðè÷íîå âûðàæåíèå âåëè÷èíû 12 34Í,

äàííîé êàê øåñòíàäöàòåðè÷íàÿ äëÿ êàæäîãî 7-áèòíîãî
áàéòà?

Из вышеприведенной таблицы: поскольку 12Н = 18, 34Н = 52, то 18 х 128 + 52 = 2356

<Ïðèìåð 3> Êàêîå äåñÿòåðè÷íîå âûðàæåíèå ïîëóáàéòîâîé

âåëè÷èíû 0À 03 09 0D?

Из вышеприведенной таблицы: поскольку OAH = 10, 03Н = 3, 09Н = 9, 0DH = 13, то ((10 х 16 +
3) х 16 + 3 = 41885

<Ïðèìåð 4> Êàêîå ïîëóáàéòîâîå âûðàæåíèå äåñÿòåðè÷íîé

âåëè÷èíû 1258?

16 ) 1258

16 ) 78 ...10

16 ) 4 ...14

0 ... 4

Поскольку, исходя из вышеприведенной таблицы, 0 = 00Н, 4 = 04Н, 14 = 0ЕН, 10 = 0АН, то в
результате: 00 04 0Е 0АН.

„ Ïðèìåðû ôàêòè÷åñêèõ MIDI ñîîáùåíèé.

<Ïðèìåð 1> 92 3E 5F

"9n" - состояние "Note-on", а "n" - номер MIDI канала. Поскольку 2Н = 2, 3ЕН = 62 и 5FH = 95,
то это - сигнал "Note-on" с MIDI CH (MIDI-каналом) = 3, номером ноты 62 (название ноты D4)
и скоростью 95.

<Ïðèìåð 2> CÅ 49

CnH - состояние "Program Change/Изменение программы" и "n" - номер MIDI канала.
Поскольку ЕН = 14, а 49Н = 73, то это - сигнал "Program Change/Изменение программы" с
MIDI CH = 15, номером программы 74.

<Ïðèìåð 3> EA 00 28

EnH - состояние "Pitch Bend Change/Изменение изгиба питча" и "n" - номер MIDI канала.
Второй байт (00Н=0) - LSB, а 3-й байт (28Н=40) - MSB, но величина изгиба питча является
числом cо знаком, в котором 40 00Н (=64 х 128 + 0 = 8192) - 0, поэтому эта величина изгиба
питча равна 28 00Н-40 00Н = 40 х 128 + 0-(64 х 128+0) = 5120-8192 =-3072

Если чувствительность изгиба питча установлена на 2 полутона, то -8192 (00 00Н) вызовет
изменение питча на -200 центов, так что в этом случае -200 х (-3072) (-8192) = -75 центов
изгиба питча, применяемого к MIDI-каналу 11.

<Ïðèìåð 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F

BnH - состояние "Control Change" и "n" - номер MIDI-канала. Относительно "Control Changes/
Смен режимов управления", 2-й байт - номер управления, а 3-й байт - величина. Когда два или
более сообщения подряд имеют одинаковое состояние, MIDI выдает положение "бегущее
состояние", которое позволяет стирать байт состояния второго и следующих сообщений.
Таким образом, приведенные выше сообщения, имеют следующее значение.

В3

64 00 (MIDI-кан.4) нижний байт номера параметра RPN:

00Н

(В3)

65 00 (MIDI-кан.4) верхний байт номера параметра RPN:

00Н

(В3)

06 0С (MIDI-кан.4) верхний байт величины параметра:

0СН

(В3)

26 00 (MIDI-кан.4) нижний байт величины параметра:

00Н

(В3)

64 7F (MIDI-кан.4) нижний байт номера параметра RPN:

7FH

(B3)

65 7F (MIDI-кан.4) верхний байт номера параметра RPN:

7FH

Иными словами, приведенные выше сообщения определяют величину 0С 00Н для номера
параметра RPN 00 00Н на MIDI-канале 4, а затем устанавливают номер параметра RPN на 7F
7FH.

Номер параметра RPN 00 00Н является чувствительностью изгиба питча, а MSB величины
указывает единицы в полутонах, величина 0СН = 12 устанавливает максимальный диапазон
изгиба питча на +- 12 полутонов (1 октава). (На GS-звуковых генераторах LSB
чувствительности изгиба питча игнорируется, но LSB следует передавать в любом случае (с
величиной 0), так чтобы операция была правильной на любом устройстве.)

После определения номера параметра для RPN и NRPN, все сообщения ввода данных (Data
Entry), которые передаются на том же канале, будут действительными, так что после передачи
нужной величины неплохо было бы установить номер параметра на 7F 7FH во избежание
сбоев. Поэтому (В3) 64 7F (B3) 65 7F находятся в конце.

События бегущего состояния для данных исполнения (таких как Standard MIDI File data/
данные стандартного MIDI-файла), как указано в <Примере 4>, нежелательны. Потому что,
если воспроизведение прекращается во время сонга, а затем перематывается вперед или назад,
секвенсер может и не передать правильное состояние и тогда звуковой генератор неправильно
интерпретирует данные. Обязательно предоставьте каждому событию собственное состояние.

Также необходимо произвести в соответствующем порядке установку номера параметра и
установку величины RPN или NRPN . На некоторых секвенсерах события, происходящие в
одинаковом (или последовательном) хронометраже, могут передаваться в порядке, отличном
от порядка, в котором они принимались. Поэтому, неплохо было бы немного изменить
хронометраж каждого события (около 1 тика для TPQN = 96 и около 5 тиков для TPQN = 480).

*

TPQN: тики на длительность четвертной ноты.

Advertising
Эта инструкция подходит к следующим моделям: