Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №18 (01.11.2003) Просмотров: 6366

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

    Рубрика: Читатель читателю.

    Номер: №18 (01.11.2003).



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

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

    В очередной раз предлагаю свой проект «МИДИ-интерфейс для 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


    От редакции: Мы бы очень хотели, чтобы читатели откликнулись на предложение Алексея и заинтересовались этим проектом. Задавайте все свои вопросы автору, на наиболее интересные из них, он обещал ответить на страницах «Абзаца». Если к нам в редакцию по этому поводу поступят какие-то письма, мы их передадим Алексею. Так же он сообщил, что если и после этой публикации народ не проявит своей реакции и не заинтересуется всем этим, то проект будет заброшен, и на этот раз навсегда.


    Ссылки по теме:

    9 новостей из различных областей. [№14]
    МИДИ-интерфейс [№16]


    © 2004-2013 Perspective group