169 реализация midi – Инструкция по эксплуатации Roland V-Synth

Страница 167

Advertising
background image

169

Реализация MIDI

Пр

ил

оже

н

и

я

Примеры эксклюзивных системных

сообщений и вычисления контрольной

суммы

Эксклюзивные сообщения Roland (RQ1, DT1) передаются с контрольной суммой в
конце (перед F7), что дает возможность подтвердить правильность приема.
Значение контрольной суммы определяется адресом и данными (или размером)
передающегося эксклюзивного сообщения.

Как

рассчитывать

контрольную

сумму

-

checksum

Литерой H помечены числа в шестнадцатеричном представлении.
Контрольная сумма - это величина, полученная сложением адреса, размера и самой
контрольной суммы, инвертируя нижние 7 бит.
Ниже приведен пример вычисления контрольной суммы. Мы предполагаем, что в
передаваемом нами эксклюзивном системном сообщении адресом является aa bb cc
ddH, а данные (или размер) - ee ffH.

aa + bb + cc + dd + ee + ff = sum (сумма)
sum ч 128 = quotient (частное) ... remainder (остаток)
128 - remainder = checksum (контрольная сумма)

Пример 1. Установка в патче типа хоруса CHORUS TYPE - CHORUS

1 (DT1)

В соответствии с “Карта адресов параметров” (стр. 159), начальный адрес
временного патча - 10 00 00 00H, смещение адреса (address offset) для PATCH CHORUS
в общей группе PATCH - 04 00H, а адрес типа хоруса - 00 00H. Поэтому адрес типа
хоруса в группе параметров PATCH CHORUS будет:

10 00 00 00H

04 00H

+) 00 00H

10 00 04 00H

CHORUS 1 имеет значение 01H.
Таким образом, эксклюзивное системное сообщение, которое следует послать, будет
таким:

F0

41

10

00 53

12

10 00 04 00

01

??

F7

(1)

(2)

(3)

(4)

(5)

адрес

данные контрольная (6)

сумма

(1) Статус эксклюзивного системного сообщения.
(2) Идентификация производителя (Roland)
(3) Идентификация прибора (17)
(4) Идентификация модели (V-Synth)
(5) Идентификация команды (данные DT1)
(6) Окончание эксклюзивного системного сообщения.

Теперь вычислим контрольную сумму.

10H + 00H + 04H + 00H + 01H = 16 + 0 + 4 + 0 + 1 = 21 (сумма)
21 (сумма) / 128 = 0 (частное) ... 21 (остаток)
контрольная сумма checksum = 128 - 21 (остаток) = 107 = 6BH

Это означает, что должно быть послано сообщение F0 41 10 00 53 12 10 00 04 00 01 6B F7.

Пример 2. Получение данных (RQ1) о мультиэффектах патча 003.

В соответствии с “Карта адресов параметров” (стр. 159), начальный адрес патча
PATCH:003 - 20 02 00 00H. Смещение адреса (offset address) для мультиэффектов
PATCH MFX - 00 02 00H.
Таким образом, начальный адрес для PATCH MFX в патче PATCH:003:

20 02 00 00H

+) 00 02 00H

20 02 02 00H

Так как размер PATCH MFX - 00 00 01 04H, следует послать эксклюзивное системное
сообщение:

F0

41

10

00 53

11

20 02 02 00

00 00 01 04

??

F7

(1)

(2)

(3)

(4)

(5)

адрес

данные контрольная (6)

сумма

(1) Статус эксклюзивного системного сообщения.
(2) Идентификация производителя (Roland)
(3) Идентификация прибора (17)
(4) Идентификация модели (V-Synth)
(5) Идентификация команды (запрос RQ1)
(6) Окончание эксклюзивного системного сообщения

Теперь вычислим контрольную сумму.

20H + 02H + 02H + 00H + 00H + 00H + 01H + 04H = 32 + 2 + 2 + 0 + 0 + 0 + 1 + 4
= 41 (сумма)
117 (сумма) / 128 = 0 (частное) ... 41 (остаток)

контрольная сумма checksum = 128 - 41 (остаток) = 87 = 57H

Это означает, что должно быть послано сообщение F0 41 10 00 53 11 20 02 02 00 00 00 01
04 57 F7.

Пример 3. Получение информации о временном патче (партия 1)

(RQ1)

Эта операция имеет то же назначение, что и функция Data Transfer в режиме Utility,
когда задана опция "PATCH:TEMP" в качестве исходного параметра (Source
Parameter).

В соответствии с “Карта адресов параметров” (стр. 159), начальный адрес
временного патча Temporary Patch следующий:

10 00 00 00

Temporary Patch (Part 1)

Смещение адреса (offset address) для патча:

00 00 00

Patch Common

:

00 10 00

Patch Oscillator (Zone 1)

:

00 20 00

Patch Envelope (Zone 1)

:

00 40 00

Patch LFO (Zone 1)

:

00 50 00

Patch COSM1 (Zone 1)

:

00 60 00

Patch COSM2 (Zone 1)

:

00 70 00

Patch Arpeggio (Note 1)

:

00 7F 00

Patch Arpeggio (Note 16)

Так как размер данных для арпеджио - 00 00 00 42H, суммирование размера и
начального адреса для арпеджио (Note 16) даст:

10 00 00 00H

00 00 7F 00H

+) 00 00 00 42H

10 00 7F 42H

А размер, которые следует получить, будет:

10 00 7F 42H

-) 10 00 00 00H

00 00 7F 42H

Поэтому следует послать эксклюзивное системное сообщение:

F0

41

10

00 53

11

10 00 00 00

00 00 7F 42

??

F7

(1)

(2)

(3)

(4)

(5)

адрес данные контрольная (6)

сумма

(1) Статус эксклюзивного системного сообщения.
(2) Идентификация производителя (Roland)
(3) Идентификация прибора (17)
(4) Идентификация модели (V-Synth)
(5) Идентификация команды (запрос RQ1)
(6) Окончание эксклюзивного системного сообщения.

Теперь вычислим контрольную сумму, как в примере 2. Получаем сообщение:
F0 41 10 00 53 11 10 00 00 00 00 00 7F 42 2F F7.

Advertising