Сообщения без ответов | Активные темы
Текущее время: 22 дек 2024, 13:31
Автор |
Сообщение |
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Подождите. ШИМ - это один бит. А если 4-8 уровней - какой же это шим? А где это у нас в БКашках 8 уровней? Почему я не знаю? Вы covox имеете в виду? Вообще-то, в БК0010 выход на магнитофон двухбитный (4 уровня). Но почему-то я не встречал ни у кого никаких упоминаний об этом.Ну так и интегрируйте 8 уровней. Принципиальной разницы нет. Выбирайте нулевой уровень посередине (напишу для 8 уровней). Тогда имеем 4 скорости роста амплитуды и 4 скорости спада. Скорости пропорциональны величине ступенек. При постоянном входном ненулевом сигнале амплитуда будет расти бесконечно. Просто ограничиваем ее определеным максимальным значением (положительным и отрицательным). Максимальная скорость роста/спада одновременно задает максимальную частоту, для которой возможна максимальная выходная амплитуда. Далее начинается спад, обратно пропорциональный частоте (как фильтр первого порядка).
|
29 мар 2016, 11:14 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Можно тогда все DLL-ки положить в архив с эмулятором. ;)
|
29 мар 2016, 11:28 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
В окне отладки эмулятора, когда курсор активный, он становится темно-синим. Текста на курсоре я не разбираю (все закрашено курсором). Чтобы посмотреть, что там под курсором, надо его убрать! %( Можно ли сделать курсор посветлее?
|
01 апр 2016, 11:24 |
|
|
gid
Зарегистрирован: 21 авг 2013, 22:12 Сообщений: 37
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Давайте конкретный алгоритм, сделаю. Или дождаться следующего билда. Я ж не знаю какие дллки нужны, у меня vc redist автоматом со студией ставится, а там, где ругается на недостаток дллок, я руками vc redist накатываю. Линуксоиду должно быть привычно самому всё что нужно для работы руками собрать, тем более, что все нужные дллки можно с инета по одной скачать. Враньё, в win7, win8, win10 он становится светло синим, в WinXP - просто синим, это цвет стандартной цветовой схемы виндовс. Я лучше буду компилировать прогу без поддержки WinXP, чем мучиться с переопределением цвета курсора.
|
04 апр 2016, 14:37 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Начнем, например, с самого простого:
//максимальная амплитуда #define MAX_AMP 10 //минимальная амплитуда #define MIN_AMP -10
float input_amp; //входной уровень float mid_amp; //середина входа float out_amp; //выход фильтра float k_speed = 0.2; //скоростной коэфф. float f_speed; //скорость выходного сигнала float decr = 0.001; //затухание выхода в отсутствие входа
//середина выхода float mid_out = (MAX_AMP + MIN_AMP) / 2;
out_amp = 0; . . . . . .
// выполнять каждый такт: ///////////////////////////////////////////////// // получили очередное значение входа // вычисляем скорость и выход f_speed = k_speed * (input_amp - mid_amp); out_amp = out_amp + f_speed; //затухание выхода out_amp = out_amp + decr * (mid_out - out_amp); //ограничение выхода if (out_amp > MAX_AMP) out_amp = MAX_AMP; if (out_amp < MIN_AMP) out_amp = MIN_AMP; /////////////////////////////////////////////////
Скоростной коэфф. выбираем из таких соображений: за сколько тактов выход должен дорасти до максимума при максимальном входе? N_TACT = MAX_AMP / f_speed (при макс.входе). Отсюда вычисляем f_speed и следом - k_speed Если что-то невнятно объяснил, спрашивайте.
|
05 апр 2016, 00:41 |
|
|
gid
Зарегистрирован: 21 авг 2013, 22:12 Сообщений: 37
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Попробовал. Ерунда получается. Линейное возрастание/затухание даёт пилу. Для одного голоса звучание ещё вполне так себе, а полифония превращается в невнятную кашу. Я допилил эмулятор конденсатора, получилось не идеально, но гораздо лучше, чем было раньше.
|
11 апр 2016, 15:15 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Неудивительно, интеграл от константы - линейная функция. Интегратор - это фильтр первого порядка. То, что Вы называете "конденсатор" - это тоже первый порядок. Разница весьма невелика. Попробуйте второй или третий порядок. Для этого примените интегратор после интегратора. А потом можно еще. Фильтр-то две строчки всего... А вообще, что это за сигнал Вы фильтруете? Какова частота отсчетов?
|
12 апр 2016, 00:07 |
|
|
gid
Зарегистрирован: 21 авг 2013, 22:12 Сообщений: 37
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Я пробовал всякие фильтры, они там не помогут, там надо не фильтровать, а именно формировать хитрую амплитуду, которая получается на линейном выходе. Я ничего не фильтрую, я тупо эмулирую конденсатор C15 (см. вложение), который заряжается/разряжается через резисторы R35, R29, R30, R31. Причём я упростил себе задачу и вместо резистивного делителя использую постоянное сопротивление для всех уровней и для заряда/разряда, хотя оно там динамически изменяется. Частота дискретизации эмуляции равна частоте БК, на которой он в данный момент работает. Ну а модули вывода звука работают на частоте 44100, съём показаний с конденсатора делается с такой частотой, а то если постоянно вычислять экспоненту, очень уж тормозить начинает.
|
12 апр 2016, 09:35 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Ну вот. Теперь я сообразил. Вы боретесь с шумом квантования. Из схемы следует, что на выходе ЦАПа имеем 3 бита/8 уровней амплитуды. Мы хотим их сгладить. Частота вывода весьма высока и сложностей с фильтрацией не представляет. А вот ступеньки - это да. Так просто от них не избавиться, ведь они возникают на любой частоте. То есть, тупо отфильтровать не выйдет. Вы знаете, есть такая штука - дизеринг(dithering)? https://ru.wikipedia.org/wiki/%D0%94%D0 ... 0%BD%D0%B3Надо добавить к выходным ступенькам белый шум с амплитудой ступеньки. А потом отфильтровать (интегратором два-три раза, ну или вашим "конденсатором"). Попробуйте, должно стать заметно лучше.
|
13 апр 2016, 21:11 |
|
|
peg
Зарегистрирован: 31 дек 2015, 02:49 Сообщений: 16 Откуда: г. Армавир Краснодарского края
|
Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Возможно, я поспешил с советом (шум при дизеринге добавляют в сигнал до оцифровки). Хотя попробовать можно.
А просто линейное сглаживание не пробовали? То есть, вершины ступенек соединить прямыми (положить на углы ступенек "досточки"). Для этого надо обрабатывать текущую ступеньку и предыдущую (надо ждать изменения сигнала). А затем выдавать линейно изменяющуюся амплитуду от одной ступеньки до другой. Может так случиться, что ждать придется слишком долго (например, больше 20-50 мС, не знаю, надо пробовать, какая задержка допустима), тогда выдавать ту же самую амплитуду, но имея запас в те же 20-50 мС, чтобы иметь возможность снова линейно (а не ступенчато) изменяться. Надеюсь, не очень сумбурно? Ну а если это поможет, то дальнейшее улучшение - это сглаживание полиномами (гладкими кривыми). Но сильно лучше уже не будет, так как информация о сигнале уже потеряна при оцифровке до 3 бит. Я не знаю, это все-таки эмулятор. Может быть, есть возможность добавить шум до выхода на эти злосчастные 3 бита? Тогда дизеринг проходит в полный рост, точно будет лучше!
|
13 апр 2016, 23:10 |
|
|
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
закрыть
Советскому бытовому " БК-0011М" посвящается...
Вопреки всем скептикам и недоброжелателям, дело БК живет и развивается. Не за горами день, когда будет выпущен в свет "БК-0012 Pulsar" - расширенный FPGA-клон БК-0011М. Пока же на данном форуме Вы можете ознакомиться с репликами БК-0011М(-01), приставкой Booster-11, репликой контроллера SMK64 (а также его FPGA-клоном - SMK512), аппаратным эмулятором ПЗУ КР1801РЕ2Б, блоками расширения с процессорами ВМ2/ВМ3, и другими интересными материалами и работами.
Ведутся работы по отрисовке в 3D корпусов БК, МСТД, оригинальных клавиатуры, джойстика и мыши, но пока не удается найти их производство по приемлемой цене при малом тираже. Выполнено производство новодельных пленок для клавиатур БК-0011М.
Важным для возрождения БК и его сообщества является новый софт (игры и демо в особености), и они периодически появляются!
Удалось решить многие hard-задачи, но нет системных программистов, востребованных в проекте БК-0012, как минимум для тестирования. Требуется разработка полноценного Win32-компилятора Си в bin-файлы БК.
Релизован полноценный каталогизатор всего софта БК, с удобным интерфейсом. Осталось выполнить собственно большую задачу каталогизации.
Ждем ваших откликов, идей. Сообщайте о данном ресурсе всем, кто увлекался в прошлом БКшкой, присылайте их и свои e-mail для рассылки новостей из мира БК. nimamov@mail.ru
|