В AY похоже полином 12000h
В AY похоже полином 12000h
Я заглянул в три сорца и везде разные, думаю наугад. Без микроскопа не узнаешь.
Больше игр нет
Извините за оффтоп по AY
Скрытый текст
Тоже посмотрел 3 исходника. В двух одинаковая конфигурация Фибоначчи реализована по разному. В третьем конфигурация Галуа с полиномом 10004 (а если развернуть Фибоначчи из первых двух, то у меня получается 12000).
Посмотрел 4й (твой vector06js). Там (если учесть деление на 2) тоже 12000.
[свернуть]
Последний раз редактировалось ivagor; 15.09.2018 в 18:32. Причина: добавил про 4й исходник
Пока мне не даются "треугольный" и "шумовой" каналы, решил обновить забойные рокенрольные композиции Тима Фолина.
Target Renegade
Кроме добавления громкости сделаны следующие изменения\нововведения - увеличено количество нот для каждой композиции (раньше было ограничение 256 нот всего).
Надеюсь, звучать стало лучше.Код:было стало 01 244 317 02 251 284 03 248 440 04 233 519 05 242 429 06 245 394 07 163 285
- - - Добавлено - - -
Йерун Тель - Robocop 3 - Title theme
Так же добавлена громкость и увеличено количество нот с 250 до 384.
А что значит увеличено количество нот?
Больше игр нет
В самой первой версии плеер умел только 64 ноты из миди-диапазона от 0 до 127. Этого поначалу было вполне достаточно - кастельвании использовали в среднем 35-40 нот.
Затем я освоил pitch_bend, который может быть от -8192 до +8191 к основной ноте. Это минус\плюс октава, то есть -12 от ноты если значение pitch_bend = 0 и +12 от ноты, если pitch_bend = 16383. Я приводил примеры из текста миди - там после включения каждой ноты указывается с каким смещением от основной частоты она играет. Ну вот если посчитать эти смещения как отдельные ноты, то они и будут дополнительными. Тогда я расширил значение до 256 - кастельвании с утками зазвучали лучше, появились эти самые ууииии-ууиии, уаауу-уааууу, ну и тд. А когда стал конвертировать ренегата и робокопа, оказалось что им 256 нот уже мало. Пришлось делить 16384 значения pitch_bend, что приводило к потере некоторых частот.
Для эксперимента я создал три отдельные таблицы нот для каждого канала. Получается (в теории) можно играть независимо 768 разных частот. На практике это не так - многие каналы пересекаются. Но всё равно это позволило расширить диапазон, не вылезая при этом из значения байта (256).
- - - Добавлено - - -
Вот пример из робокопа:
В начале включается нота 104 (3322,44 КГц), но тут же её частота понижается (v=7839) на 8192-7839=353 от изначальной (это примерно на четверть тона ниже). А дальше её частота вообще скачет вниз в паре мест до нуля - это уже равно ноте 104-12=92 (1661,22 КГц). Ну и тд и тп. Соответственно между существующими миди-нотами (0..127) у меня появляются дополнительные (заранее неизвестно сколько их будет).Код:79 On ch=1 n=104 v=127 79 Pb ch=1 v=7839 79 Par ch=1 c=11 v=46 84 Pb ch=1 v=7163 91 Pb ch=1 v=4526 98 Pb ch=1 v=2371 105 Pb ch=1 v=7163 112 Pb ch=1 v=4526 119 Pb ch=1 v=2371 126 Pb ch=1 v=1126 133 Pb ch=1 v=4526 140 Pb ch=1 v=2371 147 Pb ch=1 v=1126 154 Pb ch=1 v=0 161 Pb ch=1 v=2371 168 Pb ch=1 v=0 175 Off ch=1 n=104 v=0
А что если не пытаться на общую шкалу все переводить, а оставить ноту нотой, а бенд бендом? Или сложный очень плеер получается?
Больше игр нет
Конечно так можно. Я изначально так и хотел. 128 значений для ноты и ... 16384 для pitch_bend - а это два дополнительных байта. Получится при включении ноты надо получить три байта данных (против одного сейчас). И самое главное - кто и как вычислит это значение - на 8080 я не умею быстро делить\умножать и вычислять новое значение частоты. Поэтому выбрал табличный вариант в самой программе конвертере.
- - - Добавлено - - -
Но если мне покажут пример как делать, попробую применить = ))
Ага, понимаю.
А что если при конверсии пересчитать экспрессию этих забубенных бендов по модулю полутона, чтобы смещение не могло быть больше полутона. Тогда бенд всегда будет начинаться с целой ноты + смещение по модулю, а не за условно октаву от указанной ноты. Дальше писать только дельту, изменение бенда. Так и полбайта хватит на канал. И просчитать их можно заранее, чтобы ничего не делить не умножать на 8080. Но это наверное значительная переделка плеера будет.
Больше игр нет
Вот это меня никогда не останавливало - конечно не каждый день, но довольно часто что-то меняю\переписываю свой код в Прекрасном = )) Наоборот это очень удобно - поправил где-то пару байт, нажал Play, через десяток-другой секунд посмотрел\послушал результат на реальном Апогее и давай опять писать в Прекрасном. Так что плеер можно переписать как нужно - тем более после введения дополнительных возможностей это всё-равно придётся сделать.
Другой вопрос что я не совсем (в который раз) понял следующий момент:
Речь о том, что поделить 16384 на константу (или как-то хитро высчитать) и в дальнейшем вместо +/-8192 использовать +/-12 или нет?
Хотелось бы пример или какое-то развёрнутое пояснение.
- - - Добавлено - - -
Выложил несколько разных шумов получаемых по моей схеме.
Послушать здесь
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)