Важная информация

User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 46

Тема: Быстрый проигрыватель AY-музыки (980-1300t)

  1. #1
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрый проигрыватель AY-музыки (964-1251t)

    Как-то давно, еще делая демку на tum2009 я искали быстрый проигрыватель AY-музыки, но на все мои вопросы что хочу в районе 1500 тактов говорили что это нереально.

    Тогда помню мне пришлось ручками переводить музыку из PT3 в PSC, ибо плейер первого никак не влезал под некоторые эффекты...

    Теперь для меня это в прошлом!
    Представляю вам универсальный проигрыватель и компилятор, который не зависит от типа используемого трекера, а компилирует дамп AY регистров, при этом размер компилированного модуля примерно в полтора раза больши, а порой даже меньше чем оригинала
    кушает 964..1251t, в зависимости от музыки, при компиляции указывается точный диапазон тактов под конкретный музон (или фиксированное кол-во тактов)

    Метод сжатия основан на том, что в паттернах каналов бывают повторяющиеся фрагменты.
    Каналы паттерна рассматриваются отдельно друг от друга, также отдельно рассматриваются огибающая с формой, регистр управления и шума, в результате получаем список повторяющихся фрагментов для каждого канала и табличку (трек) для их проигрвания.
    Сами данные регистров ay группируются в группы (например reg0, reg1, reg8) и составляется табличка вариантов принимаемых значений, из которой по индексу вытаскиваем значения.
    Приведу тут наглядно примерный алгоритм (остальное - проигрыватель, компилер и пример в приложенном файле):

    Рассмотрим какие регистры AY присутствуют в дампе
    и какие биты в них задействованы:

    Код:
    ;-----------------------------------------------------------
    ; Регистр / Номер / Обознач./ диапазон / битовая раскладка
    ;-----------------------------------------------------------
    ; RegA_lo	0	L	0-255	LLLLLLLL
    ; RegA_hi	1	H	0-15	0000HHHH
    ; RegA_Vol	8	V	0-15	000EVVVV
    
    ; RegB_lo	2	L	0-255	LLLLLLLL
    ; RegB_hi	3	H	0-15	0000HHHH
    ; RegB_Vol	9	V	0-15	000EVVVV
    
    ; RegC_lo	4	L	0-255	LLLLLLLL
    ; RegC_hi	5	H	0-15	0000HHHH
    ; RegC_Vol	10	V	0-15	000EVVVV
    
    ; Noise		6	N	0-31	000NNNNN
    ; Control	7	C	0-63	00cccCCC
    ; Period_lo	11	p	0-255	pppppppp
    ; Period_hi	12	P	0-255	PPPPPPPP
    ; Form		13	F	0-15	0000FFFF
    Разделив на "каналы", данные можно представить следующим образом

    Код:
    ; Channel_A
    ;	LLLLLLLL 0000HHHH 000EVVVV	(3 байта, reg 0,1,8)
    ; Channel_B
    ; 	LLLLLLLL 0000HHHH 000EVVVV	(3 байта, reg 2,3,9)
    ; Channel_C
    ; 	LLLLLLLL 0000HHHH 000EVVVV	(3 байта, reg 4,5,10)
    ; Channel_Env
    ;	pppppppp PPPPPPPP 0000FFFF	(3 байта, reg 11,12,13)
    ; Channel_Reg
    ;	000NNNNN 00cccCCC 		(2 байта reg 6,7)
    Далее для каждого из "каналов" вычисляем кол-во принимаемых значений, и составляем таблицу возможных значений (256 знач макс)
    если значений больше 256, то разделяем на более мелкие каналы
    (например Channel_A оставляем только значения частоты, и например если кол-во вариантов Channel_Reg больше 256, то рассматриваем отдельно Channel_Noise, Channel_Control)

    Далее разделяем каналы на паттерны, вычисляем совпадающие паттерны, и составяем треклист содержащий адреса паттернов в памяти

    Если сразу не понятно - смотрим листинг кода проигрывателя.

    Есть ограничения:
    - длинна паттернов может быть хоть с постоянной, хоть с плавающей скоростью, но должно соблюдаться правило: длина паттерна в прерываниях должна быть одинаковой, либо половиной/четвертью и т.д.


    Версия 1.3
    Основное - добавил анализатор трека при загрузке (очистка неиспользуемых регистров, удаление громкости если установлена огибающая в регистрах громкости и т.п.) ну и по мелочи.
    Вложения Вложения
    Последний раз редактировалось TmK; 18.08.2016 в 00:52. Причина: Новая версия
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ах да, зыбыл добавить... дамп музыки неполный, но почти полный...
    в компилированном виде музыка занимала 10262, у нас при размере паттерна 8 получается 9972, так что думаю право на жизнь плэйер имеет)
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  4. #3
    Banned Аватар для unbeliever
    Регистрация
    17.01.2005
    Адрес
    Самара
    Сообщений
    973
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Готовишься?

  5. #4
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Эмм... к чему? ))
    Это я для демки конечно делал) но вдруг кому еще пригодится)
    Пока это бета версия, как доработаю полностью с сорцами выложу.
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  6. #5
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в моей молодости был урезанный плеер под саунд трекер, 700-800- тактов. огибающая была выпиленная, но умелый писатель вполне обходился 8) Перекомпилировать ничего ненадо было.
    У кого увидели унесли и подправили, непомню, может у IMP, а может у MCHG

  7. #6
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,965
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от research Посмотреть сообщение
    в моей молодости был урезанный плеер под саунд трекер, 700-800- тактов. огибающая была
    Тогда и музыку писали на 5-8 скоростях, а треки занимали по 2 килобайта.

  8. #7
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,141
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А где бит включения огибающей для нканала?

  9. #8
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В регистре громкости для каждого канала.
    D3-D0 амплитуда
    D4 - 1-использование генератора
    пакета.
    D4 - 0-использование значения амплитуды
    забылся немного
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  10. #9
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,141
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TmK Посмотреть сообщение
    В регистре громкости для каждого канала.
    Если заюзать под это дело биты 4-6 регистра R13, а бит 7 этого регистра заюзать под флаг перезагрузки огибающей, то пакеты каналов можно сжать в 2 байта, вместо 3.

  11. #10
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Если заюзать под это дело биты 4-6 регистра R13, а бит 7 этого регистра заюзать под флаг перезагрузки огибающей, то пакеты каналов можно сжать в 2 байта, вместо 3.
    Что сэкономит 256 байт текущей таблицы и увеличит кол-во тактов требуемых проигрывателю)
    А тут цели ставились:
    1) максимальная скорость проигрывания
    2) приемлемый размер откомпилированного трека (в данном случае даже меньше оригинала)

    пакеты канала тут занимают 1 байт (индекс по которому вытаскиваем из таблички tone_low, tone_hi, volume)

    В данном случае (запускаем компилятор и смотрим варианты значений для каналов A,B,C) можно вместо отдельных таблиц для каждого канала объединить в одну таблицу - сэкономим 1280байт, но пока для меня это нетривиальная задача...
    Последний раз редактировалось TmK; 16.11.2010 в 12:40.
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

Страница 1 из 5 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Проигрыватель WAV-музыки
    от p@lex в разделе Музыка
    Ответов: 22
    Последнее: 06.08.2014, 01:59
  2. Ответов: 296
    Последнее: 14.10.2012, 23:53
  3. Муз.Проигрыватель для Symbian 9.x
    от Darkman007 в разделе Музыка
    Ответов: 13
    Последнее: 19.09.2008, 21:10
  4. Куплю проц Z84C0006PEC или более быстрый.
    от Evgeny Muchkin в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 19.09.2006, 11:24

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •