Звук на чипе AY-3-8910 (или Yamaha YM2149F) родом с ZX Spectrum на PC через LPT-порт

    У меня не было в детстве спектрума, поэтому о его музыкальных возможностях с дополнительным музыкальным «сопроцессором», как иногда называют микросхему трехканального генератора Yamaha AY-3-8910, мне было мало что известно.

    Сравнительно недавно спектрум-совместимый компьютер у меня все-таки появился, но это был клон Spectrum-48, без музыкального чипа. Ну тем лучше, подумал я, есть простор для творчества — можно увеличить память, можно прикрутить дисковод, ну и конечно важная доработка — поставить музыкальный чип. Из Китая были заказаны пару чипов YM2149F:


    Почему именно они, я сейчас уже не помню, может они дешевле AY-3-8910, может просто в наличии в тот момент были. В общем — это аналог AY-3-8910, по распиновке не отличается, отличается разрядностью огибающей, и мелодии из-за этого немного звучат по-разному (тембр звука). Я подумал, что мне это не столь принципиально. Играть будет — и то радость. Почему заказал пару? Ну, одна в спектрум, а одна про запас, на случай брака у первой, или моих кривых рук при подключении. И вот они приехали, и пока для спектрума я думал с разводкой платы, мне захотелось как-то проверить чипы. И тут я наткнулся на старые проекты подключения данных микросхем к LPT-порту компьютера.

    Демо



    Послушать звучание готового девайса можно тут: soundcloud.com/tronix286. Там есть и «экспериментальные» записи, сделанные во время отладки работы устройства, и поэтому качество на таких записях не впечатляет. Но общее представление о «звуке» дать должно.

    Железо


    Вот некоторые из схем подключения AY-3-8910 к LPT порту компьютера, которые можно встретить в интернете:
    LPT AY by Vitaly Mayatskih & Alexander Kulik [Wolf^eTc/Scene]



    Простая схема, в ней мне понравился стерео микшер каналов и не понравился генератор тактовой частоты на двух микросхемах. Есть еще такой вариант:
    ZX Spectrum Computer Sound Chip Emulator (LPT-YM.7z)

    image

    Тут мне понравился простой генератор частоты, но не понравился усилитель моно и стабилизатор с 9 вольт. В итоге, я решил взять микшер от первой схемы, генератор тактовой частоты от второй. Питать схему решил от +5V по USB, таким образом отказался от девяти вольтового стабилизатора. В ряде экспериментов выяснилось, что для полного счастья необходимо еще контролировать управляющий сигнал BDIR, поэтому на схеме появился этот сигнал, заведенный на первый пин LPT (Strobe). Сигнал Strobe в LPT инвертированный, и по хорошему нужно бы было поставить транзистор, такой как у сигнала RESET, для обратной инверсии, но можно и просто помнить о том, что если шлем 1, то BDIR = 0 и если шлем 0, то BDIR = 1. В результате окончательная схема приняла такой вид:


    Собранное устройство:


    Софт


    Что же касается программной поддержки, то есть замечательный плеер ZXTune by Vitamin (суппорт тред). Автор любезно включил поддержку этого девайса в свой плеер, таким образом стало возможным проигрывание музыкальных форматов не только с ZX Spectrum, но и с других компьютеров, например с Atari ST или Amstrad CPC. Программа работает на Win XP, Win 7 x32 и Win 7 x64 (с поддержкой LPT девайса), а вообще она кросс-платформенная и доступна так же для мобильных платформ.

    Огромнейшая коллекция чип-тюнов Modland доступна на http://www.exotica.org.uk/wiki/Special:Modland Там около 80Гб модулей всех мастей и жанров. Конкретно по ZX есть отдельный сайт: zxtunes.com В общем, слушать не переслушать.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 42
    • 0
      А его до сих пор никто не эмулировал на какой-нибудь STMке, этот синтезатор?
      Хороший же проект — и USB есть, можно сразу к компьютеру подключать, без извращений с LPT и генераторами тактовой частоты.
      • +3
        И в чём тогда смысл? Эмулируйте программно, тот же ZXTune прекрасно с этим справляется. Идея именно в подключении настоящей микросхемы (каким бы это глупым с рациональной точки зрения ни казалось). На zx.pk.ru есть обсуждение вариантов AY-PCI и AY-USB, но дальше обсуждений дело не пошло (по техническим сложностям, AFAIK).
        • 0
          А смысл в том же, в чем и подключение настоящей микросхемы «каким бы это глупым с рациональной точки зрения ни казалось» — сделать переносной плеер разных чиптьюн форматов, гиковскую игрушку. Софт софтом, а девайс, который можно положить в карман, на котором можно кнопочками выбрать чиптьюн с карточки и послушать его, без компьютера и эмуляторов — это, имхо, прикольно, разве нет?
          • +3
            С каким пор программная эмуляция на микроконтроллере перестала быть эмуляцией? Адепты AY-звука даже FPGA-реализацию не приемлют, а вы «какую-то STMку» предлагаете.
            • 0
              >Адепты AY-звука даже FPGA-реализацию не приемлют

              А, ну это клиника… Жаль. Мне бы было интересно сделать такой плеер, но раз Ц.А. так в штыки воспринимает, то нет смысла тратить на него время.
              • +4
                Вы найдёте своих поклонников, например в моём лице :)
        • 0
          Есть бесплатная реализация для FPGA.
          • +1
            Я как-то на Arduino делал. Вполне тянет эмуляцию AY/YM (на 32000Hz). Правда играла эта поделка только формат PSG (т.е. по сути, практически несжатый лог записей в порт AY), и в память ATMega328 влезало чуть больше минуты музыки. Хотелось было приделать плеер какого-нибудь PT3, но как-то не сложилось.

            А вот так оно звучало — писалось с Arduino.
            • +1
              Да это ж Insult Megademo
              • 0
                Она самая ) Кстати, даже на этом примере хорошо заметно, насколько посредственная эмуляция отличается от эмуляции качественной (полагаю, то видео на YouTube писалось с эмулятора). О настоящем же AY и говорить нечего.
          • +3
            Заменить LPT-порт на нечто микроконтроллерное с небольшой флешкой (да даже 512кб или 1мб хватило бы) и получить портативный AY-плеер
            • 0
              Тогда уж заменить все разом на микроконтроллер, современные вполне потянут эмуляцию.
              • +5
                Важно осознание, что играет именно AY-3-8910(YM2149F)
                • 0
                  ИМХО, важна совместимость с форматами, а остальное приложится.
                  Вам бы не хотелось портативный девайс с USB, совместимый с большинством чип-тьюн форматов, и способный играть как синтезаторы из спектрума, гейм-боя, денди и т.д? То есть, поддерживающий сразу несколько синтезаторов.
                  • 0
                    ИМХО, важна совместимость с форматами, а остальное приложится.
                    — А как же «теплота» и «ламповость»?
                    • +1
                      Я не верю ни в какую «ламповость» если человек не может на слух отличить оригинал от эмуляции. Если может — это уже другой вопрос, тут согласен. Если требуется большой комп, софт и колонки — тоже согласен. А если одна микросхема выдает то же, что и другая и на слух не отличить, я не вижу никаких попраний теплоты и ламповости.
                      • +1
                        Там вполне отличается, в том-то и дело. Почти все эти ранние синтезаторы они друг от дружки сильно отличаются, фильтры обычно весьма нелинейные, даже разные экземпляры одной и той же микросхемы зачастую звучат с отличиями — не говоря уже об изменениях в ревизиях. Именно из-за этой аналоговой части не имеют большого смысла, скажем, проекты на FPGA — они будут звучать ровно так же, как и эмуляция на обычном CPU (будь то x86, ARM, MIPS или что-нибудь попроще).

                        То, что вы предлагаете — сделать эмулятор на STM, скажем, для реализации карманного плеера — с одной стороны прикольно, с другой стороны — с точки зрения звука — бесполезно. Проще любой generic эмулятор запустить на смартфоне, скажем — будет то же самое, даже, смею предположить, что звучать будет лучше, т.к. на STMке вам придется идти на массу компромиссов, скажем, с сумматором каналов и формой волн.
                        • 0
                          Ну конкретно в этой вроде как все в цифре реализовано.
                          И потом, если «даже разные экземпляры звучат с отличиями», то какая тогда разница?)
                          В общем я сильно сомневаюсь, что ратующие за ламповость смогут на слух отличить хороший эмулятор.
                          • 0
                            >Если в случае с другими, более сложными микросхемами, эти различия возникают из-за неточности эмуляции логики работы микросхем, то в случае с AY-3-8910 и совместимыми микросхемами все тонкости и различия их работы полностью изучены, и основным источником различий становится проблема передискретизации (ресемплинга) сигнала (микросхема позволяет генерировать звук с частотами до нескольких сотен килогерц).

                            Вот вам, кстати, ответ. Не выведете вы со смартфона звук с такой ЧД. А с СТМки можно и вывести.
                            • +1
                              Это как раз меньшая из проблем, все эмуляторы ее, собственно, вполне нормально решают, делая оверсэмплинг до этих самых сотен килогерц, а потом делая dithering до нужных 44100 или 48000. Вот в то, что кто-то умеет на слух отличать корректно сделаный dithering до 44100 от нормального многокилогерцового сигнала я совсем не верю.
                • 0
                  Заменить LPT-порт на нечто андроидное с большой флешкой и получить портативный AY-плеер. А также SID, SAA, 6502, etc.
                • 0
                  Респект старой школе, но неужели нельзя заменить LPT на USB? Я в босоногом детстве ковоксов не паял по причине отсутствия компьютера, а нынче у моего ноутбука такой роскоши, как LPT, нет, посему не знаю, как поиграться со старым железом, не приобретая старого компа.
                  • +1
                    Вот тут обсуждали-обсуждали, но…
                    • +1
                      Перечитал всю тему, не вижу принципиальных ограничений. Кто-то вполне здраво предлагал — USB и буфер.
                      • +1
                        Есть очень принципиальное ограничение — всем лень :-) Есть люди, которые могут сделать, но у них нет времени/мотивации.
                        • +1
                          Я могу даже сказать, что может убить мотивацию) Аудиофильские настроения) Начнешь вот так делать, а окажется, что смд резисторы — не тру, и нет теплой ламповости, и надо было брать исключительно советские, 60х годов, не позже и не раньше.
                    • +2
                      Да можно заменить на USB. Просто у меня была задача — проверить чипы работают/не работают. А так, как LPT у меня дома есть на двух ноутах и даже на более-менее свежем стационаре (мать: Gigabyte 870A-UD3, проц Phenom x4 3.2ГГц), то возится с контроллерами смысла не было.
                    • +6
                      Примеры на soundcloud шикарные!
                      • 0
                        «Hi,GOdZ!..hmm… Nik-O/TL'99» — утянул себе на рингтон)
                        • 0
                          блин, когда слушаю AY музыку все время за пивом хочется бежать. А завтра четверг!
                      • 0
                        А нет ли линков на сборники олдового чиптюна в MP3 или каком-нибудь другом популярном формате?
                        • 0
                          Да, давайте раздуем имеющиеся сто гигов модулей и чиптюнов на порядок-два только из-за того, что кому-то лень лишний раз кликнуть мышкой, скачать плеер и сконвертировать их при необходимости как угодно и во что угодно. Передача данных сегодня практически ничего не стоит! Ещё можно всё скопом загрузить на Ютуб, у Гугла всё равно диски бесконечные.
                        • 0
                          Заголовок вводит в диссонанс. Именно AY-3-8910 это не Yamaha, а General Instrument, позднее выделившаяся в Microchip.
                          Думаю вот эта тема будет интересна в контексте моей заметки: zx.pk.ru/showthread.php?t=21890
                          • +1
                            Спасибо, исправил заголовок.
                          • +1
                            Мне вот интересно. Я знаю, что через PC-speaker можно выводить аналоговый звук путём хитрой широтно-импульсной модуляции. Звучит тихо, с хрипотцой, но звучит!) Такие программы были под DOS и Win9x, правда, работало не на всех материнках. Я пытался на двух древних компах (PI и PII) — но у меня не заработало. На одном компе тишина, на другом безбожно тормозит.
                            Может, есть что-то современное, чтоб на Win7/8 заработало и умело выводить звук на PC-спикер? Была бы реально крутая фишка для любителей старого железа, демосцены, трекерной музыки и прочено.
                            • +1
                              Боюсь, нереально. Во-первых: настоящий хардварный спикер я видел лет пять назад. Во-вторых: в DOSах такие программки работали потому, что DOS — однозадачный и реалтаймовый. В истинно многозадачных системах программа просто повесит процессор на несколько секунд и отправится в очередь.
                              • 0
                                А это даже не 5 лет назад было, а больше :)
                                Работало на 95, зуб даю. Ставился специальный драйвер, и все системные звуки выводились на спикер. Я так умудрялся мп3-шки слушать, достаточно было только в моно перекодировать и битрейт снизить. Потом, правда этот драйвер перестал работать. То ли с обновлением какого-то из сервиспаков для винды, то ли до 98. И да, там тогда реальный маленький динамик стоял.
                                • 0
                                  Я на первом своём компе, в 98ом тоже такой штукой баловался, ввиду отсутствия звуковухи.
                                  Это был IBM 166 — когда играл звук через спикер, больше ни чего не работало. :)
                              • 0
                                Под Windows, начиная с Vista, с физическим спикером сделать ничего не получится.

                                shiru.untergrund.net/1bit/pivot/entry.php?id=162

                                Генерация похожих на исходник звуковых волн, на мой взгляд, не очень интересна. Во-первых, скорость компьютеров уже давно подобное не ограничивает, во-вторых, современные пищалки с ноготок, честно передающие меандр на средних частотах, не воспроизводят колебания старорежимного динамика на низких частотах и при комбинировании сигналов. Лучше слушать трекерную музыку с малым числом каналов (исторически сложившийся класс со своими трекерами, музыкантами, конкурсами и т. д.), которую ещё можно исхитриться вывести на спикер традиционным методом и получить достойный результат.

                                В Bleeper Music Maker есть вывод на спикер, в MIDI, даже с помощью шагового двигателя, буде таковой есть, и простенькая эмуляция. У того же автора можно посмотреть BaWaMi — обильно политый ревербом FM-синтезатор с такой же интероперабельностью, предположительно, более приспособленный передавать эффекты спикером (Bleeper Music Maker только играет ноты). DOSBox, судя по всему, при эмуляции учитывает параметры работы реального устройства и должен выдавать максимально реалистичный звук, по крайней мере, в играх и программах того времени.

                                А вообще, переходите на COVOX, получите эффекты уровнем выше.
                              • 0
                                Эх, вспоминаю молодость: присобачивал подобное к МС1502 и на плате была надпись «Sound Aggressor» (навеяно названием соответствующей песни группы «Кар-Мэн»).
                                Причём «спектрума» у меня никогда не было.

                                Кстати, у этой микрухи есть нечто вроде GPIO, и я на него повесил что-то типа Covox. Монофонический, конечно…
                                • 0
                                  Простите, что туплю, на вашей схеме R7 и R8 в GND смотрят? Просто вся остальная земля как-то нарисована по-другому.
                                  • 0
                                    Да, смотрят в землю. Ну так вот скопипастилось, с разными землями.

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.