MIDI-клавиатура из синтезатора-игрушки
В статье описана несложная переделка игрушечного музыкального синтезатора, превращающая его в подключаемую к GAME-порту компьютера MIDI-клавиатуру.
Купленный ребенку дешевый синтезатор Elenberg MS-4920 с довольно большой натяжкой можно назвать музыкальным инструментом, скорее, это хорошая музыкальная игрушка. Он имитирует звучание нескольких музыкальных инструментов, воспроизводит несколько ритмических последовательностей, имеет возможность записывать во внутреннюю память недлинные мелодии. Но через две-три недели интерес ребенка к синтезатору пропал…
И тут проснулся интерес у папы, с детства мечтавшего об электронном музыкальном инструменте, да к тому же имевшего квалификацию радиоинженера. Он разобрал синтезатор, изучил его устройство, вспомнил о существовании компьютера, MIDI-интерфейса (начальные сведения о нем можно почерпнуть, например, в [1]), о микроконтроллерах семейства MCS-51, с которыми в свое время пришлось работать. В общем, родилась MIDI-клавиатура, о которой и расскажет эта статья.
Основных MIDI-команд описываемая клавиатура формирует две: “Включить ноту” и “Выключить ноту”. Номер ноты может находиться в интервале 17—122. Такой диапазон звучания инструмента (восемь октав) при 49 клавишах достигается путем сдвига диапазона клавиатуры вверх или вниз на одну и на две октавы. Условное значение скорости нажатий на клавиши, определяющее громкость звучания ноты, выбирается из шести фиксированных. Номер MIDI-канала (один из 16) устанавливают нажатиями на соответствующие кнопки. Кроме того, клавиатура формирует команды управления четырьмя программными выключателями.
Синтезатор Elenberg MS-4920 содержит 49 клавиш, объединенных в матрицу 5×10, и 47 кнопок управления, объединенных в такую же матрицу. В нем установлен микроконтроллер неизвестного типа в 40-выводном корпусе, имеется УМЗЧ со стабилизатором напряжения питания и две динамические головки. Все это “упаковано” в элегантный пластмассовый корпус (рис. 1). Анализ показал, что, заменив имеющийся микроконтроллер другим со своими цепями тактирования и установки в начальное состояние, можно получить программный доступ ко всем кнопкам и светодиодам (их четыре, не считая индикатора питания) синтезатора.
Схема разработанного устройства показана на рис. 2. Штрихпунктирной линией на ней обведен вновь установленный узел контроллера. Он подключен к разъему Х1 — панели микроконтроллера, который был установлен на плате управления синтезатора.
Микроконтроллер DD1 AT89C51-24PI включен по стандартной схеме с кварцевым резонатором на 12 МГц. Цепи опроса музыкальных клавиш SB1 — SB49 практически аналогичны использованным в [2]. Кнопки управления SB50—SB71 — это лишь те, что используются MIDI-клавиатурой. Остальные, имеющиеся в синтезаторе, на схеме не показаны. Светодиоды HL1—HL5 также находятся на плате управления синтезатора. Они установлены в ряд в следующем порядке (слева—направо): HL5. HL1, HL4, HL3, HL2.
Для подключения клавиатуры к компьютеру пришлось приобрести и установить в него аудиокарту с GAME-nop-том. К розетке этого порта подключают вилку Х4 (DB15M). Подойдет и отечественная вилка РП15-15Ш, но учтите, что нумерация аналогичных по расположению контактов у нее другая. Вилка соединена кабелем из двух экранированных проводов с двумя штекерами “mini-jack” диаметром 3,5 мм, которые вставляют в имеющиеся на корпусе синтезатора гнезда Х2 и ХЗ. Имейте в виду, конструкция гнезд такова, что при не вставленных штекерах их контакты замкнуты. Поэтому, прежде чем подключать разъем Х4 к компьютеру, обязательно вставьте штекеры в гнезда.
Печатная плата для контроллера не разрабатывалась. Его детали смонтированы на макетной плате размерами 60×40 мм. Перед ее установкой из синтезатора удаляют плату УМЗЧ, а плату контроллера размещают на ее месте. Из 40-выводной панели на плате управления синтезатора вынимают микроконтроллер и вставляют в ее гнезда штыри, соединенные с вновь установленной платой контроллера, согласно схеме, плоскими кабелями, изготовленными из шлейфов для компьютерных дисководов. Эту плату соединяют со штекерными гнездами Х2 и ХЗ, отпаяв от них все имевшиеся ранее провода. Выключатель SA1 также используется уже установленный в синтезаторе.
Установленный внутри клавиатуры контролер показан на Рис.3
Микроконтроллер DD1 должен быть запрограмирован согласно табл. 1
Алгоритм программы , по которой работает микроконтроллер , классический: инициализация устройств, запись начальных значений в ячейки памяти и цикл опроса состояния клавиш и кнопок управления.
Сестема прерываний микроконтролера не используется, а выводом MIDI-команд занимается его UART.
Опрос кнопок производится в цикле “бегущий 0″ на выходах порта РО микроконтроллера с анализом сигналов на входах портов Р1 и РЗ. Нажатия на кнопки управления SB50—SB71 отрабатываются внутри цикла. Состояние клавиш SB1 – SB49 сравнивается с зафиксированным ранее, и при обнаружение фактов нажатия и отпуская формируется трёхбайтовая MIDI-команда соответственно, “Включить ноту” (первый байт 8nH)
Второй бай команды номер ноты. В исходном режиме клавиша SB1 соответствует нота фа большой октавы (номер 29Н)
Если задан сдвиг тональности на одну или две октавы, то при сдвиге вверх номер ноты увеличевается, а при сдвиге вниз уменьшается на ОСН (12) или на 18Н (24). Это позволяет исполнять мелодии в интервале от ноты фа субконтроктавы (номер 11Н) до фа пятой октавы (номер 7АН).
Завершающий третий байт команды несет информацию о скорости нажатия (отпускания) клавиши. Он может принимать шесть фиксированных значений, переключаемых кнопками управления громкостью. Подробнее работу программы можно понять из приложенного к статье ее исходного текста на языке ассемблера, снабженного комментариями. Огромную помощь в этом может оказать классическая книга [3].
Перед подачей напряжения питания на вновь изготовленный контроллер рекомендуется еще раз проверить правильность соединений и отсутствие замыканий в цепях питания. Далее, не устанавливая в панель микроконтроллер DD1, включите питание и проверьте функционирование микросхемы DD2. При замыкании на общий провод выводов 13, 14, 21 и 22 панели этого микроконтроллера должны выключаться соответствующие светодиоды на панели синтезатора. Вольтметром проверяют, что напряжение между контактами 4, 5 и контактом 15 вилки Х4 изменяется от напряжения питания (5 В) почти до нуля при соединении контакта 11 панели микроконтроллера с общим проводом. Теперь можно (предварительно выключив питание) установить микроконтроллер DD1 в предназначенную для него панель и приступить к проверке MIDI-клавиатуры в действии.
Делать это удобно с помощью какой-либо из программ-секвенсоров, которыми, как правило, комплектуются звуковые карты. Например, старинной Midisoft Studio 4.0 или серьезной программой Cakewalk Pro Audio. Но наиболее наглядна программа MIDI Monitor. Она отображает на экране все коды, поступающие по MIDI-интерфейсу.
Действие клавиш и кнопок управления описано в табл. 2. Сразу после включения питания устройство ожидает нажатия на одну из клавиш. Этим нажатием устанавливают номер MIDI-канала. Пятнадцать первых слева белых клавиш — каналы с 1-го по 15-й, шестнадцатая клавиша — канал 0, любая другая — канал 1. Индикация режима ввода номера канала — мигание четырех све-тодиодов. После выбора канала светодиоды показывают его номер, что продолжается до следующего нажатия на любую клавишу. Повторно войти в режим ввода номера канала можно нажатием на кнопку SB51 (с надписью “PROG” на панели). Режим индикации номера канала включают кнопкой SB50 (“NULL-PLAY”).
Кнопками SB52—SB56 сдвигают тональность клавиатуры соответственно на две октавы вниз, на одну октаву вниз, возвращают в исходное состояние, сдвигают на одну октаву вверх и на две октавы вверх. Указанные кнопки расположены на панели синтезатора рядом и имеют надписи “POP”", “MARCH”, “RHUMBA”, “SLOW ROCK” и “WALTZ”.
Кнопками SB57—SB62 регулируют громкость. Эти кнопки (желтые круглые в правой верхней части панели синтезатора) разного размера, что ассоциируется с изменением громкости. Текущий уровень громкости отображается длиной линейки включенных светодиодов. Индикация сохраняется до нажатия на любую клавишу.
Для формирования MIDI-команд “Смена управления” использованы кнопки SB63—SB70. Это верхние два ряда красных кнопок. Кнопками верхнего ряда (с нечетными номерами) включают программные выключатели с номерами 0—3, а кнопками нижнего ряда (с четными номерами) их выключают. Состояние выключателей показывают светодиоды также до нажатия на любую клавишу. В дальнейшем его можно увидеть, нажав на кнопку SB71 — левую красную в нижнем ряду.
По умолчанию светодиоды показывают сдвиг тональности клавиатуры. А при нажатии на клавишу любой ноты включаются все светодиоды.
Описанное устройство не претендует, конечно же, на звание совершенного MIDI-инструмента, прежде всего, из-за отсутствия регуляторов и анализа скорости нажатия на клавиши. Но благодаря простоте конструкции и наличию неиспользованных резервов (большое число незадействованных кнопок, свободные 3 Кбайта памяти микроконтроллера), она может послужить полигоном для исследования MIDI-интерфейса, освоения семейства микроконтроллеров MCS-51 и возможностей компьютерных программ-секвенсоров. Число кнопок управления при необходимости можно увеличить, подключив две неза-действованные горизонтали их матрицы к свободным выводам порта Р2 микроконтроллера DD1. Например, к линии Р2.6 — контакт 6, а к линии Р2.7 — контакт 7 панели на плате управления синтезатора.
Отсутствие стандартных MIDI-разъ-емов может быть легко исправлено их подключением по одной из стандартных схем, которые можно найти, например, в [2] или в Интернете.
ЛИТЕРАТУРА
1. Студнев А. MIDI-клавиатура. — Радио, 1993, №11, с. 32—34.
2. Оборотов Н. Простая MIDI-клавиатура для ПК. — Радио, 2000, № 3. с. 25, 26,44.
3. Сташин В., Урусов А., Мологонцева О. Проектирование цифровых устройств на однокристальных микроконтроллерах. — М.: Энергоатомиздат, 1990.