Простая MIDI-клавиатура из синтезатора-игрушки (А.В.Пахомов)

Статья опубликована в журнале "Радио" №1, 2009. В статье описывается простая MIDI-клавиатура выполненная на базе клавишного блока синтезатора Elenberg MS-4920, продаваемого в известной сети магазинов электроники. Принципиальная схема контроллера клавиатуры выполнена по традиционной схеме опроса матрицы нормально разомкнутых контактов на базе MCS-51 (использована микросхема Atmel AT89C51). Использование готовой клавиатуры с большим количеством дополнительных кнопок (около сотни) и микроконтроллера с достаточным числом линий ввода-вывода, позволило упростить схему с одновременным добавлением функций MIDI-клавиатуре. Разработанное устройство предназначено для подключения к персональному компьютеру (ПК) через GAME порт звуковой карты (используются контакты MIDI интерфейса), поэтому лишено стандартных MIDI разъемов. Питание клавиатуры осуществляется от того же порта ПК (5В).

Введение

Купленный ребенку синтезатор Elenberg MS-4920 с довольно большой натяжкой можно назвать музыкальным инструментом, скорее это хорошая большая музыкальная игрушка. Всего за 400-600 рублей ребенок получил устройство, имитирующее звучание нескольких музыкальных инструментов, воспроизводящее несколько ритмических групп, имеющее возможность записи во внутреннюю память недлинных мелодий. Но, как и ко всякой несерьезной игрушке, через две-три недели интерес к синтезатору пропал… И тут проснулся интерес у папы, с детства мечтавшем об электронном инструменте, да к тому же имевшего квалификацию радиоинженера. Разобрал, изучил, вспомнил о существовании компьютера, MIDI-интерфейса (начальные сведения можно почерпнуть, например, в [1]), "интеловского" MCS-51, с которым в свое время пришлось работать - в общем, родилась MIDI-клавиатура, а позднее и эта статья. Описываемая клавиатура формирует две основные MIDI команды: включить ноту и выключить ноту. Номер MIDI канала (один из 16) можно выбрать после включения, либо в любой момент по нажатию специальной кнопки. Номер клавиши формируется в диапазоне от 17 до 122. Такой диапазон (восемь октав при 49 клавишах) достигается путем сдвига диапазона клавиатуры вверх или вниз на одну - две октавы. Скорость нажатия клавиш выбирается из шести фиксированных значений. Кроме основных команд клавиатура формирует команду смена управления для четырех выключателей.

Описание схемы

Синтезатор состоит из 49 музыкальных клавиш, объединенных в матрицу 5 х 10, 47 кнопок управления, так же объединенных в матрицу 5 х 10, микроконтроллера неизвестной марки с 40 выводами, платы усилителя мощности со стабилизатором питания и двух динамиков. Все это "упаковано" в элегантный пластмассовый корпус. Анализ конструкции показал, что, заменив "родной" микроконтроллер новым (правда, со своей синхронизацией и цепями сброса), можно получить доступ ко всем кнопкам и светодиодам (их четыре плюс индикатор питания) синтезатора. Принципиальная схема разработанного контроллера показана на рисунке 1 (файл kb_midi_shema.bmp). Микроконтроллер DD1 AT89C51 включен по стандартной схеме с кварцевым резонатором Q1 на 12 МГц. Цепи опроса клавиатуры (порты 0, 1 и частично 3), практически, совпадают с опубликованной в [2]. Буферные инверторы DD2.1, DD2.6 установлены из страха "спалить" DD1 при случайной коммутации разъемов при включенном питании. Если страха нет, эти элементы можно не устанавливать. Для подключения клавиатуры пришлось приобрести для компьютера звуковую карту с GAME-портом. На схеме показаны используемые контакты порта (разъем Х2, используются линии питания и MIDI вход). "Условный" разъем Х1 обозначает контакты изъятого "родного" микроконтроллера синтезатора. Через эти контакты "новый" контроллер подпаивается к плате управления. На плате управления установлены кнопки, обозначенные на принципиальной схеме как 50…71 (далее S50 ... S71). Остальные кнопки управления, имеющиеся на плате, не показаны, т.к. программно не задействованы. Светодиоды V1 ... V5 также установлены на плате управления в ряд (нумерация слева - направо).

Конструктив

Печатная плата для контроллера специально не разрабатывалась. Детали схемы распаяны на макетной плате размерами 40 х 60 мм, фотография платы показана на рисунке 2 (файл kb_midi_plata.bmp).

плата

Подключение контроллера к элементам синтезатора производится следующим образом. Отпаиваются все проводники (кроме шлейфов), связывающие блок (плату) управления, плату усилителя, динамики и разъемы на задней стенке. Аккуратно выпаивается плата с микроконтроллером, при этом надо постараться, чтобы штыри и диоды (используемые в качестве штырей) остались на своих местах в блоке управления - к ним будут припаиваться шлейфы от контроллера. Плата усилителя мощности и стабилизатора напряжения питания удаляется. Плата контроллера крепится на место усилителя мощности тем же саморезом. Провода, связывающие выводы контроллера и контакты блока управления выполнены из компьютерных шлейфов для подключения флоппи-дисководов. В качестве выключателя питания S0 используется штатный выключатель синтезатора, включенный в разрыв провода питания +5В. Один из имеющихся на задней панели разъемов (2-х контактный мини-джек) используется для подачи питания +5В на схему контроллера MIDI-клавиатуры, другой - для вывода сигнала MIDIOUT. Вид на монтаж внутри клавиатуры показан на рисунке 3 (файлы kb_midi_montazh1.JPG или kb_midi_montazh2.JPG).

монтаж в корпусе

Клавиатура подключается к GAME-порту компьютера (Х2) кабелем из двух экранированных жил. Экран используется как общий провод, по центральному проводу одной из жил подается питание, по другому - снимается управляющий сигнал.

Отладка

Как правило, правильно спаянные цифровые устройства не нуждаются в отладке. Рекомендуется перед подачей питания на устройство проверить правильность соединений и отсутствие короткого замыкания по цепям питания. Далее при вынутом процессоре и включенном питании проверяют функционирование микросхемы DD2 замыканием на общий провод выводов панельки процессора 13, 14, 21 и 22 - при этом должны включаться соответствующие светодиоды на панели синтезатора. Вольтметром проверяют изменение напряжения на выходе MIDI Х2 при замыкании вывода 11 панельки процессора с общим проводом, при этом в разъем должен быть вставлен штекер (иначе выход будет замкнут на общий провод - такова конструкция разъема). Естественно, все операции по подключению устройства к компьютеру надо выполнять при обесточенном ПК. Проверять работу клавиатуры удобно с помощью какой-либо программы-секвенсора, которыми, как правило, комплектуются звуковые карты, например старинной Midisoft Studio 4.0 или серьезной программы Cakewalk Pro Audio. Но наиболее наглядной для отладки будет программа MIDI Monitor. Монитор отображает все коды, поступающие через MIDI интерфейс, что очень удобно при отладке программы микроконтроллера.

Описание программы

Коды программы представлены в таблице 1 (файл MDT17.HEX). Текст программы на ассемблере - в таблице 2 (файл mdt17.asm). Огромную помощь в изучении программы может оказать старинная классическая книжка [3]. Алгоритм программы классический: инициализация устройств, сброс ячеек памяти в исходное состояние и цикл опроса кнопок клавиатуры. Система прерываний микроконтроллера не задействуется, выводом MIDI-команд занимается UART. Опрос кнопок производится в цикле: "бегущий 0" на выводах порта 0 микроконтроллера и анализ входных линий портов 1 и 3. Нажатие управляющих кнопок (S50 - S71) отрабатывается сразу же внутри цикла. Состояние "музыкальных" кнопок (S1 - S49) сравнивается с прежним состоянием и при обнаружении факта нажатия и отпускания формируется трех байтовая MIDI-команда "включить ноту" или "выключить ноту" (соответственно первый байт (байт статуса) 9nh или 8nh, где n - номер канала). Вторым байтом идет номер ноты (в нормальном состоянии от 29h (S1) до 59h (S49) - от ФА большой октавы до ФА третьей октавы). В случае сдвига на одну или две октавы из номера ноты вычитается или прибавляется число 12 или 24, таким образом, клавиатура может формировать номера нот от ФА субконтроктавы (11h) до ФА пятой октавы (7Ah). Завершающий (третий) байт команды несет информацию о скорости нажатия (отпускания) клавиши. Этот байт имеет 6 фиксированных значений, устанавливаемых кнопками управления громкостью. Подробнее работу программы можно понять из ее текста, снабженного комментариями.

Функции (инструкция по эксплуатации)

Весь функционал MIDI-клавиатуры определяется программным обеспечением. Представленная в таблице прошивка обеспечивает следующие функции клавиатуры. После включения устройство ожидает нажатия любой клавиши музыкальной клавиатуры, причем нажатие первых 16 белых клавиш обеспечивает выбор MIDI канала (с 1 по 15, 16-ая клавиша - канал 0), любая другая клавиша - канал 1. Индикацией режима ожидания ввода номера канала является мигание четырех светодиодов. Вызвать режим ввода номера рабочего MIDI-канала можно нажатием кнопки S51 (подписанной на панели как "PROG"). Индикация введенного номера продолжается до нажатия любой кнопки клавиатуры. Режим индикации выбранного канала включается кнопкой S50 ("NULL-PLAY"). Кнопки S52, S53, S54, S55, S56 управляют сдвигом диапазона клавиатуры соответственно на 2 или 1 октаву вниз, возврат к нормальному состоянию и сдвиг на 1 или 2 октавы вверх. Состояние диапазона воспроизводимых нот отображается светодиодами (норма - все погашены). Указанные кнопки сгруппированы вместе и подписаны на панели синтезатора соответственно "POP", "MARCH", "RHUMBA", "SLOW ROCK" и "WALTZ". Кнопки S57, S58, S59, S60, S61, S62 управляют громкостью (имитируют скорость нажатия клавиш). Конструктивно кнопки выполнены разного размера (желтые круглые кнопки в правой верхней части синтезатора) - это используется для ассоциации с громкостью. Текущий уровень громкости отображается на светодиодах длиной светящейся линии. Индикация сохраняется до нажатия любой клавиши. Для формирования MIDI-команд "смена управления" используются кнопки S63 ... S70 (верхние два ряда красных кнопок). Нечетные кнопки (верхний ряд) включают программные выключатели с номерами 0 - 3, четные (нижний ряд) их выключают. Состояние выключателей также индицируется светодиодами до нажатия любой клавиши. Состояние выключателей можно просмотреть по нажатию левой красной кнопки в нижнем ряду (S71). По умолчанию, индикатор показывает состояние сдвига диапазона клавиатуры. При нажатии на музыкальную клавишу включаются все индикаторы. Мигание светодиодов означает состояние ожидания ввода MIDI канала. Назначение кнопок управления и формируемые ими команды приведены в таблице 3 (файл tabl_upr_key.xls).

Заключение (достоинства и недостатки, перспективы)

Описанное устройство (рис.4 - файл kb_midi_vid1.JPG или kb_midi_vid2.JPG), конечно же, не претендует на звание серьезного MIDI-инструмента, прежде всего из-за отсутствия анализа скорости нажатия на клавиши (громкости) и отсутствия регуляторов.

клавиатура

Но, тем не менее, благодаря простоте конструкции и наличию неиспользованных резервов (большое число незадействованных кнопок, незанятые 3 Кбайта памяти микроконтроллера), клавиатура может быть использована в качестве полигона для исследования MIDI-интерфейса, семейства микроконтроллеров MCS-51 и возможностей компьютерных программ-секвенсоров. В случае надобности, можно увеличить используемое количество кнопок управления, подключив две незадействованные линии опроса кнопок к свободным выводам порта 2 микроконтроллера (МК), например, 27 вывод МК (P2.6) к контакту 6 платы управления, а вывод 28 МК (Р2.7) к контакту 7. Объясняемое спецификой предполагаемого использования (только пара: ПК и клавиатура), отсутствие стандартных MIDI разъемов может быть легко исправлено заменой схемы подключения на одну из опубликованных в Интернете или литературе, например в [2]. В настоящее время более перспективным было бы использование в качестве микроконтроллера другого семейства процессоров фирмы Atmel - AVR микроконтроллеров. В случае применения такого процессора схема клавиатуры упростилась бы до предела и свелась бы к одной микросхеме без всякого обрамления. Микроконтроллер можно было бы распаять на небольшой плате (по размерам DIP40). Саму плату можно было бы крепить прямо на контактах (штырях) платы управления синтезатора. Применение автором AT89C51 объясняется стремлением достичь быстрых результатов (используем то, что есть, и что хорошо знаем) меньшими затратами. Сегодня автор работает над повышением функциональности устройства путем использования компьютерной мыши в качестве непрерывно действующих органов управления (регуляторов). Например, мышь с колесом прокрутки позволяет добавить к MIDI-клавиатуре сразу три регулятора (скролл, влево-вправо, вперед-назад) и три кнопки.

Список литературы:

1. Студнев А. MIDI-клавиатура - Радио, 1993, № 11, с. 32-34.

2. Оборотов Н. Простая MIDI-клавиатура для ПК - Радио, 2000, №3, с. 25, 26, 44.

3. Сташин В. В., Урусов А. В, Мологонцева О. Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. - М.: Энергоатомиздат, 1990.

 

Статья отослана в редакцию жкрнала "Радио" в январе 2008 года,

Статья опубликована в журнале в январе 2009 года,

Статья размещена на этом сайте 8 августа 2009года

 

 
Сайт создан в системе uCoz