PDA

Просмотр полной версии : Sound Agressor 1.8 may be?



himik
07.08.2008, 09:21
Гы! Вчера я всеже решил сесть покодить, так как залитый водой из рук моей жены моник вернулся на родное место.
В процессе мозгового штурма решился я накодить 4к интру, ну точнее вспомнить хоть что-то :)
А для нее же нужна музыка, не так ли?
Найдя подходяший музон, я начал его конвертировать в SAG.
Все в целом удачно вышло, да вот только показалось мне, что плеер в 409 байт слишком уж большой, и сел его переделывать.
Через пару десятков минут плеер стал 390 байт.

В целом заявляю, что при плеере в 390 байт, модуль занимает 714 байт. Не дурной результат я думаю, есть даже 20 байт в запасе до одного кило.
А что, думаю 1/4 объема под музу - не самый хреновый вариант.

9 авгутса 2008 года плеер сокращен до 388 байт. Мну пропустил один лишний JR :)

10 августа 2008 года. Плеер сократился до 372 байт. Процесс идет!

13 августа 2008 года. Плеер сократился до 370 байт. Был сонный, и ни как не мог придумать более короткий процесс проверки регистра HL на ноль, кроме как LD A,H; OR L; JR Z,...

А вообще в текущей версии SAG нету ни фига алгоритма №2 и №2.5 :)
Они в зачаточном состоянии, и я думаю если их допинать, то вполне вероятно, что музыка будет еще меньше занимать.

Да, забыл сказать, плеер в 390 байт хавает не более 3500-4000 тактов. Он еще частично работает по стеку :)

Ни кто не планирует кодить 4к?
----------

шоб не быть голословным, выложу две работы с использованием моей технологии!

Это моя переделка 4к интро - 3D Lame, и собственно наша интра "Requiem of a Sun" с cAFE'03.
есть чего посмотреть :)

Sinus
08.08.2008, 00:06
а можно ссылку / доку про то, что такое Sound Agressor?

himik
08.08.2008, 13:35
http://www.pos.atlic.ru/index.php?name=Files&op=view_file&lid=897

SOUND AGRESSOR
v.1.0 beta

17.o6.2oo3
(c) Himik's ZxZ/PoS-WT
────────────────────────────────
Свершилось! Не смотря на все жизненные трудности и прочую ерунду, которая, конечно же, пыталась внести коррективы в текучесть событий, я смог зарелизить данную версию своего паковщика музыки.
Как Вам уже, наверное, известно, основная цель, которую я преследовал при создании данного конвертора - это использование программы при написании так называемых 4k Intro для разного рода party.
Основная проблема подобных номинаций это то, что в столь малый объем памяти очень трудно вставить музыкальное сопровождение. Точнее вставить его можно, но оно будет либо слишком "корявым", либо слишком коротким, либо просто из-за музыки не останется места под нормальный эффект.
Думаю, это отчасти влияет на желание программиста писать данные интрухи.
Надеюсь, с помощью моей программы все станет проще.
Скажу сразу, полученный в результате "код", может быть гораздо объемнее оригинального музыкального файла, но мой
"код" после упаковки, к примеру, RIP'ом занимает во много раз меньше.

Небольшие характеристики:

Размер плейера - 400 байт.
Занимает тактов - от 900 до 3300,
зависит все от музы :)
Максимум байт - 16384.
Раскладка каналов - ABC.
Входной файл - Pro-Tracker v3.5x
не понимает DELAY=2

Приведу немного статистики. В приложении вы найдете все мелодии, которые я привел в данном списке.

┌──────────┬────────────┬───────┬───────────────── ┬────────────┐
│Music Name│Original Len│SAG Len│SAG after RIP Len│Pack Percent│
├──────────┼────────────┼───────┼───────────────── ┼────────────┤
│NOSE.m │ 1433 │ 08057 │ 0765 │ 91 │
│ESP4ANY.m │ 2702 │ 12619 │ 1912 │ 85 │
│PPQ1.m │ 2049 │ 04411 │ 0717 │ 83 │
│kukushka.m│ 4008 │ 12985 │ 2334 │ 82 │
│IMAGIN.m │ 4196 │ 15610 │ 2398 │ 85 │
└──────────┴────────────┴───────┴───────────────── ┴────────────┘

Сразу хочу заметить, что оригинальные и конвертированные мелодии были без плейера, а пакованные файлы без
распаковщика.
Еще немного инфы: я запаковал исходный модуль PPQ1.m, и получил файл в 617 байт, т.е. пакованый исходный модуль занимает меньше, чем пакованый конвертированный :)
Но это не беда! Мой модуль играется плейером в 400 байт, а исходный сколько занимает? Правильно, примерно 3400 байт, и как фигово он пакуется, примерно в 2100 байт :) Думаю, теперь ясно, о чем я.

Ну и сразу вспомнил баг! Данная версия программы не "умеет" контролировать объем получаемого модуля. Таким образом, если
при конверсии вы заметили, что объем мелодии показывает больше 16384, то в скором времени либо все зависнет, либо
одно из двух :) Короче говоря, муза просто не влезет в память :)

Коротко об алгоритме работы.

Уточнюсь, программа понимает мелодии только от редактора Pro-Tracker v3.5x и только без плейера.

1. Раскладываем мелодию на паттерны.
2. Раскладываем каждый паттерн на каналы A, B и С.
3. Составляем список "оригинальных" каналов. Т.е. убираем дубликаты каналов из разных паттернов.
4. Конвертируем каждый канал в отдельности по моему алгоритму.
5. Создаем список пакованных каналов.
6. Расставляем каналы в соответствии с Position List мелодии, т.е., грубо говоря, расставляем паттерны, которые состоят из смещений до каждого канала.
7. Устанавливаем Loop, т.е. зацикливание мелодии.

А вот теперь самое противное. Из-за особенности алгоритма паковки, мы получаем внушительный список "НЕЛЬЗЯ", которые должен учитывать музыкант при создании своего шедевра, и это, конечно, очень печально. Но, к сожалению - это факт.
Кое-какие минусы я не мог предугадать, и вот результат - бывают глюки :)

Нельзя:

1. Использовать в одном из каналов паттерна чередующиеся команды DELAY.
Поясню почему, пакую я поканально, а это значит, что пакуя канал А паттерна 5, DELAY будет всегда равным текущему, и если в данном паттерне в канале B была смена DELAY, то паковка канала А на это не обратит внимания, т.к. повторюсь - паковка идет поканально !!! И, когда я пакую канал А, я знать не знаю от какого он паттерна, и, тем более, что там происходит в канале В.

2. Использовать одновременно огибающую в разных каналах.

Рассмотрим пример:

У нас в канале В была огибающая, и мы ее успешно сконвертили. Потом нам попался канал С от этого паттерна, где включалась огибающая без смены частоты, и к чему это приведет? Правильно, конвертор вставит команду включения огибающей, укажет её период, да только вот частоты огибающей не будет! Она будет равна нулю, а значит при воспроизведении занесутся нулевые значения в регистры частоты огибающей, и вы не услышите того, что было до этого в
канале В.

3. Использовать в мелодии эффекты "продолжения звука" от предыдущего паттерна. Т.е. использовать в предыдущих паттернах звук, который должен продолжать свое звучание в данном канале но уже в другом паттерне.
Конвертор в таком случае возьмет канал паттерна, в котором должен продолжаться звук и запакует его. Но, т.к. первых нот в паттерне нет, звук будет опять-таки нулевым.

4. Указывать в начале канала ноту, не содержащую информации о номере сэмпла, орнамента и громкости. Громкость-то, допустим, при паковке станет F, а вот сэмпл с орнаментом будут равны фиг знает чему, а значит, вместо звука будет дребедень и лажа. Так что не забывайте в начале каждого канала указывать реальные номера инструментов.
Это опять из-за того, что паковщик работает поканально, и он ничего не знает о том, что там до него было установлено. Каждый раз все обнуляется.

Исходя из этого, можно сделать небольшую рекомендацию:

Храните деньги в сберегательной кассе! Тьфу, глюк!

При написании мелодии старайтесь чаще использовать одинаковые каналы в разных паттернах. Например, создав одну бас-ритм партию, старайтесь все завязать на нее. Думаю, поюзав, поймете.

Данная версия очень сырая, после конвертирования одного музона второй уже не пойдет :) Это погрешность скорости сборки, старался успеть перед CAFe'03, чтоб Вы, возможно, создали свой шедевр в 4К intro.

В приложении найдете компилированный под #C000 плеер музы, а также его исходники. А для тех, кому очень интересно исходник будет ниже :)

Теперь о том, как вообще чего сделать, и как добиться оптимального резульата.

Значится, так... О том, что делать с музой, я уже написал, а вот, что делать после конвертирования:

Рассмотрю вариант с плейером.

Для начала, отгрузите модуль SAG с плейером. Кстати, после паковки муза будет воспроизведена, и на бордере вы увидете пару полосок. Красная так просто, а вот синяя - это, собственно, тактомер плейера, - сколько же он жрет тактов? :)

После чего нужно примерно прикинуть, а сколько он будет занимать в пакованном виде? Грузим RIP (Real Information Packer) и пакуем музу. Видим примерный результат паковки. Прикидываем и, если все ок, пишем свою прогу дальше :)

Замечу, что паковать RIPом выгоднее. Он сжимает гораздо мощнее HRUSTа. И конечно, вы понимаете, что максимальный резальтат паковки вы получите только при паковке всей своей программы вместе.
Допустим, у вас уже все готово, собрано и отгружен объектный код, в дебрях которого уже есть муза с плейером. Осталось только запаковать и все.

Еще совет: для более душевного результата паковки используйте автоматический перебор окна паковки в RIP v0.25, и тогда вам возможно выиграть не один десяток байт :)

И напоследок скажу, что у отгруженного модуля SAG малость нестандартные адреса входа.

#C000 (49152) - Init music
#C043 (49219) - Play music

А еще есть один баг:) Я где-то похоже потерял регистр BC, из-за чего небольшой совет, сохраните регистр BC после вызова плейера так, чтоб он восстановился перед вызовом плейера :)

M1 LD BC,#0000
CALL #C043
LD (M1+1),BC

Возожно это альтернативный BC, не помню. Разберетесь, я думаю. Если этого не сделать, то возможно, в Вашей программе будут слышны глюки в музыке. Я на такие грабли наступил, когда делал интру к Izhnews #0D. Да! Кстати, там музыка в интре запакованна именно этим алгоритмом.

himik
08.08.2008, 13:50
а можно ссылку / доку про то, что такое Sound Agressor?

дока ниже, а демо материал выложил в первом посте.

himik
09.08.2008, 17:30
сегодня позырил алгоритм №2, и понял, что ни фига не понял...
к сожалению у меня нет описания тех мыслей, которые я хотел в нем реализовать.
видать буду новый придумывать :)

или не надо?

AAA
09.08.2008, 19:46
или не надо?
Придумывай, мне надо. А в демках играет обычная музыка или ТСФМ ?

himik
09.08.2008, 20:01
Придумывай, мне надо. А в демках играет обычная музыка или ТСФМ ?

обычная конечно. мну тсфм не переваривает.

AAA
09.08.2008, 20:06
обычная конечно. мну тсфм не переваривает.

А че тогда спектакулятор пишеть ТСФМ ? Все уже не пишет... Либо я того, либо эмуль...

Демка с анализатором круглым супперски смотрится. Выложу обязательно в демоархив, только как это чудо обозвать еще не знаю ?!?
название и автора как писать ?

himik
09.08.2008, 20:33
А че тогда спектакулятор пишеть ТСФМ ? Все уже не пишет... Либо я того, либо эмуль...

Демка с анализатором круглым супперски смотрится. Выложу обязательно в демоархив, только как это чудо обозвать еще не знаю ?!?
название и автора как писать ?

Демка с индикатором называется "Requiem of a Sun". Автор - PoS-WT.
Кодил Kim/Rain Group Inc.(RGI)/PoS-WT и Himik's ZxZ/PoS-WT. Там есть вроде diz файл с описанием:)
Единстеванная работа в номинации 4К Интро на cAFE'03. Если мне память не изменет.

AAA
09.08.2008, 21:04
Демка с индикатором называется "Requiem of a Sun". Автор - PoS-WT.
Кодил Kim/Rain Group Inc.(RGI)/PoS-WT и Himik's ZxZ/PoS-WT. Там есть вроде diz файл с описанием
Единстеванная работа в номинации 4К Интро на cAFE'03. Если мне память не изменет.

Угу, выложу, при очередном обдейте.

himik
13.08.2008, 12:52
мну монстр :)
сократил плеер до 370 байт.

riskej
13.08.2008, 13:14
о_О в студию! просим! :)

himik
13.08.2008, 14:54
о_О в студию! просим! :)

дык прога то выложена. плеер если надо отдельно могу заслать.
а так софтины нету, исходник онли :)
все равно ожиотажа нету :confused:

Vitamin
13.08.2008, 20:40
Даешь сырец в тему! Мозговой штурм по уменьшению будет :)

himik
21.08.2008, 16:22
сукс... жаль что особо нет интереса к проджекту :(

key-jee
22.08.2008, 11:57
сукс... жаль что особо нет интереса к проджекту :(

Так не в той ветке интересующихся ищешь. Тем кто музыку пишет/слушает по большому барабану каким плеером слушать - лишь бы звучало правильно. А те, кому важен быстрый/компактный плеер живут в ветке програмистов..

himik
22.08.2008, 15:22
Так не в той ветке интересующихся ищешь. Тем кто музыку пишет/слушает по большому барабану каким плеером слушать - лишь бы звучало правильно. А те, кому важен быстрый/компактный плеер живут в ветке програмистов..

логично конечно, но истенный спектрумист все темы читает :)
кста, кто писал музон нумбер 2 в мурхухне?

newart
22.08.2008, 16:20
Himik - лучше бы сделал трекер новый, по ТЗ Siril'a + поддержка цифровых семплов и бипера, вот это было бы интересно!! :)
Я готов сделать версию на пц.

himik
22.08.2008, 19:45
Himik - лучше бы сделал трекер новый, по ТЗ Siril'a + поддержка цифровых семплов и бипера, вот это было бы интересно!! :)
Я готов сделать версию на пц.

под TS то недоделал, за новый возьмусь - ваще ни фига не напишу :)