Просмотр полной версии : Автопоиск петли в треках
Есть множество .AY файлов, где длительность трека проставлена от балды и ровняется 5 минутам.
Хочу обрезать лишее, в случае джинглов всё просто.
А вот у полноценных зацикленных треков надо отловить место когда начинается повтор.
Как это можно сделать? (оперируя полным дампом регистров) :v2_conf2:
Навскидку:
LEN- длина дампа (полного, а не только изменения)
MIN_LEN- минимальная длина трека (лучше в % от LEN)
DATA- исходный массив данных
DATA[a..b] - подмассив от a до b.
for i = (LEN-MIN_LEN)..1 #size of tail
for j = MIN_LEN..(LEN-i) #size of head
if (equal(DATA[0..j], DATA[i..LEN]) exit;#DATA[0..(i-1)] - original track
хотя квадратичная сложность- не комильфо...
Надо учитывать что начало трека может далее не повторяться, то есть музон может быть зациклен не на начало...
Надо учитывать что начало трека может далее не повторяться, то есть музон может быть зациклен не на начало...
Тогда как-то так:
for i = 1..(LEN-MIN_LEN)#size of tail
for j = 1..(LEN-j)#check window
if (equal(DATA[(LEN-i-j)..(LEN-i)], DATA[(LEN-i)..LEN])
result=LEN-i
После всех проходов в result будет минимальная длина трека. Если подумать, то можно сделать отсечение циклов раньше- иначе очень тормозно будет.
---------- Post added at 09:18 ---------- Previous post was at 08:17 ----------
Кстати о птичках. Каким образом в формате .AY хранится дамп регистров? Или используется AMAD-формат?
Кстати о птичках. Каким образом в формате .AY хранится дамп регистров? Или используется AMAD-формат?
А он и не хранится.
Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.
А он и не хранится.
Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.
А не проще было все в PSG хранить?
А не проще было все в PSG хранить?
Это вопрос к создателям .AY и тем кто дергал и сохранял музыку в этом формате.
Вообще PSG для хранения игровых треков не очень подходит.
Занимает много места, при записе неизбежны паузы в начале или обрезнное начало, определять на слух окончание трека тоже не понятно как , не поддеживает семплы и бипер и т.д.
---------- Post added at 14:09 ---------- Previous post was at 14:07 ----------
Кстати, ZXTune поддерживает .AY?
Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.
В каком формате дамп?
Занимает много места, при записе неизбежны паузы в начале или обрезнное начало, определять на слух окончание трека тоже не понятно как , не поддеживает семплы и бипер и т.д.
Зато анализируется на ура и прост для рендера.
---------- Post added at 14:25 ---------- Previous post was at 14:24 ----------
Кстати, ZXTune поддерживает .AY?
Пока нет. Я его потихоньку практически заново пишу.
Пока нет. Я его потихоньку практически заново пишу.
Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.
---------- Post added at 14:45 ---------- Previous post was at 14:42 ----------
В каком формате дамп?
16 байт, тут вроде без вариантов.
Файлов не много, так что производительность обработки мне не важна.
Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.
Для AY?
16 байт, тут вроде без вариантов.
Файлов не много, так что производительность обработки мне не важна.
Примеров можешь дать? И что требуется на выходе. Есть кое-какие идейки...
Для AY?
Ага. Я думаю. это проще чем напрямую поддержать форматы Digital Studio и DMM.
Примеров можешь дать? И что требуется на выходе. Есть кое-какие идейки...
Примеров необрезанных AY?
Вот:
Примеров необрезанных AY?
Не, дампов.
Ага. Я думаю. это проще чем напрямую поддержать форматы Digital Studio и DMM.
При наличии спека на формат- нативные дигитальные музоны играются очень просто и приятно. AY формат достаточно сложен. Хотя бы необходимостью эмулятора процессора.
AY формат достаточно сложен. Хотя бы необходимостью эмулятора процессора.
Я бы с тобой согласился если бы не было 3 варианта уже написаных исходников проигрвания этого формата (AYFLY, AY Emul и что то буржуйское).
А про наличие спека, не понял что ты хотел сказать.
А про наличие спека, не понял что ты хотел сказать.
Наличие описания формата. Например, CHI достаточно детально описан, для PDT пришлось анализировать код трекера.
Наличие описания формата. Например, CHI достаточно детально описан, для PDT пришлось анализировать код трекера.
Трекеров дигиатльных очень много, накладно каждый поддерживать, проще как я уже писал сделать 128к в .AY.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot