NeoGS for 32-channel XM, IT, S3M

NeoGS software and hardware

Postby TS-Labs » 20 Apr 2010, 19:25

lvd wrote:Я ничего не путаю. Прошу расписать алгоритм в формулах тогда полностью. Со всеми битами и интерполяциями.

Исходники довольно неплохо закаменчены. Повторюсь, если вызывает сомнения алгоритм, зашей послушай как играет в атмеге мой плеер.

breeze wrote:Если интересно можешь скачать саму демку, в образе диска есть сорцы и примеры.

Спасибо, обязательно посмотрю.

Касательно хранения 32 счетчиков в чипе и объемов плиски. Что если сделать 4 \ 8 блоков обработки (ALU) (сколько необходимо или влезет в фпга), а сами агрументы (адреса выборок, адреса петель, инкременты выборки - их набирается больше 200 в сумме) хранить в ОЗУ, обрабатывать по очереди.
Касательно выбора делителя громкости от кол-ва каналов: К_PAN рассчитывается программно плеером, не на ФПГА, так что мне его рассчитать вообще ни разу не проблема.

Присматриваюсь к ХМ-кам. Вроде ниче, формат вменяемый, эффекты похожи на МОД.

Народ, кто что знает про формат v2m? В инете как то не густо по этому вопросу. Это собственный формат тусовки Farbrausch, сильно интересно устроен и звучит. Подозреваю, что там какой-то мега хитрый FM-синтез.
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby breeze » 20 Apr 2010, 20:34

TS-Labs wrote:Народ, кто что знает про формат v2m? В инете как то не густо по этому вопросу. Это собственный формат тусовки Farbrausch, сильно интересно устроен и звучит. Подозреваю, что там какой-то мега хитрый FM-синтез.


Так и есть, он «распаковывается» (дехрюнчится) в раму в виде wav'ки и затем проигрывается…

Вообще рекомендую заглянуть на сайт farbrausch, там много чего интересного можно найти :)
breeze
 
Posts: 538
Joined: 07 Feb 2009, 16:19
Group: Registered users

Postby TS-Labs » 20 Apr 2010, 23:32

Посмотрел TheLink. Ниче так. Прикольно играет ТурбоСаунд - я его сначала за ГС принял.
Кто знает, на каком железе работает вот это http://www.youtube.com/watch?v=6CkkV0pj2EM ?
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby lvd » 21 Apr 2010, 00:32

TS-Labs wrote:Исходники довольно неплохо закаменчены.

Спасибо. Мне, чтобы понять, что надо делать, достаточно грамотных формул. А исходники смотреть и разбираться в мегабайтах гениального кода нет никакого желания.
TS-Labs wrote:зашей послушай как играет в атмеге мой плеер.

Щяс, токо быстренько спаяю на макетке, зашью и послушаю...
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7239
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby breeze » 21 Apr 2010, 01:32

TS-Labs wrote:Посмотрел TheLink. Ниче так. Прикольно играет ТурбоСаунд - я его сначала за ГС принял.


Там не просто TurboSound, а TurboSound FM (TSFM) подробнее тут.

TS-Labs wrote:Кто знает, на каком железе работает вот это http://www.youtube.com/watch?v=6CkkV0pj2EM ?


Это стилизованное видео, но теоретически можно повторить под 16c & NGS
breeze
 
Posts: 538
Joined: 07 Feb 2009, 16:19
Group: Registered users

Postby TS-Labs » 21 Apr 2010, 09:52

lvd wrote:Спасибо. Мне, чтобы понять, что надо делать, достаточно грамотных формул. А исходники смотреть и разбираться в мегабайтах гениального кода нет никакого желания.

Ты не поверишь, когда я скажу, ЧТО мне ответили на аналогичный вопрос про алго в 5 прошивке ГС десятком постов ранее в этом топике.
Будут формулы чуть позже. Я ж описывал ранее. В каком тебе еще их виде изложить?

breeze wrote:Это стилизованное видео, но теоретически можно повторить под 16c & NGS

Это была шутка. Кстати, мне очень понравился стиль. Графика в стиле спектрумских игрушек, но опытному зрителю тут же бросается в глаза, что на одном знакоместе значительно больше цветов, чем 2. Класс...

breeze wrote:Щяс, токо быстренько спаяю на макетке, зашью и послушаю...

Ее не надо паять. Ее достаточно зашить, подать питалово и кварц, и подключить к лапам выходы на колонки. В этом цимес.
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby lvd » 21 Apr 2010, 11:29

TS-Labs wrote:Ты не поверишь, когда я скажу, ЧТО мне ответили на аналогичный вопрос про алго в 5 прошивке ГС десятком постов ранее в этом топике.

Ну это трупософт ответил, я за него не отвечаю.
TS-Labs wrote:Будут формулы чуть позже. Я ж описывал ранее. В каком тебе еще их виде изложить?

Если я правильно понял, шаг по семплу делается в фиксированной точке 8.16
В связи с тем, что целая часть шага может быть не только 0 или 1 (а даже отрицательной, как я понял), хочу формулы интреполяции в случае шага отрицательного или положительного по модулю большего 1. (и подозреваю, что это уже будет не настоящая интерполяция, а так, профанация :))

Далее, надо знать, нужны ли какие прерывания, таймеры.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7239
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby deathsoft » 21 Apr 2010, 11:56

lvd wrote:Ну это трупософт ответил, я за него не отвечаю.

Есть небольшая разница, прошивка gs105 написана не мною, а третьими лицами в далеком 97м году, если бы ее писал я то ответил бы как она там устоена и по каким алгоритмам работает, а так - уж извольте.
User avatar
deathsoft
 
Posts: 4719
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby TS-Labs » 21 Apr 2010, 14:12

Ну что, поиграемся в проектировщиков жэлеза? :)

Первая часть описания проекта.

Общая хуйня.

Рабочее название вундервафли – Hummer Ultra Sound. (Внимательный читатель наверное заметит некий намек на Gravis Ultra Sound, и да – это не случайно.)
Чип имеет 2 типа регистров:
- регистры ЦАП-конвееров (DAC Feeder Registers = DACFR) – их 32 набора; хранятся в ОЗУ альтеры.
- общие регистры – реализованы на логике альтеры.

Описание DACFR.

<имя регистра>.<разрядность, бит> Расшифровка названия. Тип регистра. Описание.

Тип регистра:
Внутренний – используется во внутреннем алгоритме, доступен извне, но изменение его не рекомендуется.
Внешний – используется для задания параметров извне.

SAR.24 Sampling Address Register
Текущий адрес выборки. Внутренний. Используется для текущей выборки, после этого изменяется на SIR.A3..0.

SSAR.12 Sampling Sub-Address Register
Текущий суб-адрес. Внутренний. SSAR.11..4 используется в алгоритме интерполяции.

SARR.24 Start Address Reload Register
Адрес начала сэмпла. Внешний. Переписывается в SAR по перепаду
ALR 0->1.

EAR.24 End Address Register
Адрес конца сэмпла. Внутренний.

EARR.24 End Address Reload Register
Адрес конца сэмпла. Внешний. Переписывается в EAR по перепаду
ALR 0->1.

LSAR.24 Loop Start Address Register
Адрес начала петли. Внутренний.

LSARR.24 Loop Start Address Reload Register
Адрес начала петли. Внешний. Переписывается в LSAR по перепаду
ALR 0->1.

LEAR.24 Loop End Address Register
Адрес конца петли. Внутренний.

LEARR.24 Loop End Address Reload Register
Адрес конца петли. Внешний. Переписывается в LEAR по перепаду
ALR 0->1.

SIR.16 Sampling Increment Register
Инкремент выборки. Внешний.
MSB: A3A2A1A0 S11S10S9S8, LSB: S7S6S5S4 S3S2S1S0
An – Address Increment – целая часть для изменения SAR.
Sn – Sub-Address Increment - дробная часть для изменения SSAR.

IDR.2 Increment Direction Register
Текущее направление изменения адреса. Внутренний.
00 – Stop. Изменение регистра адреса выборки не производится – конвеер стоит.
01 – Increment. Увеличение регистра адреса выборки на SIR.A3..0, увеличение регистра суб-адреса на SIR.S11..0 после каждой выборки. Сэмпл играет вперед.
10 – Decrement. Уменьшение регистра адреса выборки на SIR.A3..0, УВЕЛИЧЕНИЕ регистра суб-адреса на SIR.S11..0 после каждой выборки. Сэмпл играет назад.
11 – Undefined. Запуск 1-й части Lyra II с мультиколором в разрешении 1920х1080р с автоматической отправкой письма RST7 по протоколу SMTP с предложением увеличить пенис. Опционально.
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby TS-Labs » 21 Apr 2010, 14:12

LMR.2 Loop Mode Register
Режим работы петли.

00 – Loop Off
Читаем вперед до конца сэмпла, выключаем конвеер.
01->IDRn
do until SARn<=EARn
updateDACn (выборка)
loop
00->IDRn
01 – Loop Forward
Читаем вперед до конца петли, повторяем с начала петли до конца петли.
01->IDRn
do
do until SARn<=LEARn
updateDACn
loop
LSARn->SARn
loop
10 – Loop Backward
Читаем вперед до конца петли, повторяем с конца петли до начала петли.
01->IDRn
do until SARn<=LEARn
updateDACn
loop
10->IDRn
do
do until SARn>=LSARn
updateDACn
loop
LEARn->SARn
loop
11 – Loop Bidirectional
Читаем вперед до конца петли, повторяем с конца петли до начала петли и с начала до конца.
do
01->IDRn
do until SARn<=LEARn
updateDACn
loop
10->IDRn
do until SARn>=LSARn
updateDACn
loop
loop

PR.8 Panoraming Register
Регистр панорамирования. Используется для выбора громкости звучания канала в левом/правом стереоканалах.
0 – 100% в левом, 0% в правом
127 – 50,5% в левом, 49,5% в правом
128 – 49,5% в левом, 50,5% в правом
255 – 0% в левом, 100% в правом

ISR.8 Interpolation Sample Register
Используется для хранения предыдущей выборки в целях интерполяции.
Описание процедуры updateDAC:
S<-byte[SAR]
DACSL.16<-DACSL.16+((S*(256-SSAR.11..4)+ ISR*SSAR.11..4)*PR).11
DACSR.16<-DACSR.16+((S*(256-SSAR.11..4)+ ISR*SSAR.11..4)*(255-PR)).11
SAR.24<-SAR.24(+/-)SIR.A3..0
SSAR.12<-SSAR.12+ SIR.S11..0
if overflow(SSAR) or SIR.A3..0>0 then S->ISR

Описание общих регистров

ALR.32 Address Latch Register
Защелка адресных регистров. Перепад 0->1 ALR.n вызывает перезапись всех адресных регистров xARRn в регистры xARn:
if ALR.n 0->1 then SARRn->SARn, EARRn->EARn, LSARRn->LSARn, LEARRn->LEARn

DACSL.16
DACSR.16 DAC Summator Left/Right
Сумматоры значений для ЦАПов. В конце выборок всех 32 каналов значения этих регистров переписываются во внешние ЦАПы.
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

PreviousNext

Return to NeoGS - софт и железо

Who is online

Users browsing this forum: No registered users and 1 guest

cron