AYX-32 - звуковая карта в слоте АУ

Железо для спектрум-совместимых машин

Postby TS-Labs » Wed, 18.01.2017 06:10:58

UPDATE
+ Добавлен регистр PUSHUP, который обеспечивает постоянное напряжение смещения на ЦАПах. Пока неизвестно, как себя поведет чип в различных схемах включения, поэтому - пусть будет.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby WBC » Wed, 18.01.2017 13:36:47

неявый UPDATE:
репа переименована: https://github.com/tslabs/arm/tree/master/AYX-32
Наткнулся случайно, когда все ссылки ВНЕЗАПНО стали вести на 404 :)
--wbcbz7
User avatar
WBC
 
Posts: 302
Joined: Fri, 19.09.2014 10:23:23
LOCATION: omsk XOR nsk

Postby TS-Labs » Wed, 18.01.2017 17:14:04

Все - это где? В шапке я везде поменял...
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby WBC » Wed, 18.01.2017 17:20:46

а, значит это было раньше либо в кэше браузера осталось.
--wbcbz7
User avatar
WBC
 
Posts: 302
Joined: Fri, 19.09.2014 10:23:23
LOCATION: omsk XOR nsk

Postby VBI » Thu, 19.01.2017 14:17:18

Выглядит экземпляр №1 вот так:
20170119_131004.jpg

:pank:
20170119_130930.jpg

20170119_130942.jpg
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby TS-Labs » Fri, 20.01.2017 08:49:34

Впилил фифойный ЦАП, наткнулся на неприятные грабли. В чипе ЦАПы беззнаковые. Это в общем хорошо для АУ. Но это плохо для вейва.
Появились следующие вопросы.
1. Как увязать беззнаковый ЦАП и знаковый вейв?
2. Как увязать между собой беззнаковый АУ и знаковый вейв?

Первое вроде просто: достаточно преобразовать одно в другое, но при этом "0" вейва будет на 1/2 напряжения ЦАПа. Хрен бы с ним.
Но что делать потом со вторым?
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby psb » Fri, 20.01.2017 10:54:29

приводи все к беззнаку и сложай.
User avatar
psb
 
Posts: 715
Joined: Tue, 30.12.2014 23:22:32

Postby TS-Labs » Fri, 20.01.2017 12:35:09

Пока придумал следующее.
1. Отдельный буфер для вейва, 1/5 размера и столько же семплрейта от аудиобуферного, 16 бит, знаковый.
2. В нем суммируются все каналы, результат намазывается на АУ (еще не решил какое пати проигнорировать как намазыввать по знаковости).
3. Пока 1 сэмпл вейва копируется в 5 сэмплов АУ, по хорошему надо бы интерполяцию, но это уже на H7, 400МГц. А тут пока так.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Fri, 20.01.2017 14:36:11

Я, кстати, где-то читал про трекеры в прошлом году и там было сказано, что отводить независимую разрядность каналом - неправильно. Ну типа складывать каналы по 6 бит чтобы получить восемь. Там было сказано, что правильнее складывать каналы по 8 бит в 8 бит, единственное, с защитой от оборачивания, потому что оборачивание звучит реально плохо. А перегруз, типа, святое право музыканта в твоём трекере, нельзя лишать людей такого удовольствия.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby TS-Labs » Fri, 20.01.2017 14:54:50

Все верно. Ровно так и делают все трекеры, кроме разве что ГС. Все каналы суммируются по знаку в той же разрядности, что и результат. Если будет пик во всех 32 каналах одновременно, то да - амплитуда вырастет в 32 раза и возможен перегруз. Это происходит редко, но лечится общей громкостью для отдельно взятого музона, которая даже выведена в специальный параметр в модулях.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 20.01.2017 15:02:19

А, и кортексы имеют аппаратный saturated math, что очень удобно в данном случае.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby psb » Fri, 20.01.2017 15:47:29

TS-Labs wrote:Ровно так и делают все трекеры, кроме разве что ГС.

так гс - это мод, а в модах принципиально нельзя получить перегруз.
TS-Labs wrote:(еще не решил какое пати проигнорировать как намазыввать по знаковости)

а есть разные варианты?
User avatar
psb
 
Posts: 715
Joined: Tue, 30.12.2014 23:22:32

Postby VBI » Fri, 20.01.2017 21:15:02

эмуляция ау по ходу - один в один.
слушаю свою старую музыку, никакой разницы.
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby psb » Fri, 20.01.2017 22:56:55

а вот было бы интересно подключить и ау и эту карту как-то к одному клоку и посомтреть, есть ли разница и где:)
User avatar
psb
 
Posts: 715
Joined: Tue, 30.12.2014 23:22:32

Postby VBI » Fri, 20.01.2017 23:22:42

максимум - сравнить вавки. но вавки будут разные
по частоте ещё можно сравнить, но это всё лишнее :)
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby TS-Labs » Sat, 21.01.2017 06:24:57

psb wrote:а вот было бы интересно подключить и ау и эту карту как-то к одному клоку и посомтреть, есть ли разница и где:)

Алгоритмы генераторов - это все фигня. Играет и играет. Проблема в другом. Как и предполагалось выходы ЦАПов отличаются от оригинала. Если у поцыента в схеме соединены каналы А и С, ЦАПы начинают друг друга гасить и получается какофония.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 21.01.2017 15:11:19

UPDATE
В репе версия прошивы 2:
- added CPU load,
- added PUSHUP register,
- changed addresses of channel volume registers,
- channel volume is stored in settings pad,
- default channel mix is mono,
- added FIFO DAC

Также обновлена утилита:
- версия прошивы 2,
- поддержка новых фич.

Эксель тоже обновил.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby VBI » Sat, 21.01.2017 20:30:03

"Закоротить перемычку PROG, включить ZX с девайсом.
Файл обновления шьется утилитой из TR-DOS."

не понятно где сама перемычка, плиз кинь скрин с платой или обьясни.
так понимаю что новый ayx32_fw уже с прошивкой?
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby TS-Labs » Sun, 22.01.2017 03:37:54

VBI wrote:"Закоротить перемычку PROG, включить ZX с девайсом.

Можно запустить утилиту, нажать "В", закоротить перемычку. Девайс зайдет в бутмоде.
После прошивки нажать "R" для перезапуска в воркмоде.
prog.JPG

VBI wrote:так понимаю что новый ayx32_fw уже с прошивкой?

Да.
После перепрошивки должна быть такая версия:
Build: Jan 21 2017, 13:51:23
Firmware version: 2
Config version: 2
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 24.01.2017 23:00:42

Благодаря гениальному Shiru, который своим плеером срет в реги 16-21, было решено ввести некий Lock, который необходимо вызвать 1 раз перед использованием, для открытия доступа к расширенным регистрам.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 26.01.2017 13:27:42

Спасибо DDp, который заметил, что мои 96кГц оцифровки на самом деле 44100. Стояла настройка в винде. Переставил на 192кГц.
Оцифровал музон из демы Break Space.
Лежит тут: Storage / ayx-32 / breakspace /
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 26.01.2017 15:10:15

Взялся за API вейвсинтеза. Изначальный концепт такой.

Есть N (32 для начала) независимых каналов. Каждый канал может играть свой сэмпл. Управлять каналами вейвсинтеза можно как с хоста, так и с внутреннего плеера трекерных модулей. При достаточном количестве каналов это позволяет играть музон и использовать звуковые эффекты.

Для каждого канала задается громкость в левом/правом ухе. Это позволяет управлять панорамой.
Задается также нота, как коэффициент для частоты С-5 в формате 8.16 бит (1 байт - целая часть, 2 - дробная). (В модулях по хорошему все сэмплы должны быть оцифрованы на ноте "до" 3 октавы (С-5) и для этой ноты им указан сэмплрейт. Например, если лежит сэмпл с частотой оцифровки 16кГц, то если его проиграть на частоте 16кГц, мы услышим ноту С-5.) Следовательно, если указать сэмплу коэфф. 1 (1, 0), мы услышим С-5, если 2 (2, 0), то С-6, если 0.25 (0, 16384), то С-3 и т.д.
Каналу указывается номер сэмпла, который нужно играть и который должен быть предварительно загружен в чип.
Для канала есть регистр управления, который указывает следующие признаки: 1) канал разрешен, 2) сэмпл в канале будет перезапущен со стартовой точки при применении параметров, иначе - только поменяются параметры (громкость, нота и т.д.).
Все параметры загружаются в банкируемые регистры, банк выбирается регистром выбора канала. После загрузки всех параметров всех каналов выполняется команда "применить параметры". При этом параметры всех каналов апдейтятся атомарно.
(далее...)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 26.01.2017 15:17:32

Как это устроено внутри.
Есть фифо под названием "список команд вейвсинтеза". При записи в любой регистр вейвсинтеза в фифо добавляется соответствующая команда во внутреннем формате. При записи команды "применить параметры" в фифо добавляется маркер конца текущего списка и создается событие "обновить параметры вейвсинтеза". При этом хост может начинать писать новый список для следующего тика. По мере рендеринга аудиобуфера при нахождении такого события выполняется обработка списка до маркера конца, после чего продолжается рендеринг уже с новыми параметрами.
В планах есть дать возможность прямой записи списка команд, если таковая вдруг кому-то понадобится.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby dr_max » Fri, 27.01.2017 11:14:06

Итак, я стал обладателем третьей (судя по всему) платы прототипа! Скомпилил/прошил/воткнул. Послушал несколько музонов, вроде один-в-один играет. Чтобы уж точно удостовериться,
решил просмотреть нашу демо Adrenalize, музыка из которого мне настолько вьелась в печень во время сборки/отладки, что...[обсценная лексика опущена]... Резюмируя, как немузыкант, но тем не менее медведь на ухо не наступал, скажу, - это ахуенно!!! Автору респект! А я, в свою очередь, сажусь за написание флашевателя с преферансом и поэтессами.
dr_max
 
Posts: 82
Joined: Thu, 26.01.2017 12:03:36

Postby TS-Labs » Fri, 03.02.2017 02:40:50

WARNING
Найдена бажища в обработчике событий. Фикс включу в следующий релиз прошивки.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

PreviousNext

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

x