Ответить на тему  [ Сообщений: 72 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 8  След.
 
Автор Сообщение

Зарегистрирован: 21 авг 2013, 22:12
Сообщений: 37
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Да всё уже получилось. На первой странице ссылки на свежую сборку выложены. Вот нисколько не охота делать ещё более идеальную модель, и так уже вычисления еле укладываются во фрейм, на слабых компах мой эмулятор уже работать не будет нормально, т.е. как-то работать будет, но звук будет разрываться уже.
Не знаю как по научному называется та штука, с которой я боролся, но выглядит она так:
Код:
|--------|        |--------|
|        |        |        |
|        |--------|        |--------

меандр - даёт амплитуду, примерно равную амплитуде меандра, с частотой меандра
Код:
|--|              |--|
|  |              |  |
|  |--------------|  |--------------

сигнал со скважностью < 2, но с той же частотой, что и меандр выше, даёт амплитуду, меньшую пропорционально скважности, но той же частоты.
Такое никакими фильтрами не сотворишь. Можно получить либо сильно песочащий звук, либо срезав всю верхушку - глухой, вообще ни разу на пищалку не похожий.


14 апр 2016, 10:19
Профиль

Зарегистрирован: 31 дек 2015, 02:49
Сообщений: 16
Откуда: г. Армавир Краснодарского края
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
gid писал(а):
Да всё уже получилось. На первой странице ссылки на свежую сборку выложены. Вот нисколько не охота делать ещё более идеальную модель, и так уже вычисления еле укладываются во фрейм,

После Ваших диаграмм я опять перестал понимать проблему.
Рад, что получилось. Непонятно только, что там за сверхсложные вычисления, обычно в фильтрах хватает нескольких сложений и умножений.
Попробовал обе сборки (x86 и x64) под wine.
Обе запускаются и работают (в смысле окно БКашки функционирует). На вид обе версии неотличимы.
Но есть неприятный косяк: при попытке сменить диск выскакивает слепая менюшка (без текста), в поле "Система" сообщение "Ошибка чтения", а мы еще ничего не читали.



Кроме того, при нажатии любой клавиши цветной режим меняется на черно-белый, окно отладки пустое...
Эх, опять не везет!
Конечно, чего ждать от эмулятора в эмуляторе...
Под виндой все нормально (насколько успел глянуть на работе).
Спасибо за желтый курсор. Теперь все видно! :)
И еще момент. У меня на ноуте экран небольшой, я никак не могу выставить нормальное разрешение для окна БКашки (это 1024х768), когда линии не рвутся и не двоятся.


15 апр 2016, 21:23
Профиль

Зарегистрирован: 21 авг 2013, 22:12
Сообщений: 37
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
peg писал(а):
После Ваших диаграмм я опять перестал понимать проблему.

И это ещё самый простой вариант, многоголосие из Клавесина выглядит и моделируется гораздо сложнее.
peg писал(а):
Непонятно только, что там за сверхсложные вычисления

для звука - не самые сложные, но там, если даже звука нет, приходится постоянно вычислять среднее значение сигнала для пищалки, ковокса и AYшки, чтобы когда звук на них появится, не было резких щелчков. Нужно постоянно отслеживать позицию фильтров БПФ, чтобы когда звук появится не было искажений. Это немного. Самое трудоёмкое - формирование изображения. Оно отжирает 60% всех вычислений во фрейме. Остальные 40% - на всё остальное.
peg писал(а):
Но есть неприятный косяк: при попытке сменить диск выскакивает слепая менюшка (без текста), в поле "Система" сообщение "Ошибка чтения", а мы еще ничего не читали.

Видимо каких-то ресурсов в wine всё таки не хватает. Если бы была возможность пересобрать эмулятор в какой-нибудь старой студии - 2010 (минимально поддерживаемая) или 2013 и посмотреть как оно поведёт себя под вайном, может бы что-то прояснилось.
peg писал(а):
Кроме того, при нажатии любой клавиши цветной режим меняется на черно-белый,

Подозреваю, что это из-за того, что переключение посажено на кнопку Scroll Lock
peg писал(а):
окно отладки пустое...

Есть такой непонятный косяк, он у меня проявляется, когда я гоняю эмулятор в VMWare в разных версиях виндовсов, причём во всех. Клик по окну вызывает его перерисовку, и дальше всё работает. На реальных виндовсах такого нет.
peg писал(а):
И еще момент. У меня на ноуте экран небольшой, я никак не могу выставить нормальное разрешение для окна БКашки (это 1024х768), когда линии не рвутся и не двоятся.

есть ещё 768х576, 512х384, при которых линии не рвутся и не двоятся.
Я вообще хотел добавить в меню установку фиксированных размеров экрана. Но не смог решить вопрос, как перепозиционировать пристыкованные окошки и изменить размер основного окна при заданном фиксированном размере экрана. Когда-нибудь решу проблему.


17 апр 2016, 16:14
Профиль

Зарегистрирован: 31 дек 2015, 02:49
Сообщений: 16
Откуда: г. Армавир Краснодарского края
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
gid писал(а):
peg писал(а):
Кроме того, при нажатии любой клавиши цветной режим меняется на черно-белый,

Подозреваю, что это из-за того, что переключение посажено на кнопку Scroll Lock

Оно у всех эмуляторов посажено на scroll lock, но я-то нажимаю обычные буквы/цифры!
Но, в общем, неважно. Оно чем дальше, тем несовместимостей больше. Всего не охватить. Пусть уж хоть под виндой нормально работает...
gid писал(а):
Но не смог решить вопрос, как перепозиционировать пристыкованные окошки и изменить размер основного окна при заданном фиксированном размере экрана. Когда-нибудь решу проблему.

Мне, например, было бы удобнее, чтобы все окошки были отдельными (как в исходном Gimpе). Экранчик на ноуте маленький, пристыкованные окна только мешаются.


18 апр 2016, 09:49
Профиль

Зарегистрирован: 31 дек 2015, 02:49
Сообщений: 16
Откуда: г. Армавир Краснодарского края
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
Залез я в исходники (конечно, смотрю я на этот С++ как баран на новые ворота...). Действительно, в функции CSpeaker::RCSHIMCalc() экспоненты вычисляются.
Не надо их вычислять. Смотрите:
//зарядка конденсатора, увеличение амплитуды за такт:
//(выходное значение стремится к m_fmaxvol)
m_fcurrentvol += (m_fmaxvol - m_fcurrentvol) * c_damp;
if (m_currentvol > m_fmaxvol) m_currentvol = m_fmaxvol;

//разрядка конденсатора, уменьшение амплитуды за такт:
//(выходное значение стремится к m_fminvol)
m_fcurrentvol -= (m_fcurrentvol - m_fminvol) * c_damp;
if (m_currentvol < m_fminvol) m_currentvol = m_fminvol;

Здесь я обозначил m_fcurrentvol - текущее значение амплитуды, c_damp - это константа затухания амплитуды за один такт. Это просто число. Я не смог его вычислить из Вашего кода. Оно, по идее, должно быть равно значению 1 - экспонента за один такт (т.е. маленькое число, значительно меньше единицы).


18 апр 2016, 10:38
Профиль

Зарегистрирован: 21 авг 2013, 22:12
Сообщений: 37
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
peg писал(а):
Мне, например, было бы удобнее, чтобы все окошки были отдельными (как в исходном Gimpе). Экранчик на ноуте маленький, пристыкованные окна только мешаются.

Они делаются отдельными простым тяганием их за заголовок. Не нужные можно вообще закрыть, обратно открываются они из меню. И так же, как и в гимпе их нельзя поместить за главное окно.
Правда отстыкованное окно пристыковать обратно именно так, как хочется мне, бывает непросто.
peg писал(а):
Действительно, в функции CSpeaker::RCSHIMCalc() экспоненты вычисляются.
Не надо их вычислять.

Надо. заряд/разряд конденсатора происходит нелинейно во времени.
Просто нет необходимости вычислять экспоненту каждый такт. Экспонента вычисляется только тогда, когда нужно узнать уровень заряда в определённый момент времени, всё остальное время ведётся только отсчёт времени.
peg писал(а):
Это просто число. Я не смог его вычислить из Вашего кода.

Я тоже не смог найти простой, изящный и непонятный способ решения, поэтому решил задачу в лоб.


18 апр 2016, 15:33
Профиль

Зарегистрирован: 31 дек 2015, 02:49
Сообщений: 16
Откуда: г. Армавир Краснодарского края
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
gid писал(а):
Надо. заряд/разряд конденсатора происходит нелинейно во времени.

Приведенный в посте выше алгоритм дает экспоненциальный заряд-разряд. Как Вы и хотели.


18 апр 2016, 22:44
Профиль

Зарегистрирован: 21 авг 2013, 22:12
Сообщений: 37
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
peg писал(а):
Приведенный в посте выше алгоритм дает экспоненциальный заряд-разряд. Как Вы и хотели.

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


19 апр 2016, 09:25
Профиль

Зарегистрирован: 31 дек 2015, 02:49
Сообщений: 16
Откуда: г. Армавир Краснодарского края
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
gid писал(а):
чтобы он работал с удовлетворительной точностью, выполнять вычисления нужно как можно чаще. буду изредка вычислять экспоненту

Признаюсь: совсем ничего не понимаю в Ваших аргументах.
Достаточно частоты вывода звука 20 кГц. Для нынешних процессоров - это как раз в столетие! Какая нагрузка, вообще не ясно?
И ту же экспоненту надо считать/выводить с такой же частотой. Где тут экономия?


20 апр 2016, 01:04
Профиль

Зарегистрирован: 21 авг 2013, 22:12
Сообщений: 37
Сообщение Re: Эмулятор БК-0010-01, БК-0011 и БК-0011М
peg писал(а):
Признаюсь: совсем ничего не понимаю в Ваших аргументах.

Ну я же неспроста исходники выкладываю. Берите, пользуйтесь, модифицируйте, экспериментируйте. Убеждайтесь на своём опыте.
peg писал(а):
Достаточно частоты вывода звука 20 кГц.

Недостаточно. 44100Гц - удовлетворительный минимум. Я бы вообще 96кГц сделал, но думаю, не все потянут, а мне звук AYшки, генерируемый с такой частотой дискретизации понравился больше.
Я пробовал делать вычисления из поста https://forum.pk-fpga.ru/viewtopic.php?p=6193#p6193 с частотой дискретизации звука 44.1кГц - фигня получается - слишком малая частота, пробовал с частотой дискретизации проца - 3мГц, получается лучше, но не то, что нужно.
peg писал(а):
Какая нагрузка, вообще не ясно?

Я же говорил: экран - основная нагрузка, всё остальное - должно выполняться за время, которое оставляет экран, а это не так уж и много.
peg писал(а):
И ту же экспоненту надо считать/выводить с такой же частотой. Где тут экономия?

Экспоненту достаточно считать с частотой дискретизации звука + в моменты записи данных в регистр 177716. Умножения, чтобы интерполяция приблизилась к экспоненте, надо делать как можно чаще, либо с частотой процессора, либо кратно ей, иначе будет не экспонента, а примерно похожая на неё ломаная кривая.
Всё равно мы не поймём друг друга, пока вы будете выдвигать теории, не подтверждённые практикой, а я наоборот - сугубо практический результат, без всяких теорий.


20 апр 2016, 10:08
Профиль
Показать сообщения за:  Сортировать по:  
Ответить на тему   [ Сообщений: 72 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 8  След.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000 - 2011 phpBB Group.
Design creat de Florea Cosmin Ionut | Translation by WebSok.Ru

закрыть

Советскому бытовому " БК-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