
Ну вот.
Таки сделал свой первый musicdisk (дай бог не последний).
Плеер наваял на дельфях, OpenGL/DirectX не использовались (вполне хватило и graph32).
В состав диска вошли 15 спектрумовских треков (сделаны в период 1996-1998, кроме трека "Timedrops", датируемого августом 2009-го) и 14 модулей, сварганенных в Impulse Tracker с 2001-го по 2004-й.
Все IT-модули были оптимизированы по размеру (путем удаления неиспользуемых семплов) с помощью чудной программы Magicfish Postmod 1.04, которую можно невозбранно скачать с её родного сайта.
Эмуляцию AY решил пока руками не трогать, взял готовый код из проектов Сергея Бульбы – "Vortex Tracker II" (основной код эмуляции и плеера) и "AY Emulator 2.9b5" (процедура паузы и еще что-то, уже не помню). Автору – СПАСИБО!
Ну а IT-модули, само собой, играются BASS'ом.
Скачать (7.8 Мб)
Таки сделал свой первый musicdisk (дай бог не последний).
Плеер наваял на дельфях, OpenGL/DirectX не использовались (вполне хватило и graph32).
В состав диска вошли 15 спектрумовских треков (сделаны в период 1996-1998, кроме трека "Timedrops", датируемого августом 2009-го) и 14 модулей, сварганенных в Impulse Tracker с 2001-го по 2004-й.
Все IT-модули были оптимизированы по размеру (путем удаления неиспользуемых семплов) с помощью чудной программы Magicfish Postmod 1.04, которую можно невозбранно скачать с её родного сайта.
Эмуляцию AY решил пока руками не трогать, взял готовый код из проектов Сергея Бульбы – "Vortex Tracker II" (основной код эмуляции и плеера) и "AY Emulator 2.9b5" (процедура паузы и еще что-то, уже не помню). Автору – СПАСИБО!
Ну а IT-модули, само собой, играются BASS'ом.
Скачать (7.8 Мб)



Спасибо!
bulba je vilojil davno otdelno player na pascale, beri i usai, bez zamoro4ek :D
А с AY-плеером действительно пришлось изрядно попотеть. Основная сложность была в том, что нужные функции разбросаны по куче модулей, и не зная замысла автора довольно сложно понять, что там к чему. Пришлось побегать по обработчикам кнопок :) В итоге выяснилось, что нужны всего 3 модуля: AY.pas (эмуляция чипа AY/YM, подготовка буферов для waveOut), WaveOutAPI.pas (вывод звука) и trfuncs.pas (парсинг модуля), плюс процедура загрузки и декодирования модуля.
Там в чем суть-то (насколько я понял). Сначала грузится модуль, неважно в каком формате - он после загрузки преобразуется в формат редактора и хранится в объекте VTMP, там всё - паттерны, список позиций, инструменты, орнаменты. После клика по "Play" создается поток воспроизведения (WaveOutAPI.pas), который регулярно вызывает функцию MakeBuffers (AY.pas), заполняющую звуковые буферы годными данными, ну и передает содержимое этих буферов звуковухе. Эта функция в свою очередь вызывает функции парсинга модуля из trfuncs.pas (по сути, построчное воспроизведение с изменением значений громкости/частоты для звука/шума/огибающей в каждом канале) с установкой значений регистров AY (AY.pas). По окончании воспроизведения модуля поток посылает сообщение главной форме, мол, чо дальше-то?
Не скажу, конечно, что досконально разобрался - так, пробежался по верхушкам, лишь бы играло.
В принципе, могу выложить исходники AY-плеера с каким-нить простеньким проектом. Надеюсь, Сергей Бульба не обидится за подобные исследования с моей стороны :)