Звук на чипе AY-3-8910 (или Yamaha YM2149F) родом с ZX Spectrum на PC через LPT-порт
Сравнительно недавно спектрум-совместимый компьютер у меня все-таки появился, но это был клон 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)
Тут мне понравился простой генератор частоты, но не понравился усилитель моно и стабилизатор с 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 В общем, слушать не переслушать.