AVR-AY Player

AVR-AY Player – it’s a player for AY-3-8910 Emulator.

ayplayer3

Written in C# (.Net Framework 3.5+)

Just connect TX pin of USB to serial ttl converter to RX pin of Atmega8

 

Current version supports following file formats

YM (3,4,5,6 packed/unpacked), PSG, EPSG, VTX, AY, PT1, PT2, PT3, STC, ZXS, STP, ASC, PSC, SQT, GTR, PSM, FTC, FLS, FXM (RSF,YRG:Custom formats)

Current version supports converting to following formats:

PSG, RSF, YRG, WAV

 

Current version 13.7 (10.11.2021) 

DOWNLOAD CURRENT VERSION >> AYPlayer version 13.7

Changes: improved Z80 emulation for AY files, improved equalizer, some optimization and playback improvement

 

Additional music collections

 

My most favourite AY song spec17_09.stc

 

 

Previous versions

 

New serial protocol

 

AYPlayer version 13.6 08.09.2019

Changes: fixed mixer and noise generator in sound card emulation mode

 

AYPlayer version 13.4 30.01.2019

Changes: add AY / YM emulation selection, add some settings saving after closing application window, some improvements in window dragging

 

AYPlayer version 13.3 08.06.2018

Changes: fixed AY files playback.

 

AYPlayer version 13.1 27.07.2017

Changes: fixed noise generator in sound card mode, fixed AY files playback.

 

AYPlayer version 13.0 07.07.2017

Changes: fixed noise generator in soundcard mode, small interface changes, small fixes in PT2/PT3 playback. In Windows XP sound quality is lower than in Vista and higher.

 

AYPlayer version 12.0 29.08.2016

Changes: fixed noise generator in soundcard mode, fixed ASC files noise problem

 

AYPlayer version 11.9 24.06.2016

Changes: fixed (not Brexit) noise generator in soundcard mode 🙂

 

AYPlayer version 11.8 25.04.2016

Changes: fixed beeper emulation.

 

AYPlayer version 11.7 19.03.2016

Changes: fixed exception if no soundcard present, improved beeper emulation, improved tone frequency indicators.

 

AYPlayer version 11.6 19.02.2016

Changes: fixed noise generator in soundcard mode.

 

AYPlayer version 11.5 19.01.2016

Changes: some PT2/PT3 files were detecter as incorrect. Fixed zero volume problem on WinXP after closing application (in soundcard mode). Improved emulation in soundcard mode. Fixed .AY files playing. .Net FrameWork 3.5 is not needed if you have 4+.

 

AYPlayer version 11.3 12.12.2015

Changes: improved emulation in sound card mode, added “convert all files to RSF” button, improved RSF file saving, and now it is version 3, small bugs causing errors with incorrect files fixed

 

AYPlayer version 11.2 27.07.2015

Changes: device selection added for soundcard mode

 

AYPlayer version 11.1 07.05.2015

Changes: Emulation fixed according to version 18.4 of the emulator

 

AYPlayer version 11.0 27.04.2015

Changes: Based on versions 10.X. Fixed PSC & ASC formats playing. Emulation fixed according to version 18.3 of the emulator

AYPlayer version 11.A 05.02.2015

Changes: Alpha version, added sound devices selection.

 

AYPlayer version 10.9 25.01.2015

Changes: Fixed mistakes in playing PSC and FXM files. Added BEEPER support for AY files in “Sound Card” mode. Fixed some mistakes in playing PT3 and STC format. Improved channels volume indicator. Fixed AY files playing.

 

AYPlayer version 10.3 14.01.2015

Changes: Now support PSM, FTC, FLS and FXM files. Some fixes in previous formats. AY emulation fixed to version 18.0 of the emulator. Added pattern information for tracker music. Improved sound quality and equalizer latency in sound card mode. Added channels frequency indicators. Small fix in GTR.

 

AYPlayer version 9.92 28.12.2015

Changes: Now support SQT, GTR files. Some fixes in previous formats. Improved noise generation according to emulator version 17.9 .

 

AYPlayer version 9.8 24.12.2014

Changes: Now support STC, ZXS, STP, ASC, PSC, PT1 files, added loop support for PT2, PT3 files. Sypport Digital AY files in soundcard mode (not BEEPER!). Low memory usage playing AY files.

 

AYPlayer version 9.4

Changes: fixed problem with saving WAV when playing using sound card, improved Z80 emulation, fixed some problems in playing AY files from CPC, changed AY emulation according to version 17.5 of emulator. Now Supports PT2, PT3 files. New RSF format version (version 2). More than 12000 PT2/3 files included in archive.

 

AYPlayer version 9.0

Changes: It now supports .AY files.

 

AYPlayer version 8.3 22.11.2014

Changes: It now can play files on PC using sound card! WAV conversion support.

AYPlayer version 7.1 19.11.2014

Changes: Improved UI, Improved indicators.

 

AYPlayer version 7.0 13.11.2014

Changes: Using multimedia timer instead of thread.

 

AYPlayer version 6.1 10.11.2014

Changes: fixed problem with disapearing selected index when item deleted by key Del, decreased usage of serial protocol.

 

 

AYPlayer version 6.0 01.11.2014

Changes: As serial protocol was changed this version released. Read some descriptions of the new protocol in readme.txt

 

Supports emulator versions up to 13.2

 

AYPlayer version 5.2 26.08.2014

Changes: Added new option “Fast Timer” for systems where timer works slower than expected, but it uses more PC resources.

 

AYPlayer version 5.1 21.08.2014

Changes: Fixed timer problem when internet browser is not started, so now player use Thread.Join method instead of Thread.Sleep. Fixed problem with adding empty element to playlist when adding was canceled.

 

AYPlayer version 5.0 18.08.2014

Changes: removed main timer code, changed to thread+Stopwatch, so now player don’t use huge amount of PC resources

 

AYPlayer version 4.4 17.08.2014

Changes: small improvements

 

AYPlayer version 4.3 24.06.2014

 

[ad name=”HTML”]

Old Changelog

Version 4.3

– added buttons for muting channels

Version 4.2

– removed path from converting filename (fixed problem with saving to different folder)

Version 4.1

– Removed DUMP button. added conversion to listbox context menu
– Improved adding elements to playlist (fast)
– added handler for refreshing com port list if USB device connected to PC
– fixed opening file (now in read only mode)
– added buttons for playing next/prev items
– added support for saving/loading playlist
– playlist stored between closing/opening application
– improved user interface

Version 4.0

– support playlist (without saving)
– improved user interface

Version 3.1

– support YM 3, YM 4 files
– added more I/O error handlers

Version 3.0

– support YM 5 files
– support packed YM files
– support VTX files
– improved user interface, added some checks for errors

Version 2.3

– fixed timer speed for 100Hz files

Version 2.2

– improved user interface

Version 2.1

– improved algorithm of sending data to AVR
– added new file format RSF (my format)
– fixed timer speed

Version 2.0

– support save dump to PSG file
– fixed mistake in saving PSG
– uses 5-10x lower of PC resourses & support opening dump files, PSG, EPSG

Version 1.0

– initial release

[ad name=”HTML”]

40 thoughts to “AVR-AY Player”

  1. Версия 5.1 от 21.08.2014 – проблема со скоростью воспроизведения при незагруженном браузере воспроизводится (воспроизводится на всех версиях 5.х), на 4.4 – нет.

  2. Я проверял на Windows Server 2003, до 5.1 там скорость была в 2 раза ниже, видимо .Net не приспособлен для маленьких периодов в таймере. Сейчас вроде всё должно быть в порядке. Если 5.1 тормозит – сообщите, а то не совсем понятно из вашего комментария.

  3. Да, на 5.1 тоже тормозит. Проверял на w2k3 и w2k3 x64. Если входить и выходить из браузера – скорость меняется прям на ходу.

    1. Ну, тут сначала надо разобраться как это играть проигрывателем 🙂 Если будет время – поковыряюсь

    2. Попробовал написать программу для проигрывания RAW файла 8 бит 8кГц через COM порт, но увы, т.к. регистры шлются порциями по 16 байт, на скорости 19200… этого явно недостаточно… слышно только шипение и передача идет очень медленно. Тут либо играть в параллельном режиме, либо переписывать часть работы с COM портом под большую скорость и оптимизировать передачу регистров под 2 байта (номер, значение + стоповые значения)

  4. Дорогие друзья, оставляйте комментарии, каждый Ваш комментарий – это двигатель прогресса в развитии проигрывателя, если вас что-то не устраивает или хочется большей функциональности – пишите, не стесняйтесь!!!!!!!!! ваще не стесняйтесь!!!! 🙂

  5. Проверено, на скорости COM порта 57600 максимальная частота передачи кадров, 1000 кадров в секунду, т.е. цифровой звук можно передавать с частотой не более 1КГц (в идеале), а так 800Гц без торможения. Так что 8КГц по последовательному интерфейсу не передать, я пробовал разгонять ком порт до 800000 бит/с, но увы, начинает тупить эмулятор, из-за частых прерываний по USART. Вывод: слушаем цифровой звук через звуковую карту 🙂

  6. Хотелка: убрать чекбокс “Play using soundcard”, список доступных аудиоустройств (не только основное аудиоустройство) добавить в комбобокс COMPort. Комбобокс соответственно переименовать.

  7. К сожалению так достаточно трудно реализовать, т.к. к ком порту еще нужно подключаться, могу сделать звуковую карту по умолчанию (сейчас она выбирается первой, если в системе нет ком портов) и выбор аудио устройств, а галочку поменять на “Play through COM port” 🙂 Насчет индикатора, посмотрю куда бы его можно было впихнуть )

  8. [quote]К сожалению так достаточно трудно реализовать, т.к. к ком порту еще нужно подключаться[/quote]
    Запихнуть в комбобокс объекты, а не просто строковые представления.
    Еще в качестве задумки (это же c# который из ООП состоит чуть менее чем полностью) – базовый класс “УстройствоВоспроизведения” и два (пока потомка) “УстройствоВоспроизведенияCOMПорт” и “УстройствоВоспроизведенияЗвуковаяКарта”.

  9. Доброго. А нельзя ли добавить выбор частоты Эйвая? То бишь 1750000, 3500000 и 1774400. Аргументы в пользу этого дела здесь: https://bitbucket.org/djdron/unrealspeccyp/issue/2/ay-ym
    Интересует, если честно, именно три с половиной мегагерца. Можно ли добавить в плеер И эмулятор? Или хотя бы только в плеер уж. Сейчас плеер показывает частоту 1773450 для всех музонов и это вызывает нервный зуд у многих жителей Ростовской области, у которых в большинстве было три с половиной заведено на Эйвай 🙂

    1. Да, конечно можно, я как раз планирую добавить такую возможность, так же выбор частоты прерываний и смещение тона (насчет этого еще думаю). Насчет эмулятора… есть же исходники, там можно самостоятельно подправить под нужную частоту значение регистра ICR.

  10. На всякий случай сообщаю что сейчас дорабатывается – возможность выбора устройства проигрывания из выпадающего списка, для этого разрабатывается класс “Устройство воспроизведения”. Приходится переделывать половину кода, т. к. изначально не рассчитывал, что это приложение дорастет до такого масштаба 🙂 Далее будет сделана возможность настройки приложения с автоматическим сохранением конфигурации. Если будет время, то еще и с плейлистами поколдую, чтобы можно было настраивать элементы списка, конвертировать весь плейлист за один проход без запросов подтверждений.

  11. Неплохо бы было поддержать(только на чтение) плейлисты в формате .ayl, которые в знаменитой коллекции AY-музыки Сергея Бульбы.

    Ну и вопрос почти по теме:) Вот эта китайская хреновина сойдёт для эмуляции с прошивкой на 8 МГц видимо? http://www.dx.com/p/atmega8-m8-avr-minimum-system-development-board-blue-157391#.VMplnCViLbc
    Суть-то в чём. Имеется четыре жлоба, а у них ещё знакомые куча жлобов, которые паять ничё не хотят, но приобщиться к данному проекту желают:) Так вот могу я им посоветовать купить вышеозначенную штуковину или подобную ей специально под AVR-AY?

    1. Такая штука в чистом виде не пойдет, т.к. в ней нет эмулятора COM порта, да и RC фильтры всё-равно паять нужно. Там и пайки то не много, проще купить breadboard с дырками и на ней собрать схему, если паять не охота 🙂 ну, и, конечно же, нужен переходник USB->TTL для передачи по ком порту, у китайцев они стоят от 1$, но с дешевыми придется немного повозиться на Windows начиная в Vista драйверы не поддерживают китайские чипы, если что, последний драйвер от висты подходит, если нужен будет, кину ссылку или сам драйвер.

      PS: Кстати, как вариант, купить дешевую ардуину и туда вставить Atmega8, потом прошить программатором.

      1. Да какие там Висты:) XP же поголовно есть на всякий случай хотя бы на одном из компов в комнате:) Ну, для сельской-то местности:)
        А USB на TTL давно у всех такие, на CP2102: http://www.dx.com/p/cp2102-usb-to-ttl-stc-promini-download-module-for-arduino-265730#.VMqihSViLbc
        Раньше шили телефоны, так у всех были на PL2303. А теперь у кого не спросил у всех на CP2102.
        Фильтр паять согласны вроде все, только плата уж там больно… Ну красивая, что ли:) Синенькая, штырёчки обозначены уже:)

        1. Тогда можно брать, раз такое дело, но кварц лучше конечно перепаять будет, всё же 8МГц версия хоть и получилась с достаточно качественным звуком, но всё же она работает в 2 раза медленнее чем другие. Вообще, смысл 8МГц версии состоит в том, чтобы не ставить внешний кварц и получить при этом более-менее качественный звук. Т.е. чтобы устройство получилось максимально простым.

          1. Ну вот пускай делают простым, раз хотят в таком корпусе микросхему потом перепаивать как сгорит. А я решил сложным:) Корпус прозрачный из коробки от торта и в нём пять плат. Вот такая плата для эйтимеги в dip-28: http://www.dx.com/p/diy-m48-ex-standard-development-board-blue-169248#.VM6DASViLbd
            Там главное можно разные кварцы на лету менять втыканием и перемычками.
            Вторая плата это usb на ttl. Третья это фильтр отдельно. Четвёртая усилитель. И пятая для моргания светодиодами под музыку. Больше ничего не придумывается. А:) Ну и на корпус всей конструкции наклейку, типа, AVR-AY:) И полоски цветные как в менюшке Спектрума:)

            1. Я вот думаю в ближайшее время еще написать для ардуины скетч для проигрывания, PT3 вряд ли осилю, но STC думаю получится. Будет это всё играть с SD карты. Осталось только найти на это время 🙂

  12. В версии 11.2 (14.05.2015) не работает переключение каналов ABC в режиме звуковой карты, при переключении каналов звук в динамиках не меняется.

  13. Прошу добавить функцию случайной сортировки плейлиста, её очень не хватает. И поддержку плейлистов формата .ayl

  14. Is it possible to play on Pro Micro (16 Mhz atmega32u4)? Just a little piece of PSG data from internal memory (a few seconds). Can you make an example sketch? 328p examples won’t compile because timers don’t match. Also there are no examples of playing from program (FLASH) data.

  15. Я сейчас работаю над созданием устройства, воспроизводящего музыку через USB -> COM порт, работающее совместно с этим плеером. Поэтому приходится интенсивно пользоваться разными функциями приложения. В версии 13.7 было найдено три крайне неприятных бага (по мере критичности):
    1. Очень часто проигрыватель перепрыгивает через следующую мелодию в плейлисте. Открываешь список файлов в папке, запускаешь вопроизведение на какой-то мелодии, он ее проигрывает полностю, следующую мелодию пропускает и начинает играть через одну. Потом может нормально играть, потом опять может пропустить. Очень мешает слушать библитеку музыки.
    2. Неправильно конвертирует в PSG формат. В целом полученый файл совпадает с таковым из другого плеера, за исключением того, что постоянно в регист формы огибающей (R13) пишется байт 0xFF. Из-за этого огибающая тут же глохнет, в мелодии полностю пропадает бас и другие эффекты на огибающей.
    3. Иногда, спустя 10-30 минут проигрывания приложение просто крешится, происходит какой-то эксепшин и плеер закрывается.
    Если автору интересно, могу ответить на какие-нибудь дополнительные вопросы. Так же очень хочется поучаствовать в развитии проекта, возможно ли получить доступ к исходному коду?

Leave a Reply

Your email address will not be published.