ZX Ferrum #02
26 апреля 2004
  Железо  

Железо - МИДИ-интерфейс для ZX-Spectrum-совместимых компьютеров (продолжение).


Аппаратное обеспечениеЭксплуатация и доработкиИнтерфейсы и шины

  Пара  слов  от  меня, может быть публикация статьи и запоздала
(она  уже была опубликована в Абзац#18), но тема актуальна, да и
может еще не все прочитали, тем более я связался с автором, и он
обещал дать еще информации.

(c) Алексей Белодворцев

                  МИДИ-интерфейс. Продолжение.

Приветствую вас, спектрумисты!

  В  очередной  раз  предлагаю  свой  проект <МИДИ-интерфейс для
ZX-Spectrum-совместимых  компьютеров>. Почему <в очередной раз>?
Потому   что   уже   неоднократно   предлагал.   К  сожалению  -
безрезультатно.  А  та реакция на мои предложения, которая была,
на  90%  не  имеет права именоваться результатом. Но я все же не
теряю  надежды  и  надеюсь  на то, что остались еще энтузиасты с
головами, способные мыслить творчески и работать руками, которые
<заточены как надо>. Просыпайтесь и начинайте помогать. Помогать
не мне, а, в первую очередь, себе и той платформе, которую вы до
сих  пор,  не  смотря  ни  на  что,  любите. На этот раз я решил
написать  статью  более  подробно и постараюсь не упустить в ней
самого важного.
  С чего бы начать? Наверное, стоило бы начать с чего-то такого,
что  сразу вызвало бы интерес и привлекло внимание пользователей
Спектрума.  А  что  это  может  быть?  Наверное  какая-то штука,
которой Спектрум до сих пор не имел, но которую иметь было бы не
лишне,   и,   самое   главное,   которая  была  бы  полезна  для
пользователей этого компьютера.
  Насколько  я  помню историю Спекки, в 1985 году была выполнена
доработка  его  предыдущего  варианта  - увеличена память до 128
килобайт,  увеличилось  количество  экранов  и...  был  добавлен
музыкальный процессор AY-3-8912 (AY-3-8910, YM2149F... - далее -
<AY>).  Т.е.  уже  тогда  разработчики  озадачились  увеличением
звуковых  возможностей Спекки. Какое-то время действительно этот
простенький  трехголосый  синтезатор  был  просто  находкой  для
спектрумистов,  особенно  для музыкантов. Для него были написаны
музыкальные  редакторы,  его  сразу стали использовать в играх и
просто  для  озвучивания программ. Слушая музыку, написанную для
AY,  я  порой удивлялся, с какой виртуозностью те, кто писал эту
музыку,  использовали  более чем скромные (по нынешним временам)
возможности  AY.  И  не раз приходила мысль - чтобы они творили,
если им дать более совершенные технические средства?!
  Прогресс  не  стоит на месте. Сейчас возможности маленького AY
действительно  можно  считать  более  чем  скромными.  И  все бы
ничего,  если бы Спекки в настоящее время уже <умер>. Но! Больно
уж  живучая  машинка.  До  сих  пор существует (от души надеюсь)
множество  ее  почитателей. Но время идет и раз уж Спекки живет,
то  он должен совершенствоваться. И он совершенствуется - к нему
подключены мышь, CD-ROM, жесткий диск, разработан модем...
  Не  остался  без изменений и звук. Одной из наиболее известных
разработок в этой области, на мой взгляд, является General Sound
(GS). Конечно, появление этого модуля дает Спекки новые звуковые
возможности,  например,  можно писать музыку, используя реальные
инструменты, загружая их в память модуля.
  Все  это,  хорошо. Конечно, разработчики поработали на совесть
(разработать  и  отладить  подобное  устройство очень непросто -
знаю  на  собственном опыте), но сразу бросилась в глаза излишне
высокая сложность схемы, ее можно было бы значительно упростить.
Также,   на  мой  взгляд,  крайне  неудачен  выбор  центрального
процессора,   который  к  тому  же  работает  на  пределе  своих
возможностей  - на граничной частоте. Разумнее, как мне кажется,
было  бы  использовать  в  этой схеме однокристальные ЭВМ i8031,
i8051 или их отечественные аналоги (ВЕ31, ВЕ51) - в то время они
уже  были  доступны и стоили вряд ли больше Z80. Думаю, что 8051
со   своим   мощным  ассемблером,  высокой  производительностью,
способностью адресовать 64кб ОЗУ + 64кб ПЗУ и способностью легко
работать на частотах до 25 мегагерц был бы уместнее.
  Впрочем,  не буду углубляться в анализ этой схемы, т.к. это не
является целью моей статьи.
  В  общем,  решил  я сделать свою собственную <звуковую плату>.
Вариантов было два:

 1. Разработать что-то подобное GS.
 2. Использовать промышленную звуковую плату.

  Первый  вариант  я  сразу отбросил - овчинка выделки не стоит.
Все равно, с использованием доступной элементной базы (например,
К572ПА1)  приличного  качества звучания достичь невозможно. Да и
возни многовато.
  Второй  вариант  меня устраивал больше. Но опять-таки, слишком
много  проблем  возникало при попытках подключить звуковые платы
промышленного производства. И дело даже не в количестве проводов
и  дополнительных микросхемах. Проблема в том, что звуковых плат
существует множество разновидностей и у каждой свои особенности,
начиная с инициализации портов и далее.
  В  данном  случае выходом из ситуации могло быть использование
семейства  карт, которые имели бы одинаковый метод подключения и
одинаковый  протокол  обмена данными для упавления. Вскоре такой
вариант  был  найден.  На  мой  взгляд,  разумнее  всего было бы
использовать так называемые <дочерние МИДИ-карты>.
  Для  того,  чтобы  заставить звучать такую карту нужно сделать
следующее:

  1. Подать на нее напряжения питания (+5 В, +12 В, -12 В);
  2. Сформировать сигнал <сброс>;
  3. Подключить к выходам левого и правого каналов усилитель;
  4.  Передать по последовательному каналу данные для управления
картой.

  С пунктами 1-3 проблем не возникло - была изготовлена печатная
плата,  на  которую были установлены: <гребенка> для подключения
самой   карты,  RC-цепочка  для  формирования  сигнала  <сброс>,
разъемы  для  подачи напряжений питания и подключения усилителя.
Для  <скармливания>  (передачи)  данных  карте была использована
одна  из  линий данных параллельного порта (D0). Передача данных
формировалась программно.
  При  пробном  запуске  все  прошло  нормально - карта послушно
выполняла  подаваемые  мной команды, из динамиков неслась жуткая
какафония  (так как мне не терпелось послушать свое творение, то
не   хотелось  набирать  какую-либо  мелодию.  Поэтому  пришлось
ограничиться  случайными  нотами  <от  фонаря>).  Но  при первой
попытке написать простейший МИДИ-плеер, проигрывающий МИДИ-файлы
я  столкнулся  с  проблемой - не хватило быстродействия. Мелодия
спотыкалась,   ковыляла,   дергалась  и  тащилась  на  костылях.
Происходило  это  из-за того, что подпрограмма передачи байта по
последовательному   каналу   занимала   определенное   время   и
процессору  приходилось ждать, пока не передастся последний бит.
Только после этого возобновлялась обработка МИДИ-файла.
  Пришлось  искать пути для <разгрузки> процессора. Самым лучшим
вариантом,  на  мой  взгляд, было бы передачу данных взвалить на
какую-нибудь  аппаратную  <примочку>  - в этом случае процессору
нужно  было  бы  только  подбрасывать  ей  байты  для отправки и
периодически спрашивать ее, закончилась ли передача.
  Первый  эксперимент  был  с  применением микросхемы КР580ВВ51.
Эксперимент  провалился,  так  как  скорость  передачи данных по
МИДИ-порту  составляет  31,25  кБод,  а  ВВ51  оказалась  просто
неспособна работать на такой скорости.
  Второй  эксперимент  оказался  более  удачным - за основу была
взята схема МИДИ-клавиатуры, опубликованная в журнале <Радио> (N
11,  1993  г.)  А.  Студневым.  Ее  основа - однокристальная ЭВМ
1816ВЕ35 + регистр защелка 580ИР82 + ПЗУ 573РФ2. Мультиплексоры,
используемые   для   опроса   клавиатуры,   были   выброшены  за
ненадобностью.  Регистр  580ИР82  был  заменен  на гораздо менее
прожорливую   микросхему   1533ИР33.   Вместо   ПЗУ  573РФ2  был
использован  ее  зарубежный  аналог  2716. Из линий порта 8 были
использованы  для  ввода данных (D0-D7), одна использовалась для
стробирования  ввода  данных  (Strobe)  и одна сигнализировала о
процессе   передачи  данных  (Busy).  Таким  образом,  получился
интерфейс  стандарта  <Centronix>,  правда,  в  упрощенном виде.
Также была переписана управляющая программа.
  Схема работала <на ура> - МИДИ-файлы нормально проигрывались в
реальном   времени.   Также  для  эксперимента  была  подключена
музыкальная    клавиатура   и   написана   программка   простого
секвенсора.  Но  я все еще был недоволен - схема МИДИ-интерфейса
была  несколько  громоздкой и ее было проблематично разместить в
корпусе  компьютера.  Поэтому  пришлось  искать пути минимизации
устройства.
  Выход  очевиден  - нужно использовать другую ОЭВМ. Благо, в то
время  уже  были широко доступны чипы от Microchip и Atmel. Мной
был  выбран  20-ноговый  Атмеловский  чип  AT89C2051  -  он имел
небольшие  габариты,  почти  не  требовал  обвязки  и, что самое
главное, имел встроенный последовательный порт.
  Сказано  - сделано. Быстренько была разработана принципиальная
схема  (было  бы  что  там разрабатывать!), написана управляющая
программа.   Я   отказался   от  цепочки  сброса.  Теперь  карту
сбрасывала  сама  ОЭВМ.  Получился  такой  состав схемы: сам чип
AT89C2051,  пара  конденсаторов  на  15  пФ,  пара  на  10  мкФ,
кварцевый  резонатор  на  6  МГц, печатная плата, разьемы. Вот и
все,  не  считая  блока  питания. МИДИ-карта использовалась типа
PT-202.  Также  были проведены испытания с картой Yamaha DB50XG.
Подключалось  все  это  хозяйство  к  стандартному параллельному
принтерному порту стандарта Centronix.
  Вот  и  все.  На  этом  моя  работа  была закончена и более не
возобновлялась.   Мне   это   стало   не   нужно,   мои  попытки
заинтересовать  народ  в  эхо-конференции  сети ФИДО ZX.SPECTRUM
закончились  ничем. В настоящее время у меня не осталось ничего:
ни  платы с микроконтроллером, ни программы прошивки. МИДИ-карты
тоже  не  осталось - для музыки я использую IBM и звуковую карту
Yamaha YMF-754.
  Ужасно  обидно  что  идею  не  поддержали.  Попробую <подвести
черту> под тем, что я, собственно, предлагал:

  1. Оснастить Спекки качественным и недорогим МИДИ-синтезатором
(карта  PT-202  или подобная сейчас стоит не более 200 руб., чип
AT89C2051 - не более 60 руб.);
  2.   Получить   возможность   легко   переносить   музыкальные
композиции  с  компьютера  на  компьютер  - МИДИ-файл размером в
30-40 килобайт может содержать значительное по продолжительности
музыкальное  произведение  (не  нужно  вместе с нотами таскать и
сами  инструменты  - в МИДИ-карте они хранятся в собственном ПЗУ
объемом, как правило, 512 Кб - 4 Мб);
  3.   Получить  возможность  вводить  качественное  музыкальное
сопровождение в играх и других программах;
  4.   Получить   привязку   к   стандарту  -  ваше  музыкальное
произведение можно записать в формате IBM на дискету и проиграть
на профессиональной аппаратуре;
  5.  Музыканты  могут  получить  на  базе  Спекки  недорогой  и
достаточно   мощный   музыкальный   синтезатор   с   секвенсором
(секвенсор   -   эта   такая  штука,  которая  может  запоминать
последовательность  нажатия  нот  с возможностью их последующего
воспроизведения и редактирования. Пример тому - трекеры);
  6.  Кстати,  о  трекерах - появится возможность написать новые
программы музыкальных редакторов с большими возможностями.
  7.   С   помощью   МИДИ-адаптера  можно  управлять  не  только
МИДИ-картой,   но  и  любым  музыкальным  синтезатором,  имеющим
МИДИ-вход.

  Список  можно  продолжить,  но,  как  мне кажется, приведенных
примеров  вполне  достаточно.  Думайте, решайте. Стоит ли давать
вашему Спекки <новое дыхание>, повышая его звуковые возможности?
Остались  ли  на  Спектруме музыканты, достаточно <не упертые> в
традиционный   AY,  чтобы  принять  новшество?  Давайте,  пишите
письма,  отзывайтесь  все  те,  кто  может  РЕАЛЬНО  заняться  и
заинтересоваться    моим    предложением!   У   меня   накоплено
значительное  количество  информации  по  МИДИ,  с удовольствием
поделюсь!
  В общем я жду ваших откликов.

Алексей Белодворцев

Адрес для писем: Белодворцев Алексей Николаевич, 400066,
г. Волгоград-66, а/я 11.
e-mail: ra4aux@avtlg.ru


                       Мнение редактора:

  Так  взяли в рки ручки, клавы и пишем отклики на адрес Алексея
или редакции, а я перешлю автору и напечатаю в газете.
  Как  сказал  Конфуций:" Самый страшный враг человека - это его
лень", или по другому:" Самый страшный враг Спектрума - это лень
спектрумистов.



Другие статьи номера:

Вступление - Выход этого номера задержался, но на то были объективные причины...

Руль - письма в редакци от C-jeff и Trident'a из СПб.

Железо - схемы сброса в "Gluk Reset Service".

Железо - схема блокировки глючных портов на Scorpion и Profi.

Жлезео - дешевый стереосилитель на двух микросхемах.

Железо - МИДИ-интерфейс для ZX-Spectrum-совместимых компьютеров (продолжение).

Железо - Chrome - итальянский клон Спектрума!

Железо - спектрум-наладонник: ZX-Pad - мнение.

Вести - Компания Zilog представила 28 января ядро новой операционной системы реального времени RZK.

Авторы - авторы газеты.

Кредит срочно взять кредит срочно.

Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Midi Interface 2 - продолжение описания Миди интерфейса.
Железо - Последовательный порт для Spectrum'a
Железо - ZX-ВUS: Если вы решили сделать из своего Cпектрума нормальный компьютер, то эта статья для вас.

В этот день...   19 октября