Yamaha YM3812
Yamaha YM3812, также известная как OPL2 (сокращение для FM Operator Type-L) — электронный компонент, микросхема звукогенератора, разработанная компанией Yamaha в середине 1980-х годов (на подложке кристалла указан 1985 год). Получила известность благодаря широкому применению в ранних звуковых картах для IBM PC-совместимых компьютеров, таких как AdLib и Sound Blaster.
Микросхема имеет обратную совместимость с микросхемой OPL (YM3526), и по сути является немного улучшенной её версией — основные различия заключаются в добавлении трёх вариантов формы сигнала для генераторов частоты. Существует улучшенная версия OPL2 — OPL3 (YMF262), которая также стала популярной и использовалась в более поздних звуковых картах, например в Sound Blaster 16. Другая микросхема со сходными возможностями — YM2413 (OPLL), является упрощённой версией OPL.
С точки зрения программиста, микросхема представляет собой набор из 244 регистров, доступных только на запись. Она может генерировать 9-канальный звук, каждый из каналов имеет по два генератора. Генераторы могут создавать синусоидальные колебания, из которых можно получить три другие формы сигнала — один полупериод синусоиды может быть инвертирован или отключён, а также может быть отключена одна четверть периода, что создаёт сигнал приблизительно пилообразной формы. Такой необычный способ получения разных форм сигнала создаёт характерное для YM3812 звучание. Каждый генератор сигнала имеет свой генератор амплитудной огибающей ADSR-типа. Основной метод синтеза — частотная модуляция, при котором генераторы одного канала модулируют друг друга различными способами.
Краткое описание назначения управляющих регистров:
Параметры каналов:
- Основная частота (10 разрядов)
- Октава (3 разряда)
- Включение и выключение ноты
- Режим синтеза (FM, или простой аддитивный)
- Обратная связь (0-7, уровень самомодуляции)
Параметры генераторов (два набора для каждого канала):
- Умножение частоты (может быть 1/2, 1..10, 12 или 15)
- Форма сигнала (синусоида, полусинусоида, абсолютная синусоида, четверть синусоиды)
- Громкость (0-63, используется логарифмическая шкала)
- Параметры огибающей ADSR (4 разряда для каждого, логарифмическая шкала)
- Амплитудная модуляция (включена или выключена)
- Частотная модуляция (включена или выключена)
- Удержание звука (включено или выключено)
- Изменение скорости амплитудной огибающей в зависимости от высоты тона (включено или выключено)
- Изменение громкости в зависимости от тона (0-3)
Дополнительные общие параметры:
- Глубина частотного вибрато
- Глубина амплитудного вибрато
- Режим перкуссии (использует 3 из 9 каналов для имитации 5 различных ударных инструментов)
- Режим составной синусоиды (никогда не использовался, и не работает на OPL3)
Звук генерируется полностью цифровой схемой и выводится на внешний ЦАП (YM3014B) в виде потока чисел с плавающей точкой, с частотой дискретизации приблизительно 49720 Гц.
Инструмент OpulenZ из Linux Multimedia Studio является эмулятором данной микросхемы.