---
title: sysex-dx7
desc: Yamaha DX7 як еталон SysEx-реалізації — формат bulk-дампу на 32 голоси, структура 155-байтного патча, checksum і .syx-файли без обгортки.
locked: false
order: 11
section: music
cycle: sysex
featured: false
---

# Yamaha DX7 — еталон реалізації

Цикл «Анатомія SysEx»: [1. Анатомія SysEx](/music/sysex-anatomy/) · **2. Yamaha DX7** · [3. Roland/Korg/Sequential/Circuit Tracks](/music/sysex-vendors/) · [4. DAW та тулінг](/music/sysex-daw-tooling/) · [5. MIDI-CI та MIDI 2.0](/music/sysex-midi-ci/)

Yamaha DX7 (1983) коштував $2000 замість $10 000+ за аналогових конкурентів і розійшовся тиражем понад 200 000 одиниць. Кожен передавав патчі через SysEx, і саме DX7-реалізація стала де-факто зразком — чіткою, передбачуваною, добре задокументованою. Її вивчали всі, хто писав MIDI-софт у 80-х.

## Типи повідомлень

Parameter Change — зміна одного параметра в реальному часі:

```
F0 43 0n 00 pp vv F7
         n = MIDI channel (0-15)
         pp = parameter number (0-155)
         vv = value
```

Bulk Voice Dump Request — запит дампу 32 голосів:

```
F0 43 2n 00 F7
```

Bulk Voice Data — самі 32 голоси, 4096 байт:

```
F0 43 0n 09 20 00 [4096 bytes] cs F7
                   32 voices x 128 bytes each
```

Single Voice Dump — один голос, 155 байт:

```
F0 43 0n 00 01 1B [155 bytes] cs F7
```

## Структура голосу (155 байт)

Шість FM-операторів по 17 параметрів (102 байти) плюс 53 байти глобальних параметрів:

| Зміщення | Байтів | Параметр |
| --- | --- | --- |
| 0–101 | 102 | 6 операторів (17 байт кожен) |
| 102–109 | 8 | Pitch EG (4 Rate + 4 Level) |
| 110 | 1 | Algorithm (0–31) |
| 111 | 1 | Feedback + Osc Sync |
| 112–116 | 5 | LFO |
| 118–127 | 10 | Voice name (ASCII) |

Один оператор: EG Rate ×4, EG Level ×4, Keyboard Level Scaling ×4, Rate Scaling, AMS+Velocity, Output Level, Freq Coarse+Fine.

## Checksum і .syx

```python
def yamaha_checksum(data):
    return (-sum(data)) & 0x7F

def validate_dx7_dump(sysex):
    data = sysex[6:-2]
    cs = sysex[-2]
    return yamaha_checksum(data) == cs
```

`.syx` — це голі байти SysEx-повідомлення без заголовків: перший байт F0, останній F7.

```python
with open('dx7_patch.syx', 'rb') as f:
    data = list(f.read())

assert data[0] == 0xF0 and data[1] == 0x43 and data[3] == 0x09 and data[-1] == 0xF7

name_bytes = data[6+118 : 6+128]
voice_name = bytes(name_bytes).decode('ascii', errors='replace').strip()
```

## Практичне попередження

DX7 замінює голос при отриманні bulk-дампу без підтвердження й без undo. 32 нові голоси — і старі зникли назавжди. Dump у файл перед будь-якою відправкою, завжди.

## Further reading

- [DX7 MIDI Implementation (Yamaha PDF)](https://usa.yamaha.com/files/download/other_assets/9/333979/DX7MIDIE.PDF)
- [DEXED — open source DX7 плагін з повним SysEx support](https://asb2m10.github.io/dexed/)
- [DX7 patch archive — patches.fm](https://patches.fm/dx7)

<div class="ps">
<div class="ps-label">P.S. — один патч, ціла епоха</div>

Preset 11 заводської бібліотеки DX7 — «E.PIANO 1» — це електропіано з Take On Me, Jump і половини хітів Whitney Houston. FM-синтез придумав Джон Чоунінг у Стенфорді в кінці 60-х; університет продав ліцензію Yamaha за $1.2 млн авансу плюс роялті і заробив на ній близько $20 млн за 22 роки дії патенту. Чоунінгу зараз 87, і він досі композитор.

</div>
