Просмотр полной версии : EmuStudio-ZX
Десктоп Core-i7 9700K
Win10?
И уточни, что это за странная звуковуха, и что означает приемник?
Win10?
Да, уточнил в сообщении. "Звуковуха" - это типа аудиофильский ЦАП начального уровня (очень качественный, кстати, для своей цены). Тема по его продвижению в народ началась вот здесь (https://www.dastereo.ru/t/denafrips-ares-r2r-ladder-dac-novyj-diskretnyj-czap-ubijcza-holo-spring/3937). USB-приемник - очень известная микросхема, вот даташит (https://www.xmos.com/download/XU208-256-TQ64-Datasheet(1.16).pdf) на нее.
Тема по его продвижению в народ началась вот здесь. USB-приемник - очень известная микросхема, вот даташит на нее.
Чтобы мне не вдаваться в подробности, уточни просто, эта звуковуха внутренняя, или внешняя USB?
Потому что ведет себя она очень странно. Такие показатели я видел только в эмуляторах.
уточни просто, эта звуковуха внутренняя, или внешняя USB?
Она внешняя USB. Драйвер родной, от производителя.
Она внешняя USB. Драйвер родной, от производителя.
Запусти на своей машинке вот эту версию теста.
BobrovS призывается для тестов)
BobrovS призывается для тестов)
Смогу запустить тест не раньше сегодняшнего вечера.
Итак, результаты новой версии теста:
https://pic.maxiol.com/images2/1582742413.1840002282.screen1.png
https://pic.maxiol.com/images2/1582742586.1840002282.screen2.png
Итак, результаты новой версии теста:
BobrovS, скорректировал еще тест, запусти еще разок.
Экран консоли скриншотить не обязательно, он одинаковый для всех тестов.
Titus, да без проблем:
https://pic.maxiol.com/images2/1582830676.1840002282.screen.png
@Titus, да без проблем:
Вот теперь все океечно) Спасибо)
NEO SPECTRUMAN
01.03.2020, 03:10
EmuStudio Audio 2.1.exe
выкопал мп3плеер с usb звуковухой
тотже ХРю и железо
разве что на этот раз комп несколько загружен посторонними процессами
https://jpegshare.net/images/b7/cc/b7cc1bcd573776c93dd4781aad32ce01.png
https://jpegshare.net/images/7c/92/7c92c5018918cd19ca200dcdd38d8961.png
https://jpegshare.net/images/6b/5e/6b5e2ded5e74a682a4c60c95267a1f7f.png
В процессе написания тестов обнаружился очень неприятный глюк то ли моей аудиокарты, то ли ее дров, то ли (что было бы хуже всего) самой системы микширования Windows.
Суть проблемы в том, что изредка буфер воспроизведения прыгает на 10мс вперед, как бы сьедая (или не проигрывая?) перепрыгнутый отрезок.
Для проверки этого я сделал новый тест.
Просьба запустить (тем, у кого запустится), подождать минут 5 ничего не делая, и скинуть скриншот главного окна и окна консоли.
В главном окне важное - это вычисленная частота семплов, отображаемая в заголовке окна. В идеальном случае она со временем будет стремиться к 48000, постоянно увеличивая точность. Во время скачков буфера, может резко подскакивать.
В консольном окне будет выводится некоторая дополнительная информация, отображающая скачки.
[bETA]mEN
01.03.2020, 16:27
https://i.imgur.com/XpzntyV.png
У бетамена глюк тоже есть (два числа в консоли в районе 480). Следовательно, и два раз был скачок в частоте.
Ребята, нужно запустить этот тест. Не ленимся, друзья)
Lethargeek
02.03.2020, 04:21
Titus, хоть я первый и выпрашивал этот тест, но запускать его пока не могу (на чужом ноуте временно сижу, на котором запрещают запускать "вирусню")))
насчёт глюка - а проверь, что будет, если выставить для "устройства воспроизведения" (именно того, которое слушаешь) частоту 44100 гц (сам вывод пусть останется 48000)
проверь, что будет, если выставить для "устройства воспроизведения" (именно того, которое слушаешь) частоту 44100 гц (сам вывод пусть останется 48000)
Твоего вопроса не понял) Но не будем пока забивать тему лирическими отступлениями, чтобы они не скрыли главной темы - тест!
- - - Добавлено - - -
В тему призываются для тестов BobrovS, NEO SPECTRUMAN, creator, S_V_B, goodboy, Verm-V, Kalantaj, breeze, SoftLight, blackinwoman.
Тест ТУТ (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1048909&viewfull=1#post1048909).
Если надо на WinXP, то смогу сделать только завтра на работе на паре компов. Дома уже к сожалению не смогу, т.к. старый комп пал смертью храбрых.
Если надо на WinXP, то смогу сделать только завтра на работе на паре компов. Дома уже к сожалению не смогу, т.к. старый комп пал смертью храбрых.
Надо на всем, до чего дотянешься. Потому что новый тест выявляет принципиально новую проблему, которую надо идентифицировать правильно, а не только догадкой, как сейчас.
blackinwoman
02.03.2020, 13:12
Titus,
запущено под wine-4.0.3
https://pic.maxiol.com/thumbs2/1583143857.3169993133.screenshotfrom2020.png (https://pic.maxiol.com/?v=1583143857.3169993133.screenshotfrom2020.png&dp=2)
Titus,
запущено под wine-4.0.3
5 минут ждал?
https://i.ibb.co/F6FVL8t/HP-PRO3500.jpg (https://ibb.co/NxMSdWz)
Win 10, HP PRO 3500 I5-3470,
Realtek High Definition Audio
HDAUDIO\FUNC_01&VEN_10EC&DEV_0662&SUBSYS_103C2ABF&REV_1001
https://pic.maxiol.com/thumbs2/1583144268.1388899422.20200302161641.png (https://pic.maxiol.com/?v=1583144268.1388899422.20200302161641.png&dp=2)
https://pic.maxiol.com/thumbs2/1583144292.1388899422.20200302161613.png (https://pic.maxiol.com/?v=1583144292.1388899422.20200302161613.png&dp=2)
win7 i5
Тест
Картинка мутная с малым разрешением. Тот же вопрос - ждал ли 5 минут?
- - - Добавлено - - -
win7 i5
И к тебе вопрос про 5 минут.
вечером на другом посмотрю
- - - Добавлено - - -
И к тебе вопрос про 5 минут.
да ждал, как ни странно сначала частота меньше была.
да ждал, как ни странно сначала частота меньше была.
Это правильно. Сперва частота приблизительная, потом она начинает стремиться к реальной. Т.е. к 48000Гц.
Запишем твою систему в правильные, т.к. скачков частоты не было судя по консольному окну.
Картинка мутная с малым разрешением. Тот же вопрос - ждал ли 5 минут?
На картинку нужно нажать. ждал пару минут.
На картинку нужно нажать. ждал пару минут.
Надо не менее 5 минут, иначе в тесте смысла нет.
blackinwoman
02.03.2020, 13:30
Titus, 10 минут, feel the difference
https://pic.maxiol.com/thumbs2/1583144980.3169993133.screenshotfrom2020.png (https://pic.maxiol.com/?v=1583144980.3169993133.screenshotfrom2020.png&dp=2)
Titus, 10 минут, feel the difference
Замечательно. Эмулятор винды в линуксе дает результат даже лучше, чем видновс)))
Надо не менее 5 минут, иначе в тесте смысла нет.
Ждал 10 мин, результат тот же.
https://i.ibb.co/fxdy3sC/HP-PRO3500.jpg (https://ibb.co/RDTsXqC)
https://i111.fastpic.ru/big/2020/0302/29/6641d17efb69a0fd1724c1ca2a7a3229.png
https://i111.fastpic.ru/big/2020/0302/e4/5a6650681da042a46c9aa6e8504c28e4.png
тест
Результаты хорошие. А данные в консоли говорят, что иногда процесс притормаживал на несколько кадров. Возможно, ты постоянно хватался за окно и передвигал его. Но все это математически компенсировано, сбоев нет.
Специально дёргал.
Как знал, как знал)
NEO SPECTRUMAN
02.03.2020, 17:24
Надо не менее 5 минут, иначе в тесте смысла нет.
а если свернуть иждать?
сильно критично к посторонней нагрузке?
- - - Добавлено - - -
кстате а нужно ли дергать перемещать окно?
в прошлом тесте график от этого заметно проседал
а если свернуть иждать?
сильно критично к посторонней нагрузке?
Можно и свернуть.
Я думаю, что лучше посторонним не нагружать.
Но ты можешь поэксперементировать)
Lethargeek
02.03.2020, 18:45
Твоего вопроса не понял)
это был не вопрос и что там непонятного могло быть-то? говорю, проверь, будут ли такие скачки, если выставить 4410 гц для устройства (в стандартных виндозных настройках его)
это был не вопрос и что там непонятного могло быть-то? говорю, проверь, будут ли такие скачки, если выставить 4410 гц для устройства (в стандартных виндозных настройках его)
Тоже есть скачки. Да оно никак и не связано.
Lethargeek
02.03.2020, 19:04
Тоже есть скачки. Да оно никак и не связано.
в недрах дров могло быть связано как угодно (иногда под win7 помогает против щелчков)
в недрах дров могло быть связано как угодно (иногда под win7 помогает против щелчков)
Чего там в недрах конкретных дров вообще никому не ведомо.
Пока что буду ждать тестов от оставшихся непротестировавших людей.
Win10x64 6 min.
https://pic.maxiol.com/thumbs2/1583167076.1845248946.ynickywin10x6425te.jpg (https://pic.maxiol.com/?v=1583167076.1845248946.ynickywin10x6425te.jpg&dp=2)
В тему призываются для тестов @BobrovS (https://zx-pk.ru/member.php?u=7898), @NEO SPECTRUMAN (https://zx-pk.ru/member.php?u=7208), @creator (https://zx-pk.ru/member.php?u=1479), @S_V_B (https://zx-pk.ru/member.php?u=8684), @goodboy (https://zx-pk.ru/member.php?u=216), @Verm-V (https://zx-pk.ru/member.php?u=8167), @Kalantaj (https://zx-pk.ru/member.php?u=3788), @breeze (https://zx-pk.ru/member.php?u=163), @SoftLight (https://zx-pk.ru/member.php?u=231), @blackinwoman (https://zx-pk.ru/member.php?u=7806).
Тест ТУТ (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1048909&viewfull=1#post1048909).
Запустил. В принципе как и предполагалось, это жжж не спроста. Сначало всё было хорошо, потом ( 4:50) стало оче:
https://pic.maxiol.com/images2/1583174823.1446618280.1.png
Потом колбаса «успокоилась» и стало опять мелко-мелко:
https://pic.maxiol.com/images2/1583174899.1446618280.2.png
После 5:20 стало опять колбасить и так циклически ~ 2-3 минутным интервалом:
https://pic.maxiol.com/images2/1583174910.1446618280.3.png
Запустил. В принципе как и предполагалось, это жжж не спроста. Сначало всё было хорошо, потом ( 4:50) стало оче:
Нда уж, мне это не нравится. Уже третий человек и одинаковый глюк. Причем, это НЕ глюк теста, а именно системы.
Ты забыл кинуть рамки окон, на которых частота семплов пишется.
- - - Добавлено - - -
Что же касается пиков в виде гребенки - то они не мешают тесту.
- - - Добавлено - - -
Заменил ТЕСТ (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1048909&viewfull=1#post1048909) на более новую версию.
Теперь фиксируется ступенчатое отклонение (около 480 отсчетов) не только в плюс, но и в минус.
Просьба перезапустить тем, у кого в предыдущем тесте все было хорошо)
- - - Добавлено - - -
А именно перезапустить нужно Ynicky, creator, xolod, blackinwoman, S_V_B,
ну и тем, кто еще не запускал.
ну и тем, кто еще не запускал.
почти без приглашения, предыдущая версия
https://s.micp.ru/fqNXC.jpg
и послендяя
https://s.micp.ru/0J088.jpg
винда все та же, что и много веков назад. почти ХП.
Звук по идее USB внешний (наушники). Отключу - попробую на унутреннем еще.
винда все та же, что и много веков назад. почти ХП.
Звук по идее USB внешний (наушники). Отключу - попробую на унутреннем еще.
Все шикарно. XP в этом плане как раз радует)
Тест 2.5 можно не запускать, т.к. 2.6 это тот же 2.5, только с добавками.
- - - Добавлено - - -
винда все та же, что и много веков назад. почти ХП.
А поточнее, что за Винда? Такой ID только у XP Professional x64, а так же у 2003 Server. Ну и у эмулятора под линуксом)
2003 Server. 18 лет винде)
итак, отключил усб, теперь внутренняя
https://s.micp.ru/9nC13.jpg
Все плохо стало??
ps - на соседнем компе семерка есть, там правда игра крутицца в круглогодичном режиме, но если надо - приостановлю на 5 мин, не больше :) или с семеркой и так все ясно?
Все плохо стало??
ps - на соседнем компе семерка есть, там правда игра крутицца в круглогодичном режиме, но если надо - приостановлю на 5 мин, не больше или с семеркой и так все ясно?
Все прекрасно. И в этом случае XP радует.
Да, на любом виндовсе надо запускать. Сейчас винды Vista и выше находятся под большииим подозрением.
висты уже как пару лет нет, на одном ноуте работала как часы для своих задач, пока ноут водой не зАлили))
итаК, вин7-64:
https://s.micp.ru/98L5Z.jpg
тут как то все красивше)
тут как то все красивше)
А вот фигушки. Ничего не красивше. Если заметил, подсчеты даже не начались (в названии окна нет частоты семплов).
А все потому, что на этой машине сильно отличается частота семплиров от эталонной 48000Гц.
Специально для тебя вариант теста с шииироким окном захвата. Скорее всего он захватит. Но это только для тебя. Для остальных обычный 2.6.
блин, а я то игруху ужо успел запустить)) ну вот, с захватом получилось:
https://s.micp.ru/0w94t.jpg
окак, а почему может частота семплов проседать?? Проц точно не самый древний, да и материнка)))
окак, а почему может частота семплов проседать?? Проц точно не самый древний, да и материнка)))
Она не проседает. Она отличается от заявленной. Т.е. заявлена 48000Гц. А на деле 47999Гц, как в твоем случае. Т.е. на целый герц отличается) Это копейки, на слух никогда не услышишь.
blackinwoman
03.03.2020, 02:54
Titus, wine
https://pic.maxiol.com/thumbs2/1583193216.3169993133.screenshotfrom2020.png (https://pic.maxiol.com/?v=1583193216.3169993133.screenshotfrom2020.png&dp=2)
NEO SPECTRUMAN
03.03.2020, 07:10
32бит Вин ХРю
Conexant CX20561 SmartAudio HD
в фоне браузер и много всякого еще
10+минут стояло ничего не жалось не шевелилось
https://jpegshare.net/images/76/2b/762bc28eb1ee2442e00f82b6ffbeedac.png
https://jpegshare.net/images/d7/dc/d7dccb9c1bfc20483c4b98b80120d54d.png
https://jpegshare.net/images/eb/86/eb869cef6f21359229e8776666dd2ead.png
начав шевелить окном и прочим
https://jpegshare.net/images/bd/ff/bdffff5fc3689014cd5ef46a85ff07f5.png
https://jpegshare.net/images/23/de/23deccc9e58d3f3734da6e498b51b866.png
так же тест лучше весь разместить в одном окне
тк скриншотилка уже вызывает проседание графика
да и лучше бы притулить собственное сохранение лога
в виде картинки и текста по таймеру
так будет надежней
чтоб включил а дальше оно само
- - - Добавлено - - -
кстате а что за "audio driver not found"???
- - - Добавлено - - -
проц с частотой на авто
https://jpegshare.net/images/03/40/0340f88a748ba0c0238bba93e54459c3.png
https://jpegshare.net/images/c6/db/c6dbdade71e425ec84b92cd1c0e82a0d.png
2 правых скачка - скриншотилка
https://jpegshare.net/images/a6/51/a651b0f61a78d6320709ad81e8862758.png
дергание в больших количествах
https://jpegshare.net/images/4e/1e/4e1e544067a89f84a89d5485bb573bce.png
консоль немного до этого
https://jpegshare.net/images/15/2e/152ea504348fca8cda91081303433385.png
проц на 1ГГц
https://jpegshare.net/images/ea/e2/eae25f34eef7cc825d3d158676362798.png
https://jpegshare.net/images/ef/14/ef1480453c1a2bfd4dc904c4d9719921.png
дергание слегка недоскриншотилось
https://jpegshare.net/images/e5/3e/e53eb3b59102489be48b258ba2153884.png
https://jpegshare.net/images/01/1c/011ccd3670307542ff81fc1659aeb1fd.png
https://pic.maxiol.com/thumbs2/1583210170.1845248946.ynickywin10x6426te.jpg (https://pic.maxiol.com/?v=1583210170.1845248946.ynickywin10x6426te.jpg&dp=2)
https://i111.fastpic.ru/big/2020/0303/77/7aa4fcbfb085b33b90393f4e1ae51677.png
https://i111.fastpic.ru/big/2020/0303/f5/23b19496e5587ecdb02c1dc341d430f5.png
https://pic.maxiol.com/thumbs2/1583211234.1388899422.20200303105341.png (https://pic.maxiol.com/?v=1583211234.1388899422.20200303105341.png&dp=2)
https://pic.maxiol.com/thumbs2/1583211256.1388899422.20200303105325.png (https://pic.maxiol.com/?v=1583211256.1388899422.20200303105325.png&dp=2)
Спасибо!
XP радует.
На половине тестов более старших версий винды тоже все окей.
- - - Добавлено - - -
Подождем кого-нибудь, у кого тест даст отрицательный глюк типа -480.
- - - Добавлено - - -
кстате а что за "audio driver not found"???
Не обращай внимания, это мелочи.
NEO SPECTRUMAN
03.03.2020, 10:28
интересно а какие показатели на ректалОС :v2_dizzy_vodka:
gurfunkel
03.03.2020, 11:24
Windows 10
Intel Core i3-6100
Audio: ASUS Xonar D1
https://itmages.su/images/2020/03/03/7c3d26d5eabeff2f29faccd29cb044cf.md.png (https://itmages.su/image/Ehl0)
https://pic.maxiol.com/images2/1583265399.1840002282.screen1.png
https://pic.maxiol.com/images2/1583265459.1840002282.screen2.png
Конфигурация та же (Windows 10 x64, Core i7-9700K, Denafrips Ares with XMOS XU208 USB Audio).
Конфигурация та же (Windows 10 x64, Core i7-9700K, Denafrips Ares with XMOS XU208 USB Audio).
Интересное раздвоение временных характеристик.
Сколько минут ждал?
Интересное раздвоение временных характеристик.
Сколько минут ждал?
Около получаса. Слишком долго?
Около получаса. Слишком долго?
Наоборот шикарно.
- - - Добавлено - - -
Я бы всех просил ждать по пол-часа, часу. Но народ не согласится, я думаю) А если согласится, потом уже следующие тесты запускать не станет. Скажет - ну, нафиг)
- - - Добавлено - - -
Предварительный итог тестов DirectSound такой:
1) На системах XP синхронизация точная и устойчивая.
2) На части систем Vista+ синхронизация хорошая, а на части огрублена до 480 отсчетов, в связи, видимо, с особенностью реализации конкретных драйверов. Даже не смотря на подобную огрубленность можно синхронизироваться точно, но для этого понадобятся минуты, а то и десятки минут, пока частота не будет вычислена маскимально точно. Иными словами первые 5-10 минут работы эмулятора возможны артефакты в звуке, а уже позже все становится идеально.
Но это меня не устраивает, поэтому надо искать правды в системе WASAPI (не Exclusive, которая монопольно владеет карточкой, и была в этом треде протестирована), а в обычной. Не исключено, что результаты будут такие же, как и в DirectSound, т.к. на машинах Vista+ DirectSound все равно транслируется в WASAPI. Но надо поэксперементировать.
NEO SPECTRUMAN
04.03.2020, 07:55
но для этого понадобятся минуты, а то и десятки минут, пока частота не будет вычислена маскимально точно
а может удасцо проводить тест калибровку один раз
а потом использовать вычисленные данные
может частоты не особо плавают
да и делать это прямо во время работы
- - - Добавлено - - -
На системах XP синхронизация точная и устойчивая.
ну я жо говорил что вин15 должен быть тотально уничтожен и принудительно заменен на ХРю:)
Интересное раздвоение временных характеристик.
А не могло ли на это повлиять отключение дисплея после 5-ти минут бездействия пользователя?
А не могло ли на это повлиять отключение дисплея после 5-ти минут бездействия пользователя?
Я думаю нет, это обычные особенности звуковухи. Ведь у тебя сразу было такое раздвоение при запуска теста же.
- - - Добавлено - - -
а может удасцо проводить тест калибровку один раз
а потом использовать вычисленные данные
может частоты не особо плавают
да и делать это прямо во время работы
Да, все так, можно хранить ее и использовать.
Но пока что моя идея заключается в том, чтобы придумать систему, когда человек запустил, и все сразу работает хорошо)
Нда уж, мне это не нравится. Уже третий человек и одинаковый глюк. Причем, это НЕ глюк теста, а именно системы.
Сложно тут сказать в чём дело. Толи драйвера кривые, то ли матери/чипсету кирдык хз
Ты забыл кинуть рамки окон, на которых частота семплов пишется.
Чёт это упустил из виду. Скачат значения от 47988 — 48002
Толи драйвера кривые, то ли матери/чипсету кирдык хз
Нет, чипсету не кирдык. Звук звучит хорошо.
Именно думаю, что особенности реализации драйверов.
Посмотрим, что получится с WASAPI.
NEO SPECTRUMAN
06.03.2020, 22:15
32бит Вин ХРю
кетайский USB PnP Sound Device
дрова от венды
в фоне браузер и много всякого еще
минут 15 выдержки
стояло ничего не жалось не шевелилось
все остальные usb девайсы на время теста отсоединены
https://jpegshare.net/images/42/74/427478c9f781b83661fda6eae0ae3ba9.png
https://jpegshare.net/images/9e/eb/9eeb085dd2edaa57973eb6660e6596c4.png
https://jpegshare.net/images/25/c6/25c6b02d99985d785198bc8a81d55d22.png
и тут причинилось обильное шевеление окна
https://jpegshare.net/images/a7/36/a73650ca2815eefab33561472316789d.png
https://jpegshare.net/images/da/72/da72eaa32697a48ec5367cfc1dc9f0c7.png
- - - Добавлено - - -
Не обращай внимания, это мелочи.
кстате а чего у меня там
https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1049193&viewfull=1#post1049193
частота монитора 188Гц в ковычках?
и тут причинилось обильное шевеление окна
Все замечательно. XP как всегда стабильна и прекрасна в работе с DirectSound.
- - - Добавлено - - -
частота монитора 188Гц в ковычках?
Возможно, это связано с глюками позиции аудио. По ней измеряется частота. Не обращай внимания.
- - - Добавлено - - -
Итак, готов новый тест под аудиосистему WASAPI Share.
Как известно, начиная с Windows Vista на смену DirectSound пришла система WASAPI. Она несколько удобнее, кроме того, в режиме WASAPI Exclusive (когда звук выводится без системного микшера, и может звучать только одно приложение, остальные молчат) - возможно очень точное позицирование и более высокое качество звучания.
Меня самого тест опечалил, т.к. скачкообразный глюк моих драйверов, который проявлялся на DirectSound полностью перенесся на WASAPI. Что уверило меня в том, что это действительно глюк драйверов/системы.
Однако, печалька не очень большая, т.к. всегда можно воспользоваться WASAPI Exclusive (тесты были давно в этой теме) и выводить звук с максимальной точностью.
Итак, чем отличается вывод звука под WASAPI Shared от DirectSound:
1. Гораздо более удобная система нотификаций. Если в DirectSound мне приходилось использовать относительно небольшой буфер (160мс), разбивая его на 16 отрезков по 10мс, и каждому присваивая свою нотификацию. То в WASAPI Shared буфер можно впилить какой угодно, и сделать всего одну нотификацию, которая будет вызываться каждый раз, когда очередной системный микс закончен. Я сделал буфер на 16 секунд, и не парюсь, что система затормозится, т.к. до 16 секунд она выдержит прекрасно, а выше 16 секунд - это уже из разряда глобальных проблем или намеренного хулиганства.
2. WASAPI Shared предлагает давать ей звук с характеристиками системного буфера микширования. Я, например, выставил в системе самые высокие характеристики 96000Гц и 24 бита.
3. В принципе более удобная работа с буфером.
Теперь о тесте. Он практически такой же, как и под DirectSound, но:
1. XP-шники не запускайте, все равно не заработает.
2. Линуксоиды запускайте, но, наверное, не заработает.
3. Если запустили, подождите максимально сколько сможете. Хоть час. Можно в это время заниматься любыми своими делами.
4. Если при старте глюки - ругается на частоту семплов, разрядность и т.д. - это очень ценная информация, т.к. для меня WASAPI вещь неизведанная. (дело для нас новое, неосвоенное (c) 'Операция 'Ы'')
marinovsoft
07.03.2020, 04:33
Windows 8.1, Creative Audigy 2 Value (SB0400)
1. Некое сообщение о ненайденном аудиодрайвере.
2. Если окно с графиком перетаскивать - получаем вертикальные всплески на графике.
https://i.ibb.co/6YGNDW6/Titus-Emu-Studio-Audio30.png (https://ibb.co/6YGNDW6)
Windows 8.1, Creative Audigy 2 Value (SB0400)
1. Некое сообщение о ненайденном аудиодрайвере.
2. Если окно с графиком перетаскивать - получаем вертикальные всплески на графике.
https://i.ibb.co/6YGNDW6/Titus-Emu-Studio-Audio30.png (https://ibb.co/6YGNDW6)
1. Не обращай внимания.
2. Это нормально.
А вот то, что появилось в консоли число 434 - это говорит о там самом глюке.
Сколько по времени ждал?
Если хочешь получше звук везде, подними показатели в настройках системного миксера звука:
https://pic.maxiol.com/images2/1583545641.1504841820.01.png
marinovsoft
07.03.2020, 05:25
Сколько по времени ждал?
Пару-тройку минут. Вот еще скрин, почти час прошел.
https://i.ibb.co/XDv4NRw/Titus-Emu-Studio-Audio30-1.png (https://ibb.co/XDv4NRw)
Пару-тройку минут. Вот еще скрин, почти час прошел.
В общем, типичная аудиокарта с погрешными драйверами в общем режиме.
Как и у меня)
У меня тоже Audigy)
https://i111.fastpic.ru/big/2020/0307/1c/e635ba05091494c8037329a1900fe91c.png
https://i111.fastpic.ru/big/2020/0307/d3/c69cbffa64616c731f5301df6f4071d3.png
[bETA]mEN
07.03.2020, 10:31
https://i.imgur.com/0bE0QtW.png
mEN;1049842']Test
Сколько по времени держал тест?
Числа появлялись парами (положительное с отрицательным), или по отдельности?
- - - Добавлено - - -
Ребята, не пропускаем новый тест для WASAPI (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1049801&viewfull=1#post1049801).
Призываются NEO SPECTRUMAN, breeze, BobrovS, gurfunkel, S_V_B, Ynicky, blackinwoman, zebest, xolod, Verm-V, goodboy, Maxvel и прочие неназванные товарищи.
blackinwoman
07.03.2020, 13:22
Titus, запустил из под wine
https://pic.maxiol.com/thumbs2/1583576544.3169993133.screenshotfrom2020.png (https://pic.maxiol.com/?v=1583576544.3169993133.screenshotfrom2020.png&dp=2)
Titus, запустил из под wine
Удивительно, даже WASAPI работает.
Число 5951 появилось сразу, или же через некоторое время после запуска теста?
И сколько длился тест?
Видно, что под wine WASAPI работает иначе.
1) Система выделила буфер очень маленького размера.
2) Система согласилась на 48000Гц, хотя буфер микширования работает на 44100Гц.
[bETA]mEN
07.03.2020, 13:55
Сколько по времени держал тест?
~15 минут
Числа появлялись парами (положительное с отрицательным), или по отдельности?
Иногда число - пауза секунд 20 - число
Иногда вообще не появляются
mEN;1049893"]Иногда число - пауза секунд 20 - число
Иногда вообще не появляются
Интересная звуковуха, ни у кого такого нет. Какая она? Что за модель?
[bETA]mEN
07.03.2020, 14:11
Интересная звуковуха, ни у кого такого нет. Какая она? Что за модель?
https://support.creative.com/Products/ProductDetails.aspx?catID=1&catName=Sound%20Blaster&subCatID=1138&prodID=19829&prodName=Sound%20Blaster%20X-Fi%20HD
gurfunkel
07.03.2020, 15:59
Intel Core i3-6100
Windows 10
Asus Xonar D1
Время ожидания 5 мин:
https://itmages.su/images/2020/03/07/4fe78f0458019e85a19ec38a9a95cf44.md.png (https://itmages.su/image/ElZ4)
Время более 15 мин:
https://itmages.su/images/2020/03/07/1bf87f567b9b6e1fcf5e923a82041dd8.md.png (https://itmages.su/image/E13n)
Как появлялись цифры не следил.
Intel Core i3-6100
Windows 10
Asus Xonar D1
Хоть у кого-то миксер стоит 96000Гц) А у всех остальных 48000Гц)
Хоть у кого-то миксер стоит 96000Гц
Почему, вот тебе с "музыкального" компа
https://pic.maxiol.com/thumbs2/1583596726.630666996.t1.png (https://pic.maxiol.com/?v=1583596726.630666996.t1.png&dp=2)
https://pic.maxiol.com/thumbs2/1583596792.630666996.t2.png (https://pic.maxiol.com/?v=1583596792.630666996.t2.png&dp=2)
SB FX Titanium
Ждал минут 15
- - - Добавлено - - -
Ноут:
https://pic.maxiol.com/thumbs2/1583597099.630666996.20200307220408.png (https://pic.maxiol.com/?v=1583597099.630666996.20200307220408.png&dp=2)
https://pic.maxiol.com/thumbs2/1583597121.630666996.20200307220356.png (https://pic.maxiol.com/?v=1583597121.630666996.20200307220356.png&dp=2)
15 мин
10 минут
https://pic.maxiol.com/thumbs2/1583599807.1845248865.ynickywin10x6430te.jpg (https://pic.maxiol.com/?v=1583599807.1845248865.ynickywin10x6430te.jpg&dp=2)
NEO SPECTRUMAN
07.03.2020, 21:01
ДА ЧТОБ Я ЕЩЕ РАЗ ЗАПУСТИЛ ЭТО Й**/Е ГАФНО У СЕБЯ (по крайней мере в этом году)
ДА НУ Н***Й!!!!!1111
Я ХОЧУ СИСТЕМАТИЧЕСКИ ДРОБИТЬ КОСТИ ВСЕМ ЭТИМ Б****М КОТОРЫЕ УЧАСТВОВАЛИ В СОЗДАНИИ ЭТОЙ Х****И ПРИ ПОМОЩИ БЕИСПОЛЬНОЙ БИТЫ
эту 7-ку проще снести к чертям чем в ней работать
оно меня выбесело тупо стоя ничего не делая
вин7 х64
Conexant CX20561 SmartAudio HD
дрова из комплекта венды
в настройках дефолтная 44100
потестить с нормальной частотой не успел
нервы кончились быстрее
2,6
10 минут
https://jpegshare.net/images/4b/62/4b62171e09a23e1c4e35805696f8e32a.png
https://jpegshare.net/images/69/fb/69fbeee9fe8e0af3b9d80b2d3b487b96.png
https://jpegshare.net/images/72/69/72695b9b0972a2d03f3a57289124c89c.png
https://jpegshare.net/images/b7/75/b775b68f85c055dc2f4f812fe2d8f607.png
https://jpegshare.net/images/d7/54/d754c3572aa3831ebed03c5dfd6ebdd7.png
3,0
возможно 21 минута
https://jpegshare.net/images/91/5d/915db4c0ab39c77bb48a5fdd40eb7c06.png
до у меня одна из частот сильно уплывшая
и заметно различимо на слух
https://jpegshare.net/images/e8/5d/e85dcf673b9ed295fc01a8671e6db924.png
https://jpegshare.net/images/66/e6/66e6116169dcb89da5faec0553f9150c.png
возможно второй дубль
https://jpegshare.net/images/24/f0/24f0e48580452cdbd38255873086b064.png
https://jpegshare.net/images/18/68/1868b339912efc578928a9471829286e.png
шевеление
https://jpegshare.net/images/c3/2e/c32ed70b59b9a923e639dab1437f0f32.png
https://jpegshare.net/images/8d/c0/8dc09edfef997543ae642fe129bd7514.png
кетайский USB PnP Sound Device
дрова от венды
2,6
12 минут выдержки
https://jpegshare.net/images/b1/d9/b1d952af60d1afe188d9916d98d1b8f9.png
https://jpegshare.net/images/f4/cd/f4cd3503fbf6ab7d897502fe135ade53.png
дальше во избежание порчи материального имущества в больших количествах
тестирование пришлось прервать
и помойму я сорвал голос....
В связи с травмами на производстве, разрешается Нео Спектруману не тестировать ничего нигде, кроме, как на XP)
blackinwoman
07.03.2020, 23:43
Удивительно, даже WASAPI работает.
Число 5951 появилось сразу, или же через некоторое время после запуска теста?
И сколько длился тест?
Видно, что под wine WASAPI работает иначе.
1) Система выделила буфер очень маленького размера.
2) Система согласилась на 48000Гц, хотя буфер микширования работает на 44100Гц.
число вроде сразу же, тестировалось минут 10
Извиняюсь, не получилось прошлый тест прогнать в предыдущие дни - были проблемы.
Вот результаты последнего теста на двух домашних ноутбуках с win10-x64.
https://s8.hostingkartinok.com/uploads/thumbs/2020/03/9f771d4663dd576270fa4d1deceb5e81.png (https://hostingkartinok.com/show-image.php?id=9f771d4663dd576270fa4d1deceb5e81)
https://s8.hostingkartinok.com/uploads/thumbs/2020/03/d9c94c4870ba0f057cd0bcf39cfa8aee.png (https://hostingkartinok.com/show-image.php?id=d9c94c4870ba0f057cd0bcf39cfa8aee)
-------
Перед снятием скриншота выдерживал где-то минут 40. Когда появились числа на 1-м скриншоте, точно не знаю, но не ранее чем через 15 минут от начала теста.
-------
Завтра еще на win7 на работе потестирую.
Перед снятием скриншота выдерживал где-то минут 40. Когда появились числа на 1-м скриншоте, точно не знаю, но не ранее чем через 15 минут от начала теста.
А почему два скриншота? Какой из них какой?
Результаты теста
https://b.radikal.ru/b09/2003/00/041ad5e9161bt.jpg (https://b.radikal.ru/b09/2003/00/041ad5e9161b.jpg)
Прогон теста велся 50 минут
Система:
ОС Win 10 20h1 сборка 2004 версия 19577.1000
ОЗУ 16 гб.
Звук creative sound blaster Z
А почему два скриншота? Какой из них какой?
Это разные компы.
Еще пара тестов с двух компов с win7-x64
https://s8.hostingkartinok.com/uploads/thumbs/2020/03/c7300963eac10447a265ee9c4ca049b4.png (https://hostingkartinok.com/show-image.php?id=c7300963eac10447a265ee9c4ca049b4)
https://s8.hostingkartinok.com/uploads/thumbs/2020/03/9cfa21c0e05d379053dcac44f6214ae5.png (https://hostingkartinok.com/show-image.php?id=9cfa21c0e05d379053dcac44f6214ae5)
---
Гонял минут по 15 каждый.
Итак, подведем некоторый итог.
Комплексные тесты DirectSound и WASAPI Share показали, что чуть более, чем в половине случаев, идея удачная, и позволяет достаточно быстро и точно вычислить реальную частоту семплов.
В меньшем количестве случаев звуковая карточка не дает точной позиции воспроизведения (огрубляя до 480 (10мс) в любой момент времени). В этом случае также можно вычислить достаточно точную частоту семплов, но ждать придется гораздо дольше (примерно в 480 раз), либо использовать прекалькулированную частоту, выстчитанную ранее за предыдущий сеанс. Также, при такой грубости придется всегда иметь резервный зазор в буфере минимум на 480 отсчетов (10мс), что так же снижает скорость отклика звука относительно реального времени.
Извиняюсь, что немного поздно, но лучше поздно...
Windows 10 x64, Core i7-9700K, Denafrips Ares with XMOS XU208 USB Audio
https://pic.maxiol.com/images2/1583764060.1840002282.screen1.png
https://pic.maxiol.com/images2/1583764122.1840002282.screen2.png
Гонял минут 15.
Итак, новая итерация и совершенно новый принцип подхода к движку эмуляции.
По сравнению с предыдущим движком (2005 года) переписано примерно всё. Кроме ядер эмуляции, но это уже следующая очередь.
Самое главное, что я наконец-то добился от движка того, чего хотел, а именно:
1. Точная синхронизация видео и аудио, не зависимо от того, какие характеристики и источники тактирования у видео и аудиокарт.
2. Надежная работа всего этого на большинстве современных компьютеров начиная с Win7 (вот это мы сейчас и проверим).
3. Сверхмалая задержка вывода изображения. В современных системах с поддержкой Independent Flip менее <10мс (при развертке 100Гц) в любом режиме (оконном и полноэкранном). В старых системах задержка на 1 кадр дольше.
4. Сверхмалая задержка вывода звука в кооперативном режиме WASAPI (это стандартный режим, в котором звук от всех приложений смешивается, затем выводится в конечную точку аудиовывода). И это не смотря на достаточно сложную систему синхронизации аудио и видео, требующую временные зазоры для колебаний частот синхронизации.
5. Всякие мелочи типа - никаких щелчков в динамиках при запуске и закрытии эмулятора.
6. Самое качественное масштабирование изображение до любых размеров без какого-либо особо заметного альясинга (учитывая сканлайны, которые и порождают интерференцию).
7. И всякое другое.
Теперь немного подробнее. Фактически версия эмулятора является пока что тестом нового движка эмуляции, и модель Спектрума 48 (весьма абстрактная, не пентагон, не классика, а просто для теста с выводом звук а на биппер (AY пока нет)) играет роль тестовой модели.
Все, подо что был написан старый движок эмулятора (DirecInput, DirectSound, DirectDraw) выкинуто на помойку, как устаревшее 20 с лишним лет назад.
Теперь все переписано под современные технологии (Direct2D, WASAPI), но поддерживающиеся уже не менее 10 лет, а какие-то и 15.
Самое сложное, что удалось решить - это точную синхронизацию видео и аудио. Как я уже писал многократно, основная проблема всех эмуляторов в том, что они синхронизируются только по аудио, а видео подгоняется в зависимости от эмулятора с той или иной степенью точности. Любой плавный скролл в игре или демке, даже если ваш монитор имеет развертку равную эмулируемой модели (например, 50Гц), либо кратную (100Гц, 150Гц), все равно будет или неприятно дергаться (не буду называть большинство популярных эмуляторов, грешащих этим), либо почти не дергаться, но раз в несколько десятков секунд, когда набегает погрешность биения частот аудио и видео, все равно будет несколько подергиваний (например, ZXMAK, чем он мне весьма нравился). При этом, НИ ОДНОГО эмулятора, который бы точно синхронизировался по видео и аудио я не встречал (может есть, обязательно укажите).
В своем тестовом движке я пока что реализовал самый сложный режим синхронизации, когда частота кадров монитора равна или кратна частоте эмулируемой модели, а аудиосистема WASAPI работает в кооперативном режиме (точность отслеживания буфера 10мс).
Можете запустить любой плавный скролл, и увидите абсолютно плавное движение, без каких-либо подергиваний.
Ядро эмуляции видео и звука работает с самым высоким приоритетом в фоне, что позволяет достаточно сильно нагружать компьютер другими задачами без тормозов эмуляции.
С чуть более низким приоритетом работает вывод видео в окно через Direct2D. Если очень активно менять размер окна или иначе насиловать систему, только в этом случае кадры будут пропускаться.
Если система поддерживает, то используется вывод в окно через MPO (аппаратное многослойное наложение), или как его еще называют Independent Flip (независимое перелистывание). Говоря проще, особая часть видеопамяти проецируется прям в окно, что позволяет избежать необходимости ожидать копозиции рабочего стола Windows (это когда перед выводом нового кадра, все окна собираются системой DWM и рисуются на рабочем столе соблюдая приоритет, наложение и т.д.). Плюс такого вывода - сверхмалая задержка между построением изображения и выводом его на экран (<10мс при развертке 100Гц). Есть и небольшой минус. При изменении размеров такого окна или при перетаскивании окна, система кратковременно отключает Independent Flip, и включает обратно, когда окно перестали перетаскивать или изменять размер. Но это такие мелочи, которыми можно пренебречь.
Итак, предлагается уважаемым форумчанам потестировать движок на своих компьютерах, чтобы я вообще понимал, на сколько это все надежно работает на разном железе. Я-то у себя играюсь, и мне хорошо - полная иллюзия настоящего железного спектрума, что по изображению, что по звуку, что по скорости отклика.
Сканлайны сделаны на основе пиксельных шейдеров 5.0 (поддерживаются очень давно, но если у вас сверхстарая видюха, то сканлайнов не будет).
Если очень кратко - пиксельные шейдеры - это малюсенькие программы, выполняющиеся одновременно на куче микроядер GPU, каждая из которых обрабатывает свой пиксель. Это позволяет сильно разгрузить систему.
Что же касается масштабирования, то оно сделано с использованием самой качественной кубической фильтрации (но и самой нагружающей GPU). Если ваш компьютер, особенно при большом разрешении этого не тянет, можно переключиться системный режим масштабирования покликав в тулбаре на значок красного крестика.
Для разных режимов окна применяются разные настройки. Сейчас залоченно так, что в максимизированном окне или в полноэкранном режиме масштабирование экрана 1:4, а во всех остальных режимах оно привязно к размеру окна, так, чтобы был виден экран и небольшой кусочек бордюра вокруг него.
В окно эмулятора можно кинуть любой 48Кб .sna или .z80 и поиграться. Хотя, из-за неполноценности модели не исключено, что какие-то игры и не пойдут, но суть теста не в этом.
На иконки тулбара обращать внимания не надо, они взяты с потолка для теста тулбара, который тоже я написал сам.
Немного о клавишах:
RCtrl + S - запись снапшота
RCtrl + O - загрузка снапшота
RCtrl + P - пауза
RCtrl + F или Alt + Enter - переключение в полноэкранный режим
LCtrl + RCtrl - сброс
F2 - включить/выключить меню
F3 - включить/выключить тулбар
Задача теста:
1. Заскриншотить окно анализатора звука, когда оно заполнится почти целиком и прислать сюда.
2. Заскриншотить окно консоли (копипастой) и тоже прислать сюда.
p.s.: Забыл предупредить, что запускать надо ту версию, которая ближе по частоте кадров к частоте кадров вашего монитора.
Т.е. если у вас монитор 60Гц, то запускать надо версию 50Гц.
Если 100Гц, то запускать 100Гц.
Audiobuf можно выбирать 0.5, если звуковая карточка стабильная, хорошая, и 3.5, если ее характеристики гуляют. Но для теста можно запускать 3.5, чтобы наверняка.
И если у вас Win7, и почему-то не идут нормальные версии, то можно запустить версию DWM.
https://pic.maxiol.com/images2/1741387630.1595414782.clipboard030820250.png
EmuStudio v0.9 test 1 (ZX) (https://ru.files.fm/u/tjy8h7dnn2)
Lethargeek
08.03.2025, 07:12
Теперь немного подробнее. Фактически версия эмулятора является пока что тестом нового движка эмуляции, и модель Спектрума 48 (весьма абстрактная, не пентагон, не классика, а просто для теста с выводом звук а на биппер (AY пока нет)) играет роль тестовой модели.
и как ты себе представляешь тест на гладкость одновременно видео и звука с таким конфигом? :D
нужно минимум 128+AY - чтобы строчки под фоновую музыку бегали
до того - не вижу смысла запускать даже
Самое сложное, что удалось решить - это точную синхронизацию видео и аудио. Как я уже писал многократно,
как уже писал многократно, в общем случае точная синхронизация по более чем одной характеристике невозможна
вот не повезёт с системой на уровне железа/дров/процессов - и одно таки придётся подгонять-подстраивать под другое
подгонять звук проще, даже чисто программно, но традиционно почему-то предпочитают картинкой жертвовать
основная проблема всех эмуляторов в том, что они синхронизируются только по аудио, а видео подгоняется в зависимости от эмулятора с той или иной степенью точности. Любой плавный скролл в игре или демке, даже если ваш монитор имеет развертку равную эмулируемой модели (например, 50Гц), либо кратную (100Гц, 150Гц), все равно будет или неприятно дергаться (не буду называть большинство популярных эмуляторов, грешащих этим), либо почти не дергаться, но раз в несколько десятков секунд, когда набегает погрешность биения частот аудио и видео, все равно будет несколько подергиваний (например, ZXMAK, чем он мне весьма нравился). При этом, НИ ОДНОГО эмулятора, который бы точно синхронизировался по видео и аудио я не встречал (может есть, обязательно укажите).
ну здрасьте, ни одного... а я здесь с чем столько времени распинаюсь?
ну здрасьте, ни одного... а я здесь с чем столько времени распинаюсь?
Назови хотя бы один эмулятор, который при кратной частоте развертки монитора (50, 100Гц) выдает полностью синхронную картинку.
- - - Добавлено - - -
и как ты себе представляешь тест на гладкость одновременно видео и звука с таким конфигом?
нужно минимум 128+AY - чтобы строчки под фоновую музыку бегали
до того - не вижу смысла запускать даже
Даже для 48К есть игры, где и плавный скролл и звуки.
Впрочем, для теста движка не обязательно, чтобы программа выводила и плавный скролл, и звук одновременно, т.к. движку все равно, есть генерация звука в данный момент или нет, он его все равно выводит.
Все можно посмотреть на графиках.
- - - Добавлено - - -
как уже писал многократно, в общем случае точная синхронизация по более чем одной характеристике невозможна
Все возможно при хорошем желании.
Естественно, если у тебя совпадает кадровая частота монитора и эмулируемой системы, или они близки друг к другу.
Главное, что получается полное погружение пользователя в то, что это реальная машина.
Enigmatic
08.03.2025, 14:02
https://i.postimg.cc/tgfD1MPk/1z.png (https://postimages.org/)
https://i.postimg.cc/7LbmZkCb/2z.png (https://postimages.org/)
Картинки
Забыл предупредить, что запускать надо ту версию, которая ближе по частоте кадров к частоте кадров вашего монитора.
Т.е. если у вас монитор 60Гц, то запускать надо версию 50Гц.
Если 100Гц, то запускать 100Гц.
Audiobuf можно выбирать 0.5, если звуковая карточка стабильная, хорошая, и 3.5, если ее характеристики гуляют. Но для теста можно запускать 3.5, чтобы наверняка.
И если у вас Win7, и почему-то не идут нормальные версии, то можно запустить версию DWM.
Что же касается консольного окна, то его надо все присылать, т.к. там сверху убежало много полезной информации.
Например, в данном случае видно, что пиксельные шейдеры 5.0 видеокартой не поддерживаются. Интересно, почему, это все написано в консольном окне выше.
Lethargeek
08.03.2025, 15:02
Назови хотя бы один эмулятор, который при кратной частоте развертки монитора (50, 100Гц) выдает полностью синхронную картинку.
дык мой собственный :D если ты о синхронности кадров эмуляции с монитором
собс-но, достижений тут никаких, в SDL элементарно включается
Даже для 48К есть игры, где и плавный скролл и звуки.
и что там за звуки-то? стрекотание, причём даже без гарантии регулярности
Впрочем, для теста движка не обязательно, чтобы программа выводила и плавный скролл, и звук одновременно, т.к. движку все равно, есть генерация звука в данный момент или нет, он его все равно выводит.
ну, и тест ЧЕГО тогда получился, если всё равно, выводится ли вообще что-нибудь :D
Все можно посмотреть на графиках.
"попробуй на вкус цвет огня, попробуй на боль плеск воды..." (c)
если уж на то пошло, графики нужно сравнивать парами с аналогичными по записи с реала, а не в отрыве
Все возможно при хорошем желании.
ага, "патроны кончились! - но ты же коммунист! - и вновь застрочил пулемёт"
а патронами всё-таки система заведует
https://pic.maxiol.com/images2/1741435459.92896975.clipboard2.png
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 3401MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5438)
Multimedia timer resolution: 2029 mks
Multimedia timer resolution: 1982 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - AMD Radeon RX 580 2048SP: Acer V246HL
Mode: 1920 x 1080, 60.000000Hz
Frequences set: 60.00Hz
Hardware composition: fullscreen / cursor stretched
Monitor[1] - Intel(R) HD Graphics 4000: SONY TV
Mode: 1920 x 1080, 59.940060Hz
Frequences set: 23.98Hz, 24.00Hz, 29.97Hz, 30.00Hz, 50.00Hz, 59.94Hz, 60.00Hz
Hardware composition: not supported
Adapter[0]: Direct3D feature level 11.1
Adapter[1]: Direct3D feature level 11.0
Allow tearing (variable framerate): supported
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Динамики (Juli@ Audio)
WASAPI endpoint format: 48000 Hz, 24 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 3 ms
Audio Buffer Size: 1056 samples (22.0 ms)
0, 0, 0, 0, 480, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Audiobuffer padding: 4.2 ms
Total audio delay: 23.5 ms
Video thread priority = 1
Audio buffer is empty
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Resync
*@.@@@.@@.@.@@@@@.@.@@@@@@Resync
@@@@@@@@@@@@@Resync
дык мой собственный если ты о синхронности кадров эмуляции с монитором
собс-но, достижений тут никаких, в SDL элементарно включается
Кинь ссылку, полюбопытствую)
- - - Добавлено - - -
Endpoint name: Динамики (Juli@ Audio)
Звуковуха, похоже, профессиональная, но старая?
Часто старые звуковухи не имеют драйверов под современные винды, и несколько хуже синхронизируются.
Звуковуха, похоже, профессиональная, но старая?
Часто старые звуковухи не имеют драйверов под современные винды, и несколько хуже синхронизируются.
Старая, но поддержка производителя просто потрясающая. Дрова начиная с Windows 98 от 2004-05-06 и заканчивая Windows 11 от 2023-05-29 (https://download.esi-audio.com/?w=esi&p=6&g=1&l=en). Все бы так работали.
Lethargeek
08.03.2025, 17:29
Кинь ссылку, полюбопытствую)
сбоку ссылка, "записей в дневнике: 3" и далее
Black Cat / Era CG
08.03.2025, 18:39
Мое.
https://pic.maxiol.com/images2/1741448269.1839929489.sound.png
EmuStudio 0.9 test 1 (ZX-Mode)Written by dr.Titus 2006,2025
CPU: Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
Logical CPU cores: 4
Current CPU #0 frequency: 2668MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5369)
Multimedia timer resolution: 1994 mks
Multimedia timer resolution: 8621 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce GTX 750 Ti: V233H
Mode: 1920 x 1080, 60.000000Hz
Frequences set: 59.94Hz, 60.00Hz
Hardware composition: fullscreen / cursor stretched
Monitor[1] - NVIDIA GeForce GTX 750 Ti: Unknown
Mode: 1920 x 1080, 60.000000Hz
Frequences set: 60.00Hz
Hardware composition: fullscreen / cursor stretched
Adapter[0]: Direct3D feature level 11.0
Allow tearing (variable framerate): supported
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Динамики (Realtek High Definition Audio)
WASAPI endpoint format: 48000 Hz, 24 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 3 ms
Audio Buffer Size: 1056 samples (22.0 ms)
0, 480, 0, 0, 0, 0, 480, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Video thread priority = 1
Audiobuffer padding: 29.2 ms
Total audio delay: 48.5 ms
Audio buffer is empty
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 1
Resync
*******.@.@@.@.SoundProfiler: End
сбоку ссылка, "записей в дневнике: 3" и далее
Скачал ULAX-emuL, запустил, но он не работает. Изображение есть 128Кб меню, звук от нажатия клавиш тоже, но изображение статично, курсор по строкам не перемещается.
Нашел) Приходится держать Shift, чтобы стрелками в меню перемещалось) Такое ощущение, что Shift инвертирован)
Изображение действительно идет плавно, но как при этом синхронизирован звук, сказать сложно.
Lethargeek
08.03.2025, 19:45
Нашел) Приходится держать Shift, чтобы стрелками в меню перемещалось) Такое ощущение, что Shift инвертирован)
RTFM ) по дефолту в ini на стрелках (без левого шифта, который caps-shift) - правый синклер
Изображение действительно идет плавно, но как при этом синхронизирован звук, сказать сложно.
тоже примитивно, но по идее при отсутствии каких-то экстремальных взбрыков системы - разница на доли процента может гулять
тоже примитивно, но по идее при отсутствии каких-то экстремальных взбрыков системы - разница на доли процента может гулять
Т.е. совместной синхронизации звука и видео нет) Синхронизация идет по видео, а звук как придется.
Lethargeek
08.03.2025, 20:29
Т.е. совместной синхронизации звука и видео нет) Синхронизация идет по видео, а звук как придется.
не "как придётся", а именно подтягивается к видео, чтобы разница не накопилась больше лимита
- - - Добавлено - - -
вот ты что делаешь, если (например) звуковуха хочет ровно 44100, а монитор не точно 50 гц?
- - - Добавлено - - -
или если запрос звука происходит с небольшой, но непредсказуемой и разной задержкой?
мой результат.
у меня монитор обычно работает в 144гц, пришлось выставить 100гц.
звук и картинка классные.
https://ibb.co/fdNLQdbJ
мой комп:
intel core i5 14600kf
Gigabyte aero rtx 4070ti super
ram ddr5 64gb
windows 11 24H2.
вот ты что делаешь, если (например) звуковуха хочет ровно 44100, а монитор не точно 50 гц?
Я замеряю в реальном времени очень точную реальную частоту звуковухи и частоту монитора (до 8-9 знака точности, не меньше), и синхронизирую опираясь на это.
- - - Добавлено - - -
мой комп:
intel core i5 14600kf
Gigabyte aero rtx 4070ti super
ram ddr5 64gb
windows 11 24H2.
Если бы ты прислал всю инфу, которая уехала в консольном окне выше, то не надо было бы писать отдельно характеристики компьютера)
А прислать надо)
так она постоянно вниз скроллится, приходится ловить момент.
а нельзя чтоб программа сама подстраивалась под частоту монитора ?
- - - Добавлено - - -
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: Intel(R) Core(TM) i5-14600KF
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2
Logical CPU cores: 20
Current CPU #0 frequency: 3500MHz
DWM Composition: Enabled
Powered from AC
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
WM_CREATE
Windows version: 11 (10.0.26100.3037)
Multimedia timer resolution: 1334 mks
Multimedia timer resolution: 2019 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce RTX 4070 Ti SUPER: VG27A
Mode: 2560 x 1440, 100.000000Hz
Frequences set: 59.95Hz, 60.00Hz, 75.00Hz, 100.00Hz, 120.00Hz, 143.97Hz
Hardware composition: fullscreen / windowed
Adapter[0]: Direct3D feature level 11.1
Pixel shaders: Support 16bit precision
Allow tearing (variable framerate): supported
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Динамики (Realtek(R) Audio)
WASAPI endpoint format: 48000 Hz, 24 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 3 ms
Audio Buffer Size: 1056 samples (22.0 ms)
480, 0, 0, 480, 0, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Video thread priority = 1
Audio thread priority = 15
Audiobuffer padding: 35.0 ms
Audio buffer is empty
Total audio delay: 56.0 ms
Audio buffer is empty
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 1
Resync
***Resync
.Resync
Frames lost: 1
*Frames lost: 1
*Frames lost: 1
*Frames lost: 1382
***Frames lost: 16
***Resync
Frames lost: 1
*.Frames lost: 1
*Frames lost: 195
***Frames lost: 2
**Resync
@*.Frames lost: 1
Lethargeek
08.03.2025, 21:08
Я замеряю в реальном времени очень точную реальную частоту звуковухи и частоту монитора (до 8-9 знака точности, не меньше),
иии с какой периодичностью замеряешь "в реальном времени"?
и синхронизирую опираясь на это.
иии как именно "синхронизируешь"? ЧТО меняешь? ;)
а нельзя чтоб программа сама подстраивалась под частоту монитора ?]
Можно, но, это когда будет сделан альтернативный режим, предназначенный, когда частота кадров монитора и эмулируемой системы не совпадает.
А сейчас тестируется режим именно для совпадающих частот.
- - - Добавлено - - -
*Frames lost: 195
Что ты такое делал, что выпадало столько кадров??? По идее, эмулятор нельзя так тормознуть, т.к. он работает фоном и с высоким приоритетом.
- - - Добавлено - - -
иии с какой периодичностью замеряешь "в реальном времени"?
Каждый кадр (10мс)
- - - Добавлено - - -
иии как именно "синхронизируешь"? ЧТО меняешь?
Меняю количество семплов, отправляемое аудиосистеме. Так как оно дробное, изменение в 7-8 знаке никак не заметно на слух.
да ничего, разве что были случайные нажатия мышой за пределами окна эмулятора.
да ничего, разве что были случайные нажатия мышой за пределами окна эмулятора.
Такого не должно быть. Если столько кадров пропущено, значит эмулятор 1000 кадров потерял) Этого нельзя было незаметить)
Может комп гасил моник и засыпал в процессе тестов?
Я смотрю, моник очень похож на мой ASUS) И тот же набор разверток)
Кстати, у меня есть версия эмулятора с дополнительным черным кадром на развертках 100 и выше. Это позволяет имитировать потухание любминофора между кадрами, делая покадровую анимацию еще плавнее. Но есть три минуса - портится монитор, портятся глаза, понижается яркость изображения.
монитор не засыпал это точно.
у меня ASUS VG27AQ
монитор не засыпал это точно.
у меня ASUS VG27AQ
Тогда хорошо бы выяснить, при каких условиях вдруг теряется столько кадров (когда в консоли пишет, что 1000 frames lost).
- - - Добавлено - - -
В случае же, когда аудиосистема не может сообщить о точном положении аудиомаркера в буфере (у Win7 эта точность равна 480 отсчетам, т.е. никакая), синрхонизация звука с видео по этому алгоритму невозможна.
Интересно, что больше 10 лет назад, когда я тестил совместную синхронизацию видео и аудио, я считал, что начиная с Win7 из-за большой дискретности буфера синхронизация будет невозможна. А в итоге она оказалась не только возможна, но все остальное качественно удалось перевести на новый уровень.
- - - Добавлено - - -
Titus, микшер в win7 это кошмар.Нужно курить в направлении ASIO ,даже ASIO4ALL .Другими способами не избежать диких задержок.
И вот люди соглашались со мной.
А оказалось, что методика синхронизации есть, хотя и весьма сложная.
Bedazzle
09.03.2025, 01:50
Запускаю EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame, DWM(Win7)).exe
получаю расколбас :confused:
версия EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame).exe на первый взгляд нормально
https://i.imgur.com/tSk2zvA.png
Меняю количество семплов, отправляемое аудиосистеме. Так как оно дробное, изменение в 7-8 знаке никак не заметно на слух.
откидывание одного сэмпла - это по сути децимация x2, чтобы изменения не были заметны на слух, перед такой операцией нужно наложить ФНЧ, обрезав верхнюю 1/2 полосы спектра сигнала. Если откидывается 2 сэмпла, то соответственно - это уже децимация x3 и перед этой операцией нужно наложить ФНЧ обрезав верхние 2/3 спектра. Чтобы откинуть 3 байта - нужно уже выкинуть 3/4 полосы сигнала.
Грубо говоря, чтобы без существенного вреда для сигнала откинуть 3 сэмпла нужно сжать полосу сигнала с 20 кГц до 5 кГц. Если этого не делать, то откидывание даже одного сэмпла добавит алиасинг, т.е. приведет к появлению новых частот в спектре сигнала, которых в нем изначально не было.
Соответственно, чем больше сэмплов откидывается, тем быстрее спектр сигнала скукоживается превращаясь в прямую, альтернатива без ФНЧ - получаем шумы, свисты и искажения, которых в исходном сигнале не было.
Если откидывание происходит редко, то и искажения звука будут происходить реже и их сложнее будет заметить, но практически всегда можно подобрать звуковой паттерн, который позволит разборчиво слышать добавленные артефакты и искажения звука.
Все собственно также как и с изображением - выпадание одного кадра изображения из видео обычно не заметно, но всегда можно подобрать такую анимацию, которая позволит разборчиво видеть артефакты вызванные выпаданием даже одного кадра - те-же плавные скроллы.
На мой взгляд задача одновременной синхронизации от двух асинхронных клоков без заметного ущерба для видеосигнала или аудиосигнала, без недостатков практически не решаема. Уровень искажений можно было бы уменьшить увеличив частоту дискретизации звука до нескольких мегагерц, но на практике это нереально, т.к. потребует делать апсэмплинг, обработку с выборочным прореживанием на высокой частоте дискретизации и затем даунсэмплинг, а это будет довольно затратно в плане вычислительных ресурсов, т.к. и то и другое требует наложения фильтров, а аудиопоток получается довольно увесистый, что скажется на загрузке процессора и эмуляции в целом.
Запускаю EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame, DWM(Win7)).exe
получаю расколбас
Это говорит о том, что винда 7, и выключена композиция рабочего стола. Ее надо включить)
И самое главное, нужно СОДЕРЖИМОЕ консольного окна.
Titus, возможно такие потери фреймов были изза моего жёсткого диска (они периодически уходят в сон - запускаются).
сколько сейчас не пробовал запускать при 100 гц на мониторе EmuStudio v0.9 test 1 (100Hz, AudioBuf 3.5 frame) - потери 1 фрейм.
откидывание одного сэмпла - это по сути децимация x2, чтобы изменения не были заметны на слух, перед такой операцией нужно наложить ФНЧ, обрезав верхнюю 1/2 полосы спектра сигнала. Если откидывается 2 сэмпла, то соответственно - это уже децимация x3 и перед этой операцией нужно наложить ФНЧ обрезав верхние 2/3 спектра. Чтобы откинуть 3 байта - нужно уже выкинуть 3/4 полосы сигнала.
Ты не понял сути)
Никакой один, тем более два и три семпла не откидывается.
Откидывается или прибавляется 1/256 семпла. И то один раз в кадр.
- - - Добавлено - - -
На мой взгляд задача одновременной синхронизации от двух асинхронных клоков без заметного ущерба для видеосигнала или аудиосигнала, без недостатков практически не решаема.
На мой взгляд тоже была не решаема, пока не решил.
Как говорится в детской считалочке - а если вы не верите, возьмите и проверите)
Говоря еще проще, делается так:
Каждый кадр вычисляется, приближается позиция записи к позозиции воспроизведения или отдаляется.
Если приближается, то в следующий кадр будет сгенерировано условно не 1920 семплов, а 1919.999.
Если удаляется, то будет сгенерировано 1920.001.
И то эта регуляция происходит очень плавно.
Сперва делал ее специально грубой, чтобы понять, колебания частоты в каком знаке все еще будет заметно на слух.
Потом уменьшил это значение примерно в 1000 раз.
- - - Добавлено - - -
Titus, возможно такие потери фреймов были изза моего жёсткого диска (они периодически уходят в сон - запускаются).
Тоже странно, ведь эмулятор не лазает на жесткий диск в процессе работы. Если только в него не кинуть снапшотом. Но в логи нет надписи, что ты кинул снапшот в этот момент.
В общем, хорошо бы понять, почему это происходило. Это не то, чтобы плохо, но если такое у кого-то происходит, надо понимать, почему, и надо это корректировать.
Lethargeek
09.03.2025, 08:30
Каждый кадр (10мс)
Меняю количество семплов, отправляемое аудиосистеме.
ну, и у меня так же, разве что разницу иначе замеряю, но при достаточной стабильности системы это неважно
а при недостаточной - в строгом смысле никакой высокой точности "до надцатого знака" и не получишь, где-то да вылезет
Так как оно дробное,
а вот здесь пжалста поподробней, каким чудом получается "отправить" дробную часть по определению дискретной величины :v2_crazy:
подозреваю, ты несколько другое имел в виду, а именно - плавную корректировку частоты дискретизации звука
при которой, есс-но, кол-во сэмплов на порцию остаётся целым, как и положено
изменение в 7-8 знаке никак не заметно на слух.
как по мне, оно и в третьем знаке незаметно, тем более на спековском звуке
- - - Добавлено - - -
откидывание одного сэмпла
не откидывание, а плавный сдвиг позиций на графике
- - - Добавлено - - -
Можно, но, это когда будет сделан альтернативный режим, предназначенный, когда частота кадров монитора и эмулируемой системы не совпадает.
А сейчас тестируется режим именно для совпадающих частот.
да не нужно никаких альтернативных режимов, звук синхронизировать всегда надо только с частотой эмуляции
а уж как там эмуль на монитор выводит - повторяет кадры, пропускает или интерполирует - вообще неважно
главное, что между двух любых опорных точек (совпадения эмуляции и монитора) - звук не меняется
Bedazzle
09.03.2025, 10:18
Это говорит о том, что винда 7, и выключена композиция рабочего стола. Ее надо включить)
И самое главное, нужно СОДЕРЖИМОЕ консольного окна.
Полезное содержимое мгновенно улетает куда-то далеко, в видимой зоне только однотипные сообщения про потерянные фреймы.
При попытке вывода консольных сообщений в файл - создаётся пустой (оно и логично, потому что другое окно открывается).
Композицию включать не планировал.
Откидывается или прибавляется 1/256 семпла. И то один раз в кадр.
ну да и кажое такое откидывание приводит к появлению искажения сигнала. Если такое искажение происходит редко, его не будет заметно на среднестатистическом звуке, но можно подобрать сигнал на котором это искажение будет хорошо выделяться.
а вот здесь пжалста поподробней, каким чудом получается "отправить" дробную часть по определению дискретной величины
Легко. Генерирую дробное, например, 1920.0001, а отправляю целое 1920, а 0.0001 перенесется на следующую посылку. Так за 10 тысяч итераций набежит еще один байт.
- - - Добавлено - - -
как по мне, оно и в третьем знаке незаметно, тем более на спековском звуке
Малозаметно, пэтому я от третьего знака еще в три раза понизил порядок, чтобы звук был высококачественным.
Полезное содержимое мгновенно улетает куда-то далеко, в видимой зоне только однотипные сообщения про потерянные фреймы.
CTRL+A, CTRL+C никак?
Композицию включать не планировал.
Тогда пришли содержимое консольного окна для EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame).exe.
- - - Добавлено - - -
ну да и кажое такое откидывание приводит к появлению искажения сигнала. Если такое искажение происходит редко, его не будет заметно на среднестатистическом звуке, но можно подобрать сигнал на котором это искажение будет хорошо выделяться.
Нет, ничего не выделяется.
Мы все живем в мире искажений. Вопрос только какого порядка то искажение, какое соотношение полезный сигнал/шум(искажение) в каждом конкретном случае.
Тогда пришли содержимое консольного окна для EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame).exe.
Нет, ничего не выделяется.
Мы все живем в мире искажений. Вопрос только какого порядка то искажение, какое соотношение полезный сигнал/шум(искажение) в каждом конкретном случае.
Без фильтра удаление одного сэмпла может привести к всплеску импульса с амплитудой более максимального значения сэмпла. И уровень алиасов без фильтра максимальный, т.е. амплитуда искажений будет порядка амплитуды составляющих сигнала.
В дискретном сигнале все сэмплы связаны между собой, просто так выбросить один без значительных возмущений на сотни соседних сэмплов не получится. Хоть значения оставшихся сэмплов не меняются, но меняется форма сигнала между точками выборок этих сэмплов.
Без фильтра удаление одного сэмпла может привести к всплеску импульса с амплитудой более максимального значения сэмпла. И уровень алиасов без фильтра максимальный, т.е. амплитуда искажений будет порядка амплитуды составляющих сигнала.
Еще раз повторяю - никогда не выкидывается байт. Максимум, регулируется на уровне 1/256 байта.
Еще раз повторяю - никогда не выкидывается байт. Максимум, регулируется на уровне 1/256 байта.
что означает "регулируется на уровне 1/256 байта"?
К примеру от эмулятора пришел пакет 960 сэмплов (50 Гц refresh rate для 48 кГц), на выход нужно скажем 959, как регулировать?
К примеру от эмулятора пришел пакет 960 сэмплов (50 Гц refresh rate для 48 кГц), на выход нужно скажем 959, как регулировать?
От эмулятора придет 959.0001 семпл.
Есть аудиобуфер, из которого аудиомикшер виндовс каждые 10мс потребляет условно 960 семплов.
А я его пополняю с другой стороны с нужным мне периодом и нужным числом семплов. И этот период может быть любым, и число семплов любое, даже дробное.
cafedead
09.03.2025, 16:54
Забыл предупредить, что запускать надо ту версию, которая ближе по частоте кадров к частоте кадров вашего монитора.
Т.е. если у вас монитор 60Гц, то запускать надо версию 50Гц.
Если 100Гц, то запускать 100Гц.
А если 75? Я серьезно, у меня 75Гц. Ну окей, переключил герцовку на 50Гц. Пока-что все крайне не удобно.
Audiobuf можно выбирать 0.5, если звуковая карточка стабильная, хорошая, и 3.5, если ее характеристики гуляют. Но для теста можно запускать 3.5, чтобы наверняка.
И если у вас Win7, и почему-то не идут нормальные версии, то можно запустить версию DWM.
У меня на вин7 не заработало. В окошке DirectFactory creation error! а в консоли "DirtectWrite 1.1 creation error -2147467262". Что с этим делать? Чего-то мне не хватает?
Кстати, самая старая версия из первого поста запустилась, хоть синхронизация звука спамила ошибками. Улучшения явно не пошли на пользу.
- - - Добавлено - - -
Назови хотя бы один эмулятор, который при кратной частоте развертки монитора (50, 100Гц) выдает полностью синхронную картинку.
Даже для 48К есть игры, где и плавный скролл и звуки.
Естественно, если у тебя совпадает кадровая частота монитора и эмулируемой системы, или они близки друг к другу.
Главное, что получается полное погружение пользователя в то, что это реальная машина.
Ну... Наверное, любой эмулятор. А какую, по-вашему, выдают эмуляторы картинку? Просто из вредности зажали, и не выдают собранные кадры? Вы вот меня прям озадачили.
У меня возникает погружение с использованием Unreal, в режиме video=resampler, когда я получаю плавное движение рамки при загрузке с кассет, не переключаясь при этом к 50Гц частоте развертки, а оставаясь на 75Гц. Может быть вам стоит как-то в этом направлении подумать? Частота развертки 75Гц мне нравится больше, чем 50Гц. И вы как-то слишком зациклены на задержках. Как по мне, с задержками как раз вполне можно мириться. Задержки в районе 20мс как по звуку, так и по картинке вполне нормально воспринимаются, на мой взгляд. Не вижу проблемы. Может кто-то видит, не знаю. Я - нет. Поймите правильно, но многие, включая меня, уже изнежены плавной частой герцовкой, всякими сглаживаниями медленного исходного фреймрейта, вроде SVP, или тем, что в современных телевизорах, которые из 24Гц делают столько кадров, сколько выдает матрица. Это будущее. Люди готовы за это заплатить небольшой незаметной глазом задержкой.
От эмулятора придет 959.0001 семпл.
Есть аудиобуфер, из которого аудиомикшер виндовс каждые 10мс потребляет условно 960 семплов.
А я его пополняю с другой стороны с нужным мне периодом и нужным числом семплов. И этот период может быть любым, и число семплов любое, даже дробное.
Это все понятно, но вопрос о другом - этот дробный период со временем набегает до разницы в один сэмпл, что в этот момент происходит? Что происходит с лишними сэмплами или с недостающими? Если их просто выбросить или добавить пустые - это приведет к искажениям сигнала, причем искажения затронут не один сэмпл, а сотни и тысячи, несмотря на то, что значения оставшихся сэмплов не изменились - сигнал в промежутках между сэмплами изменит форму.
Это связано с тем, что каждый сэмпл на самом деле представляет не маленький фрагмент сигнала, а по сути несет часть информации обо всем непрерывном сигнале в целом. Поэтому если его выбросить - это затронет весь сигнал. Как-то играл в MATLAB с реконструкцией сигнала по сэмплам и был удивлен, как изменение всего одного сэмпла приводит к изменению сигнала даже на расстоянии в тысячи сэмплов от него, до этого я даже не думал что один сэмпл может так влиять на сигнал в целом...
А если 75? Я серьезно, у меня 75Гц. Ну окей, переключил герцовку на 50Гц. Пока-что все крайне не удобно.
При частоте развертки монитора некратной частоте эмулируемой системы, к сожалению, идеальной плавности не будет. Хотя, при этом чем выше частота развертки монитора, тем все будет плавнее, но не идеально.
Если сравнить, это примерно как если взять пиксельную графику и промасштабировать до другого разрешения. Если разрешение некратное, то чем выше новое разрешение, тем итоговое качество будет лучше, но не 100% как в оригинале.
- - - Добавлено - - -
У меня на вин7 не заработало. В окошке DirectFactory creation error! а в консоли "DirtectWrite 1.1 creation error -2147467262". Что с этим делать? Чего-то мне не хватает?
Да, не хватает последнего апдейта для Win7.
Когда Майкрософт выпустила Win8 с новой видеосистемой Direct2D 1.1, то также она выпустила апдейт для Wiin7, который дает, хоть не полную, но во многом совместимую поддержку с Direct2D 1.1.
Вроде бы вот это обновление - Platform Update for Windows 7 (https://www.microsoft.com/en-us/download/details.aspx?id=36805)
- - - Добавлено - - -
Кстати, самая старая версия из первого поста запустилась, хоть синхронизация звука спамила ошибками. Улучшения явно не пошли на пользу.
Про ту версию надо забыть, как про морально и технологически устаревшую.
- - - Добавлено - - -
я получаю плавное движение рамки при загрузке с кассет, не переключаясь при этом к 50Гц частоте развертки, а оставаясь на 75Гц.
Никто не мешает смотреть на 75Гц, если это приятно глазу)
Лично я любитель полного совпадения кадровой развертки с разверткой эмулируемой системы (50, 100, 150Гц). Для меня только это радует глаз.
А если кому-то это не нужно, это тоже нормально.
- - - Добавлено - - -
Это все понятно, но вопрос о другом - этот дробный период со временем набегает до разницы в один сэмпл
Конечно набегает. Именно для этого он и дробный, чтобы набежать со временен и компенсировать разницу между реальной частотой семплов и прогнозируемой.
Представь, есть конвейер, в начало конвейера каждые 0.9 секунд насыпается 1.1 литра муки. Мука едет по конвейеру и с другой стороны раз в секунду кто-то ложкой обьемом 1 литр эту муку вычерпывает.
В итоге сколько муки насыпали в начало конвейера, столько на другом конце и снимают. Никто никого не догонит. Никакой лишний стакан муки никто не возьмет или не положит. Все идет плавно.
- - - Добавлено - - -
Тогда пришли содержимое консольного окна для EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame).exe.
Запрос к Bedazzle.
Bedazzle
09.03.2025, 20:33
CTRL+A, CTRL+C никак?
В консоли Win7? :)
- - - Добавлено - - -
Запрос к Bedazzle.
https://i.imgur.com/X6DTjLX.png
https://i.imgur.com/r9bEu93.png
версия EmuStudio v0.9 test 1 (50Hz, AudioBuf 3.5 frame).exe на первый взгляд нормально
Странно, что у тебя работает классическая версия, т.к. ни у кого другого на Win7 она еще не работала нормально.
То, что DWM-версия не работает, это нормально при отключенной композиции рабочего стола.
Значит отмечу, что не все Win7 имеют блокирующий вызов ожидания VBlank. Может быть от драйверов зависит.
И не стоит автоматически переключаться с ожидания VBlank на DWM на Win7.
cafedead
09.03.2025, 21:23
Вроде бы вот это обновление
Благодарю, да, то что надо.
Ну заработала только DWM, но на 75Гц ускоренно работает. Остальные запускаются, звук идет, картинка даже первая тоже появляется, потом идет потеря всех остальных кадров, в консоли Resync и куча звездочек, картинка замирает. Все, как у человека выше. Потом может обновиться одним кадром, и снова замереть, было такое. В общем, если там что-то исправить, то заработает.
При частоте развертки монитора некратной частоте эмулируемой системы, к сожалению, идеальной плавности не будет. Хотя, при этом чем выше частота развертки монитора, тем все будет плавнее, но не идеально.
Если сравнить, это примерно как если взять пиксельную графику и промасштабировать до другого разрешения. Если разрешение некратное, то чем выше новое разрешение, тем итоговое качество будет лучше, но не 100% как в оригинале.
Ну это не очень корректное сравнение. Плавности не будет, потому что это 50Гц. Если выставить у ЖК-монитора 50Гц, это выглядит все равно плохо, хоть и аутентично. А несоответствие частот развертки эмулируемой системы и развертки монитора влияет только на линии разрыва, их количество, расположение и их движение по экрану. Ну хотя тут от реализации зависит... Если ждать вертикальной синхронизации, то будут рывки, да.
Ну заработала только DWM, но на 75Гц ускоренно работает. Остальные запускаются, звук идет, картинка даже первая тоже появляется, потом идет потеря всех остальных кадров, в консоли Resync, картинка замирает. Потом может обновиться одним кадром, и снова замереть.
Нужны скриншоты полного консольного окна и окна графиков
- - - Добавлено - - -
Остальные запускаются, звук идет, картинка даже первая тоже появляется, потом идет потеря всех остальных кадров, в консоли Resync, картинка замирает. Потом может обновиться одним кадром, и снова замереть.
Это понятно, потому что у большинства людей (до Bedazzle думал, что у всех), синхронизация VBlank под Win7 блокирующая, поэтому поток останавливается. А DWM не блокирующая, хотя и худшей точности.
- - - Добавлено - - -
Ну это не очень корректное сравнение. Плавности не будет, потому что это 50Гц. Если выставить у ЖК-монитора 50Гц, это выглядит все равно плохо, хоть и аутентично.
Тут понятие 'плохо' слишком абстрактное.
Для меня выглядит прекрасно)
А если я включаю 100Гц, то еще прекраснее.
Повторюсь - тем, кому нравится другое соотношение частот, никто не мешает использовать их. Когда они будут поддерживаться, разумеется. Или на других эмуляторах.
Я же няшку делал прежде всего для своего удовольствия, а если она кому-то еще пригодится, я тоже только рад.
cafedead
09.03.2025, 21:43
Нужны скриншоты полного консольного окна и окна графиков
а... так я закрыл нафиг график, и все заработало...) Все варианты в вин7 работают, не только DWM.
MEMPTR не эмулируется.
а... так я закрыл нафиг график, и все заработало...) Все варианты в вин7 работают, не только DWM.
Но мне нужен график и консольное окно для статистики)
- - - Добавлено - - -
MEMPTR не эмулируется.
Не эмулируется. Это чисто номинальное ядро Z80 только для теста движка эмулятора.
- - - Добавлено - - -
Все еще актуален запрос к Enigmatic о полной информации, которая вывелась в окно консоли.
- - - Добавлено - - -
И к cafedead тоже самое.
[bETA]mEN
10.03.2025, 00:21
https://i.imgur.com/H1u8tdh.png
https://i.imgur.com/qXk0TB3.png
Опа. А а вот внешняя звуковуха USB мне первый раз попадается.
И сразу бросается в глаза то, что ее размер буфера подкачки не равен 10мс, а равен общему размеру буфера 22мс.
Интересно погонять эмулятор хотя бы минут 5-10, и посмотреть, сколько раз напишет Resync в консольном окне.
Если много раз напишет, то запустить версию с аудиобуфером 3.5 вместо 1.5.
[bETA]mEN
10.03.2025, 00:51
Интересно погонять эмулятор хотя бы минут 5-10, и посмотреть, сколько раз напишет Resync в консольном окне.
Resync в консольном окне пишет от 1 до 3 раз сразу после старта.
Конечно набегает. Именно для этого он и дробный, чтобы набежать со временен и компенсировать разницу между реальной частотой семплов и прогнозируемой.
Представь, есть конвейер, в начало конвейера каждые 0.9 секунд насыпается 1.1 литра муки. Мука едет по конвейеру и с другой стороны раз в секунду кто-то ложкой обьемом 1 литр эту муку вычерпывает.
В итоге сколько муки насыпали в начало конвейера, столько на другом конце и снимают. Никто никого не догонит. Никакой лишний стакан муки никто не возьмет или не положит. Все идет плавно.
Всё бы хорошо, но в нашем случае ситуация обратная - в спектруме видео и звук тактируются от одного клока, поэтому они строго синхронизированы. А на ПК тактирование видео и звука идёт от разных, асинхронных источников.
Если использовать аналогию с конвейером, то у нас две линии – для муки и сахара. На входе строго синхронно, каждую секунду, подаётся ровно по 1 литру муки и 1 литру сахара. Но на выходе муку забирают ложкой объёмом 1.1 литра в секунду, а сахар - 0.9 литра в секунду.
Очевидно, что мука расходуется быстрее, чем сахар, хотя поступают они с одинаковой скоростью. Мы не можем изменить скорость забора, она фиксирована и не поддается регулировке. Единственное, что нам доступно - регулировать подачу на входе, но подача всё равно должна быть строго равными объёмами муки и сахара.
И хуже того, скорость забора муки не синхронизирована со скоростью забора сахара и случайным образом меняется со временем, поэтому в какой-то момент времени соотношение скоростей забора может измениться и мука будет забирается со скоростью 0.8 литра в секунду, а сахар 1.15 литра в секунду.
И вот главный вопрос - откуда брать недостающую муку или куда девать лишний сахар?
Второй момент - точность измерения частоты видео и звука. Любой пропуск кадра может вносить значительные ошибки, особенно при высокой нагрузке системы. Также, по моим тестам, некоторые драйверы звуковых карт ведут себя нестабильно - уведомления о позиции воспроизведения могут приходить нерегулярными порциями (например, сначала 1 сэмпл, затем 1024, потом 7 сэмплов, потом 1600 и т. д.), а иногда обновления могут даже группироваться в серии без задержек. Все эти факторы значительно снижают точность определения реальной частоты дискретизации звука, поскольку затрудняют точное измерение объёма аппаратного буфера и частоты его обновления в процессе воспроизведения.
И вот главный вопрос - откуда брать недостающую муку или куда девать лишний сахар?
Растягивать и недосыпать)
Если у тебя монитор на компьютере дает 50.1Гц, а спектрум 49.9Гц (для примеру), то придется растянуть времянки спектрума до 50.1Гц.
Тоже самое и со звуком.
- - - Добавлено - - -
Второй момент - точность измерения частоты видео и звука. Любой пропуск кадра может вносить значительные ошибки, особенно при высокой нагрузке системы. Также, по моим тестам, некоторые драйверы звуковых карт ведут себя нестабильно - уведомления о позиции воспроизведения могут приходить нерегулярными порциями (например, сначала 1 сэмпл, затем 1024, потом 7 сэмплов, потом 1600 и т. д.), а иногда обновления могут даже группироваться в серии без задержек. Все эти факторы значительно снижают точность определения реальной частоты дискретизации звука, поскольку затрудняют точное измерение объёма аппаратного буфера и частоты его обновления в процессе воспроизведения.
Совершенно, верно. Точность измерения частоты кадров и семплов - это самое сложное, над чем я долго работал.
Твои тесты драйверов звуковых карт, как я понял, опираются на DirectSound. А это очень старая технология, которая эмулируется через WASAPI уже сто лет как.
Что же касается WASAPI, то даже в кооперативном (обычном) режиме, забор данных идет плюс-минус равномерно. Но даже с теми звуковухами, которые имеют внутренние дополнительные буфера-прослойки (у меня есть такая карта), все равно получается стабильно с моим алгоритмом, приходится только несколько побольше сделать зазор звукового буфера (лишние 10мс, в худшем случае 20мс). А в целом основная часть звуковух работает стабильно с зазором 5мс. Впрочем, можно ставить 2-3мс, но это такие мелочи, которые можно округлить до 5мс для надежности.
Я гонял эту систему стабилизации на совершенно разных и даже очень тормозных компах, пока что прекрасно справляется.
Впрочем, вполне возможно, что найдутся какие-то экзотические случаи, но пока что не встретились.
Система на столько универсальна, что любые большие биения и нестабильности лечатся одним и тем же алгоритмом, просто требуют несколько большего зазора звукового буфера, вот и все.
- - - Добавлено - - -
Приведу такую аналогию.
В комнате болтается маятник подвешенный под потолком (трения нет, он качается не затухая). Если маятник хороший, стандартный, то он качается равномерно, и если зазор от крайних положений маятника до стен 1 метр, маятник с большой долей вероятности будет всегда качаться одинаково, не доставая до стен (не вызывая переполнения буфера, пересинхронизации и требования новой раскачки). Частоту качаний маятника тоже легко измерить на достаточно коротком окне.
Но предположим, что на маятник действуют дополнительные силы, например, крюк, на котором он качается, ездит туда-сюда с какой-то периодичностью. А этот крюк ездит еще по одним рельсам со своей периодичностью. Теперь, чтобы маятник не касался стен, стены надо немного раздвинуть. Иногда много. Но всегда есть такое положение стен, когда даже такой сложно предсказуемый на коротком отрезке времени маятник будет качаться не доставая до стен. Что же касается вычисления частоты качания маятника, то тут становится сложнее, но на более большом окне она вычисляется стабильно. И чем больше проходит времени с момента запуска эмулятора, тем стабильность выше.
- - - Добавлено - - -
Если ты посмотришь на графики работы аудиосистемы, которые тут выкладывали, то фиолетовый график - это и есть диаграмма качания маятника.
Он то приближается к одной стене, то к другой, качается у всех по разному (в зависимости от интерференции частоты семплов и кадров на конкретной машине), но все время удерживается в стабильном коридоре. Если же качнется за пределы, то наступит пересинхронизация (установка маятника в середину коридора). Но при оптимальном зазоре сверху и снизу пересинхронизация не наступит никогда.
Растягивать и недосыпать)
Если у тебя монитор на компьютере дает 50.1Гц, а спектрум 49.9Гц (для примеру), то придется растянуть времянки спектрума до 50.1Гц.
Тоже самое и со звуком.
Регулировать скорость эмуляции не проблема, но вот беда - если нам не хватает скорости обновления видео и мы увеличиваем скорость эмуляции, то это приводит к увеличению скорости поступления сэмплов со звуком, а скорость забора звуковых сэмплов мы регулировать не можем.
Если-же отбрасывать сэмплы или вставлять копии - это приведет к искажению звука или видео. В этом собственно и вопрос - как это решать?
Насколько понимаю, задача точной синхронизации трёх независимых осцилляторов с медленно дрейфующими частотами и случайным начальным отклонением частот в общем случае не имеет точного решения. Поправьте, если ошибаюсь.
Например, можно взять два генератора, смешать их сигналы на смесителе и наблюдать результат на осциллографе. Плавно регулируя частоту одного из генераторов, можно добиться стабилизации биений. Однако, если генераторы тактируются от асинхронных источников, то после настройки на стабильные биения система довольно быстро выходит из этого состояния в одну или другую случайную сторону, требуя непрерывной подстройки частоты для удержания стабильного состояния.
Если же добавить третий генератор с независимым тактированием, то добиться устойчивой стабилизации биений, регулируя частоту только одного из генераторов, уже не получится. В этом случае фаза и частота биений будут постоянно дрейфовать, так как система имеет три независимых осциллятора с несвязанными дрейфующими частотами.
Это по сути модель нашей системы с эмулятором и приёмниками видео и аудио фреймов на ПК. Где мы можем регулировать частоту только одного осциллятора (скорость эмуляции). Мы можем подстроить скорость эмуляции под стабилизацию к частоте видеокарты или под стабилизацию к частоте звуковой карты, но не к обоим одновременно.
Поэтому в ZXMAK2 сделан выбор источника синхронизации, позволяющий выбрать под что именно подстраиваться.
Твои тесты драйверов звуковых карт, как я понял, опираются на DirectSound. А это очень старая технология, которая эмулируется через WASAPI уже сто лет как.
Нет, я тестировал на Linux используя Pipewire, который появился только в 2017 году и используя свежие обновления 2024 года. Такие результаты я получал на USB звуковой карте, чип которой появился примерно в 2021 году. Насколько помню, проблема там именно в драйвере,т.к. с другими бекэндами результаты были аналогичными. А вот на другой звуковой карте все было красиво - достаточно быстрые уведомления и более менее стабильно, хотя всеравно иногда наблюдались отклонения в размере нотификации и нотификации также иногда приходили пачками.
При использовании OpenAL можно задавать число сэмплов через которое драйвер будет обновлять позицию воспроизведения, но у звуковых карт есть нижний лимит, если задать ниже - уведомления будут приходить просто с минимально возможным для данной звуковой карты периодом. И гарантии, что уведомления будут приходит с фиксированным интервалом нет, два уведомления могут приходить без задержки вообще и тогда следующая задержка будет в два раза больше обычной.
Регулировать скорость эмуляции не проблема, но вот беда - если нам не хватает скорости обновления видео и мы увеличиваем скорость эмуляции, то это приводит к увеличению скорости поступления сэмплов со звуком, а скорость забора звуковых сэмплов мы регулировать не можем.
Если-же отбрасывать сэмплы или вставлять копии - это приведет к искажению звука или видео. В этом собственно и вопрос - как это решать?
Что значит как решать? Я просто вписываю нужное число тактов процессора Z80, отработанное за кадр в необходимую длину аудиокадра.
Если у меня в этом кадре по расчетам должно быть проиграно 960.001 семпла, то ровно во столько семплов я и сгенерю звук от текущего кадра Z80.
- - - Добавлено - - -
Нет, я тестировал на Linux используя Pipewire,
Линукс меня не интересует в принципе)
Равно как и OpenAL.
У меня есть стандартный PC со стандартной Виндой, и это моя область разработки.
Что значит как решать? Я просто вписываю нужное число тактов процессора Z80, отработанное за кадр в необходимую длину аудиокадра.
Если у меня в этом кадре по расчетам должно быть проиграно 960.001 семпла, то ровно во столько семплов я и сгенерю звук от текущего кадра Z80.
Тоесть ты по сути точно также выкидываешь или добавляешь сэмплы, только с апсэмплиногом до 3.5 МГц?
Да, так влияение искажений будет ослаблено за счет апсэмплинга, который в данном случае составит порядка 3.5М/48k=x73.
А как происходит децимация с частоты Fclk Z80 до Fs аудиопотока? Как понимаю, от реализации этой части и будет зависеть уровень искажений. Частота Z80 не делится кратно на стандартные частоты звуковых карт (48 кГц или 44.1 кГц). Какой подход тут применяется?
Lethargeek
10.03.2025, 09:13
Легко. Генерирую дробное, например, 1920.0001, а отправляю целое 1920, а 0.0001 перенесется на следующую посылку. Так за 10 тысяч итераций набежит еще один байт.
так в том кадре, на котором набежал уже целый сэмпл (почему "байт", кстати? у тебя что, звук восьмибитный?) будут те же самые "доли процента", как у меня :v2_dizzy_biggrin2:
- - - Добавлено - - -
Если использовать аналогию с конвейером, то у нас две линии – для муки и сахара. На входе строго синхронно, каждую секунду, подаётся ровно по 1 литру муки и 1 литру сахара. Но на выходе муку забирают ложкой объёмом 1.1 литра в секунду, а сахар - 0.9 литра в секунду.
да не так, блин :v2_dizzy_facepalm: мы дискретизируем волну, непрерывную
то есть разливаем по дискретным бутылкам непрерывный поток воды, вытекающий из трубы
за одно и то же время разлить можем или в 100 бутылок, или в 101, или в 99
в любом случае объём останется тем же, как и минеральный состав
Если-же отбрасывать сэмплы или вставлять копии - это приведет к искажению звука или видео. В этом собственно и вопрос - как это решать?
никто ничего не отбрасывает и тем более не вставляет копий, не фантазируй
сэмплы - это равномерно расставленные точки на графике исходной волны
на том же графике при другом кол-ве сэмплов их координаты будут другими
расстояние между соседними - будет другим (это как объём воды в бутылке как раз)
Корежить звук, даже на минимальную писечку, в угоду "плавности картинки" - концептуально неправильно. Если опции "не трогать звук" нет, то нафиг такую эмуляцию, ИМХО.
Lethargeek
10.03.2025, 10:39
Корежить звук, даже на минимальную писечку, в угоду "плавности картинки" - концептуально неправильно. Если опции "не трогать звук" нет, то нафиг такую эмуляцию, ИМХО.
что значит "не трогать"? если вдруг кто еще не в курсе, звук - это аналоговый сигнал, был дискретизирован = уже тронули, ЛЮБАЯ дискретизация "звук корёжит" :D
- - - Добавлено - - -
отсюда логический вывод - если всё равно "корёжить" приходится, то надо делать это именно "в угоду картинке" :p
в любом случае объём останется тем же, как и минеральный состав
э нет, для звуковой карты время течет иначе чем для видеокарты, поэтому условно говоря за время 100 кадров видеокарты, на часах звуковой карты может набежать 100 ± 5 кадров (цифры взяты от балды для примера). И скорость течения времени постоянно меняется, как у звуковой карты, так и у видеокарты, поэтому в какой-то момент часы видеокарты могут идти быстрее, в другой момент времени наоборот.
Это для эмулятора время звука и видео всегда одинаково, т.к. у спектрума они синхронизированы от одного клока. А для звуковой карты и видеокарты время течет по разному, поэтому 1 секунда эмулятора (50 кадров) на видеокарте и на звуковой карте будут воспроизводиться разное время.
на том же графике при другом кол-ве сэмплов их координаты будут другими
расстояние между соседними - будет другим (это как объём воды в бутылке как раз)
для того чтобы координаты сэмплов стали другими, сигнал нужно реконструировать в непрерывный и передискретизировать заново в новой координатной сетке. Грубо говоря сделать апсемплинг и затем даунсемплинг к другой частоте дискретизации. Операция довольно тяжелая и проблематичная, особенно учитывая дробные коэффициенты преобразования. Без искажений сигнала и нагрузки на процессор тут не обойтись.
отсюда логический вывод - если всё равно "корёжить" приходится, то надо делать это именно "в угоду картинке" :p
Нет.
Из-за этого "в угоду картинке" в том же твиче периодически частота начинает плавать.
Если у кого-то табун медведей пробежался по ушам, не значит что никто не заметит эту жуть.
Нельзя трогать звук, и передискретизировать его туда-сюда чтобы фреймы ровно шли.
ЛЮБАЯ дискретизация "звук корёжит" :D
корежит при условии, что на входе дискретизатора присутствуют частоты выше Fs/2 (ну или ниже, с учетом фазы).
Если полоса сигнала на входе дискретизатора скажем 1/10 от полосы дискретизатора, то ничего не корежится (в пределах разумного).
Lethargeek
10.03.2025, 11:38
Нет.
Из-за этого "в угоду картинке" в том же твиче периодически частота начинает плавать.
Если у кого-то табун медведей пробежался по ушам, не значит что никто не заметит эту жуть.
Нельзя трогать звук, и передискретизировать его туда-сюда чтобы фреймы ровно шли.
ну что ты, чёрт побери, такое несёшь, при чём тут твич, и с чего бы частоте ЗВУКА плавать?
у частоты ИСХОДНОЙ ВОЛНЫ и частоты ДИСКРЕТИЗАЦИИ этой же волны общего - только слово "частота"
ZXMAK, Воспроизводимая частота не должна дрейфовать дальше чем на 1/10 герца (или правильнее - 0.1%). Это заметно.
- - - Добавлено - - -
Lethargeek, Чтобы подогнать синхронизированный звук между прыгающими между 49/50/51 герцами развертки, тебе придется замедлять или ускорять звук (чем твич и занимается, когда у него моча в голове вдруг появляется). И этот подгон за счет ускорения и замедления - ужасен.
Lethargeek
10.03.2025, 11:50
э нет, для звуковой карты время течет иначе чем для видеокарты, поэтому условно говоря за время 100 кадров видеокарты, на часах звуковой карты может набежать 100 ± 5 кадров (цифры взяты от балды для примера). И скорость течения времени постоянно меняется, как у звуковой карты, так и у видеокарты, поэтому в какой-то момент часы видеокарты могут идти быстрее, в другой момент времени наоборот.
э, да! ЕЩЕ РАЗ: кол-во бутылок может меняться, а кол-во воды в них - нет! ну вот вылилось у нас из трубы сто литров, а потребитель говорит - хочу 105 бутылок - на тебе 100 литров в 105 бутылках; потребитель говорит - хочу 95 бутылок - на тебе те же 100 литров в 95 бутылках - и в чём проблема?
для того чтобы координаты сэмплов стали другими, сигнал нужно реконструировать в непрерывный и передискретизировать заново в новой координатной сетке. Грубо говоря сделать апсемплинг и затем даунсемплинг к другой частоте дискретизации. Операция довольно тяжелая и проблематичная, особенно учитывая дробные коэффициенты преобразования. Без искажений сигнала и нагрузки на процессор тут не обойтись.
"горе от ума" :v2_dizzy_facepalm: НЕ ВЫДУМЫВАЙ ПРОБЛЕМЫ НА РОВНОМ МЕСТЕ, ничего не нужно "реконструировать", нужно сразу КОНСТРУИРОВАТЬ с другой сеткой - ведь с какой-то всё равно нужно
корежит при условии, что на входе дискретизатора присутствуют частоты выше Fs/2 (ну или ниже, с учетом фазы).
Если полоса сигнала на входе дискретизатора скажем 1/10 от полосы дискретизатора, то ничего не корежится (в пределах разумного).
у всех разные "пределы", в моих - "корёжится" :p
ну что ты, чёрт побери, такое несёшь, при чём тут твич, и с чего бы частоте ЗВУКА плавать?
учитывая, что частоты звуковой карты и видеокарты плывут друг относительно друга, да плюс к этому измерения их частот относительно таймера системы тоже плывут, то плавание частоты звука вполне нормальное явление при правильной реализации подстройки частоты дискретизации. Именно в том и заключается задача - сделать чтобы частоты плавали, подстраиваясь друг под друга.
Lethargeek
10.03.2025, 11:54
Чтобы подогнать синхронизированный звук между прыгающими между 49/50/51 герцами развертки,
хде, у МОНИТОРА??? :v2_crazy: это ж не твич, который по нескольку кадров может выбрасывать
ZXMAK, Воспроизводимая частота не должна дрейфовать дальше чем на 1/10 герца (или правильнее - 0.1%). Это заметно.
у меня как раз в текущих настройках и стоит дрейф не более 0.1Гц.
- - - Добавлено - - -
так в том кадре, на котором набежал уже целый сэмпл (почему "байт", кстати? у тебя что, звук восьмибитный?) будут те же самые "доли процента", как у меня
32-битный у меня звук.
Это я условно сказал байт. Не байт, отсчет.
Lethargeek
10.03.2025, 12:04
учитывая, что частоты звуковой карты и видеокарты плывут друг относительно друга, да плюс к этому измерения их частот относительно таймера системы тоже плывут, то плавание частоты звука вполне нормальное явление при правильной реализации подстройки частоты дискретизации.
:v2_dizzy_facepalm: ЕЩЕ РАЗ:
у частоты ИСХОДНОЙ ВОЛНЫ и частоты ДИСКРЕТИЗАЦИИ этой же волны общего - только слово "частота"
это разные "частоты", не путай их (и да, "таймер системы" тут - третий лишний)
Именно в том и заключается задача - сделать чтобы частоты плавали, подстраиваясь друг под друга.
нет, задача заключается, чтоб НЕ плавали - при достаточно небольших и стабильных флуктуациях и не будут
а при слишком нестабильных - ничего хорошего со звуком всяко не будет, даже если звуковуха главная, а не видео
"горе от ума" НЕ ВЫДУМЫВАЙ ПРОБЛЕМЫ НА РОВНОМ МЕСТЕ, ничего не нужно "реконструировать", нужно сразу КОНСТРУИРОВАТЬ с другой сеткой - ведь с какой-то всё равно нужно
вот мне и интересно - как это делается?
Пусть частота Z80 Fclk=3504000 Гц. Звуковая карта Fs=48000 Гц. Т.е. без подстройки нам нужно просто наложить ФНЧ и сделать децимацию с коэффициентом x73. Итого получаем 3504000 / 73 = 48000 Гц. Пока всё красиво.
Далее, допустим мы намеряли, что нам нужна частота дискретизации 47999.357 Гц. Но у нас есть возможность делать децимацию с коэффициентом 72, 73 или 74. Соответственно мы можем получить 48666.66(6) Гц, 48000 Гц или 47351.351 Гц. Требуемая частота в этот ряд не вписывается, т.к. разрешение координатной сетки сэмплов на частоте Z80 3.5 МГц недостаточно, нужно делать апсэмплинг до более высокой частоты дискретизации. А это уже приличная нагрузка на процессор.
А как происходит децимация с частоты Fclk Z80 до Fs аудиопотока? Как понимаю, от реализации этой части и будет зависеть уровень искажений. Частота Z80 не делится кратно на стандартные частоты звуковых карт (48 кГц или 44.1 кГц). Какой подход тут применяется?
Кратно и не надо делить, мы живем не только в среде целых чисел)
Есть дробные.
Как фильтровать, преобразовывать звуковой поток - это уже дело второе или третье. Не относящееся эмулируемой модели, а не к проверяемым сейчас функциям движка.
Lethargeek
10.03.2025, 12:10
ZXMAK, есть такое слово - "интерполяция" ;)
Кратно и не надо делить, мы живем не только в среде целых чисел)
Есть дробные.
Как именно? Чтобы получить хотя-бы целое значение 47999 прийдется делать апсэмплинг с 3.5 МГц до 168 ГГц (168188496000 Гц) - это нереально в реальном времени делать.
Как именно? Чтобы получить хотя-бы целое значение 47999 прийдется делать апсэмплинг с 3.5 МГц до 168 ГГц (168188496000 Гц) - это нереально в реальном времени делать.
Не надо так воспринимать задачи 'в лоб'. У всего есть адекватные по времени методы.
Впрочем, еще раз повторюсь - сейчас я не тестирую качество фильтров, качество эмуляции Z80. Это вторично.
Сейчас я тестирую только движок эмулятора на разных машинах.
Хотя, похоже, мы своим флудом всех распугали и актуальный пост уехал слишком далеко.
есть такое слово - "интерполяция"
Да. Но беда в том, что скорости самых топовых процессоров не хватит делать её для сигнала с частотой дискретизации 3.5 МГц.
Не надо так воспринимать задачи 'в лоб'. У всего есть адекватные по времени методы.
так это-ж самое интересное и есть - какие именно методы? :)
так это-ж самое интересное и есть - какие именно методы?
Я понимаю, что тебя в твоем эмуляторе сейчас интересует именно эта тема, но меня нет. И я даже заморачиваться пока не хочу над этим) Придет время писать фильтр, тогда и посмотрю, как сделать лучше)
- - - Добавлено - - -
Кстати, если мне будет не хватать для чего-то вычислительной мощности процессора (что вряд ли), можно перенести вычисления на вычислительные шейдеры графического процессора.
Как раз фильтры хорошо на нем делаются.
Вернее, дать пользователю выбор в настройках, на чем вычислять, на CPU или на GPU.
Например, сканлайны у меня сейчас считаются на шейдерах, что разгрузило процессор.
это разные "частоты", не путай их (и да, "таймер системы" тут - третий лишний)
если плавает частота дискретизации, то будет странным, если частота волны сигнала будет оставаться неизменной. Конечно она тоже будет плавать. В среднем она будет плавать в небольшом диапазоне, например если частота звуковухи плавает в пределах 500 Гц, то частота 1 кГц сигнала будет плавать в пределах 10 Гц.
Если системный таймер лишний, то относительно чего измеряются частоты дискретизации звуковой карты и видеоадаптера? Без него точно измерить не получится...
Enigmatic
10.03.2025, 13:11
Продублирую.
Windows 10, монитор Viewsonic vp930
Окно консоли на 50 hz :
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX(tm)-8120 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 3100MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5072)
Multimedia timer resolution: 2057 mks
Multimedia timer resolution: 1997 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce 9800 GT : VP930 Series
Mode: 1280 x 1024, 60.020000Hz
Frequences set: 60.02Hz, 75.03Hz
Hardware composition: not supported
Adapter[0]: Direct3D feature level 10.0
Allow tearing (variable framerate): supported
Shader model 5.0 not supported!
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Наушники (High Definition Audio Device)
WASAPI endpoint format: 48000 Hz, 16 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 2 ms
Audio Buffer Size: 1056 samples (22.0 ms)
480, 0, 0, 0, 480, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Audiobuffer padding: 29.1 ms
Total audio delay: 48.4 ms
Audio buffer is empty
Video thread priority = 1
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 2
Resync
*********@.@SoundProfiler: End
****.......*
На 100 Hz
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX(tm)-8120 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 3100MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5072)
Multimedia timer resolution: 1962 mks
Multimedia timer resolution: 1950 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce 9800 GT : VP930 Series
Mode: 1280 x 1024, 60.020000Hz
Frequences set: 60.02Hz, 75.03Hz
Hardware composition: not supported
Adapter[0]: Direct3D feature level 10.0
Allow tearing (variable framerate): supported
Shader model 5.0 not supported!
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Наушники (High Definition Audio Device)
WASAPI endpoint format: 48000 Hz, 16 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 2 ms
Audio Buffer Size: 1056 samples (22.0 ms)
480, 0, 0, 0, 480, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Audiobuffer padding: 58.3 ms
Total audio delay: 85.9 ms
Audio buffer is empty
Video thread priority = 1
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 2
Resync
***@********SoundProfiler: End
***
Скрин:
https://i.postimg.cc/rs3fx0W3/1x.png
100 Hz
https://i.postimg.cc/W125rvJ2/2x.png
частота звуковухи плавает в пределах 500 Гц,
С чего это частота звуковухи будет плавать?
- - - Добавлено - - -
Если системный таймер лишний, то относительно чего измеряются частоты дискретизации звуковой карты и видеоадаптера? Без него точно измерить не получится...
Конечно таймер не лишний, он является опорным для всех измерений.
- - - Добавлено - - -
Monitor[0] - NVIDIA GeForce 9800 GT : VP930 Series
Понятно, почему шейдеры 5.0 не поддерживаются. Видеокарте уже почти 20 лет)
С чего это частота звуковухи будет плавать?
А почему-бы ей не плавать? Рубидиевые стандарты частоты в звуковухи вроде не ставят :)
Осциллятор с печкой тоже не ставят - он дорогой и кушает несколько Ампер. TCXO имеет большие фазовые шумы, что для звуковухи плохо.
А обычные китайские кварцы гуляют так, что с телеграфным 500 Гц фильтром - попробуй еще поймай, а поймаешь - через пару минут уже уйдет из полосы приёма.
- - - Добавлено - - -
Значит отмечу, что не все Win7 имеют блокирующий вызов ожидания VBlank. Может быть от драйверов зависит.
И не стоит автоматически переключаться с ожидания VBlank на DWM на Win7.
это в настройках драйвера можно менять, в Windows была какая-то утилита в ней можно было все эти параметры менять, не помню точно уже название, помоему rivatuner. Можно также установкой переменной среды управлять, имя перменной зависит от драйвера.
А обычные китайские кварцы гуляют так, что с телеграфным 500 Гц фильтром - попробуй еще поймай, а поймаешь - через пару минут уже уйдет из полосы приёма.
Да ну даже близко нет такого даже с самыми отбитыми китайскими кварцами, чтобы оно из полосы 500 Гц за пару минут вылезло. Даже если частота кварцевого генератора уведена от центральной при помощи LC-цепочки, всё равно максимум до десятки герц может уехать. Для какого нибудь WSPR/FT8 это критично, но уши не услышат.
Да ну даже близко нет такого даже с самыми отбитыми китайскими кварцами, чтобы оно из полосы 500 Гц за пару минут вылезло. Даже если частота кварцевого генератора уведена от центральной при помощи LC-цепочки, всё равно максимум до десятки герц может уехать. Для какого нибудь WSPR/FT8 это критично, но уши не услышат.
может у вас осциллятор с термостабилизацией? У меня в тестах на обычном кварце 32 МГц частота за 1 минуту уплывала больше чем на 2 кГц (за счет нагрева платы). Это порядка 60 ppm. Отклонение у обычных кварцев допускается порядка 200-400 ppm.
А сейчас вместо кварцев могут и MEMS осцилляторы ставить для экономии, у них вообще частота гуляет как ... в проруби - подносишь руку и частота легко на 100 кГц улетает :)
CityAceE
10.03.2025, 14:15
Задача теста:
1. Заскриншотить окно анализатора звука, когда оно заполнится почти целиком и прислать сюда.
2. Заскриншотить окно консоли (копипастой) и тоже прислать сюда.
EmuStudio v0.9 test 1 (50Hz, AudioBuf 0.5 frame).exe
https://pic.maxiol.com/thumbs2/1741605245.780858384.20250310141332.png (https://pic.maxiol.com/?v=1741605245.780858384.20250310141332.png&dp=2)
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX-8370 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 4000MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 11 (10.0.22621.4830)
Multimedia timer resolution: 2431 mks
Multimedia timer resolution: 2008 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce GTX 970: 27G2G5
Mode: 1920 x 1080, 74.973000Hz
Frequences set: 50.00Hz, 59.94Hz, 60.00Hz, 74.97Hz
Hardware composition: fullscreen / cursor stretched
Monitor[1] - NVIDIA GeForce GTX 970: 2769M
Mode: 1920 x 1080, 60.000000Hz
Frequences set: 50.00Hz, 59.94Hz, 60.00Hz
Hardware composition: fullscreen / cursor stretched
Adapter[0]: Direct3D feature level 11.1
Allow tearing (variable framerate): supported
WASAPI system mix format: 96000 Hz, 32 bits, 2 channels, float
Endpoint name: Динамики (5- USB HIFI AUDIO)
WASAPI endpoint format: 96000 Hz, 24 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 96000 Hz, 32 bits, 2 channels
Device minimum period: 3 ms
Audio Buffer Size: 2112 samples (22.0 ms)
0, 0, 0, 0, 960, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Video thread priority = 1
Audio thread priority = 15
Audio buffer is empty
Audiobuffer padding: 3.3 ms
Total audio delay: 21.0 ms
Audio buffer is empty
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
Frames lost: 1
Viewport size changed: 812 x 572
*Resync
SoundProfiler: Init
может у вас осциллятор с термостабилизацией? У меня в тестах на обычном кварце 32 МГц частота за 1 минуту уплывала больше чем на 2 кГц (за счет нагрева платы). Это порядка 60 ppm. Отклонение у обычных кварцев допускается порядка 200-400 ppm.
Да не, без термостабилизации. Если говорить именно про кварцевые генераторы, последним брал копеечный SMD07050C4 , у него точность 10 ppm. Реально уход частоты с прогревом - единицы герц.
А почему-бы ей не плавать? Рубидиевые стандарты частоты в звуковухи вроде не ставят
Все у современных звуковух хорошо и стабильно)
- - - Добавлено - - -
это в настройках драйвера можно менять, в Windows была какая-то утилита в ней можно было все эти параметры менять, не помню точно уже название, помоему rivatuner. Можно также установкой переменной среды управлять, имя перменной зависит от драйвера.
Это не регулируется твикерами.
- - - Добавлено - - -
Frequences set: 50.00Hz, 59.94Hz, 60.00Hz, 74.97Hz
Моники поддерживают 50Гц. Лучше было бы на этой частоте попробовать)
Это не регулируется твикерами.
ну я настраивал в твикере.
Также vblank управляется через переменную среды.
Для Broadcom и прочих видеокарт переменная vblank_mode:
0 - Never synchronize with vertical refresh, ignore application's choice
1 - Initial swap interval 0, obey application's choice
2 - Initial swap interval 1, obey application's choice
3 - Always synchronize with vertical refresh, application chooses the minimum swap interval
Для NVIDIA драйверов переменная __GL_SYNC_TO_VBLANK
ну я настраивал в твикере.
Это линукс, линукс!
У меня винда) И линукс мне нафиг не нужен)
Это линукс, линукс!
я в Win 7 настраивал. Там тоже несколько вариантов было - принудительно вкл, принудительно выкл, по запросу приложения и еще вроде какие-то варианты. Не знаю, может в современных Windows уже нельзя, но в Win 7 можно было настраивать много параметров у драйвера, принудительно перегружая настройки приложения. Помню там даже готовые наборы настроек для большинства игр были - можно было просто комбо-боксом выбрать игру и под нее оптимальные настройки подтягивались.
У меня винда) И линукс мне нафиг не нужен)
жаль, я хотел попросить под Linux скомпилировать, но подозреваю там в коде наверное много завязок на DirectX?
DirectX это устаревшая и ограниченная библиотека, сейчас модно под Vulkan (https://www.vulkan.org/) писать.
Если на Linux будешь смотреть, обязательно попробуй Wayland - минимум оверхеда для GPU, fps сразу +20%. Под него Labwc легковесный композитор, если хочется со спецэффектами, то Wayfire.
жаль, я хотел попросить под Linux скомпилировать, но подозреваю там в коде наверное много завязок на DirectX?
DirectX это устаревшая и ограниченная библиотека, сейчас модно под Vulkan писать.
Не просто завязана, а он под нее и написан.
DX ничего не устарел. Просто для игр модно Vulkan. Как альтернатива.
- - - Добавлено - - -
я в Win 7 настраивал. Там тоже несколько вариантов было - принудительно вкл, принудительно выкл, по запросу приложения и еще вроде какие-то варианты.
Я не думаю, что пользователю стоит лезть в настройки драйверов. И так система позволяет гибко работать на уровне DirectX.
CityAceE
10.03.2025, 17:38
Моники поддерживают 50Гц. Лучше было бы на этой частоте попробовать)
https://pic.maxiol.com/thumbs2/1741617435.780858384.20250310173634.png (https://pic.maxiol.com/?v=1741617435.780858384.20250310173634.png&dp=2)
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX-8370 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 4000MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 11 (10.0.22621.4830)
Multimedia timer resolution: 1989 mks
Multimedia timer resolution: 2014 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce GTX 970: 27G2G5
Mode: 1920 x 1080, 50.000000Hz
Frequences set: 50.00Hz, 59.94Hz, 60.00Hz, 74.97Hz
Hardware composition: fullscreen / cursor stretched
Monitor[1] - NVIDIA GeForce GTX 970: 2769M
Mode: 1920 x 1080, 50.000000Hz
Frequences set: 50.00Hz, 59.94Hz, 60.00Hz
Hardware composition: fullscreen / cursor stretched
Adapter[0]: Direct3D feature level 11.1
Allow tearing (variable framerate): supported
WASAPI system mix format: 96000 Hz, 32 bits, 2 channels, float
Endpoint name: Динамики (5- USB HIFI AUDIO)
WASAPI endpoint format: 96000 Hz, 24 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 96000 Hz, 32 bits, 2 channels
Device minimum period: 3 ms
Audio Buffer Size: 2112 samples (22.0 ms)
0, 960, 0, 0, 0, 0, 960, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Video thread priority = 1
Audio buffer is empty
Audiobuffer padding: 5.0 ms
Total audio delay: 26.0 ms
Audio buffer is empty
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
Viewport size changed: 812 x 572
Resync
SoundProfiler: Init
***
Lethargeek
10.03.2025, 18:21
Да. Но беда в том, что скорости самых топовых процессоров не хватит делать её для сигнала с частотой дискретизации 3.5 МГц.
блин, уже не знаю, плакать или смеяться :v2_dizzy_facepalm: каких топовых процессоров тебе нужно посчитать менее 4000 значений в кадре?
причём всё это спокойно считается на лету, сразу же в финальную сетку для звуковухи, безо всяких переводов одной в другую
Да. Но беда в том, что скорости самых топовых процессоров не хватит делать её для сигнала с частотой дискретизации 3.5 МГц.
а нафига тебе сигнал с такой частотой? которую и не выведешь никуда
если плавает частота дискретизации, то будет странным, если частота волны сигнала будет оставаться неизменной.
наоборот - будет странным, если частота волны сигнала будет меняться
Если системный таймер лишний, то относительно чего измеряются частоты дискретизации звуковой карты и видеоадаптера? Без него точно измерить не получится...
нам найти нужно отношение промежутков звуковухи и видеоадаптера - первого ко второму
таймер сюда может внести только дополнительную погрешность за счёт лишнего этапа на конвертацию
проще говоря, если длина удава нужна именно в попугаях, так сразу в попугаях и измеряй
- - - Добавлено - - -
и да, вы так обсуждаете характеристики и нагрев, будто бы на реальном спеке ничего не уплывало и не "корёжилось"
так небось, еще и посильней уплывало - но что-то я не вижу праведных возмущений и призывов "нафиг такой реал" ;)
а еще это не эмулируется нигде :D а также вещи типа случайных отклонений в работе мембраны динамика
(каковые тоже могут быть, подозреваю, куда больше всех погрешностей расчётов для эмуляции))
Lethargeek, не поверишь, но на реальном спеке частота AY не плавала, и не менялась в угоду плавности вывода на экран. На плавность вывода часто было плевать, кроме разве что демок. И уж точно было плевать на рассинхронизацию звука и картинки на экрана на кадр-другой. Вообще вот абсолютно фиолетово если звук на 2 фрейма отстает. А вот если он начинает щёлкать или плавать по частоте - то такое вот вообще не нужно, какая бы плавная картинка не была.
Заскриншотить...
ссылка (https://transfiles.ru/te20h)
На плавность вывода часто было плевать, кроме разве что демок. И уж точно было плевать на рассинхронизацию звука и картинки на экрана на кадр-другой. Вообще вот абсолютно фиолетово если звук на 2 фрейма отстает.
Все зависит от того, что тебе интересно на Спектруме.
Мне, например, очень важны демки, и их плавность. Интрушки.
Да и игр покадровых немало.
Отставание звука на 2 кадра (40мс) это уже ощутимо.
Когда играешь в игры, ориентируешься не только на изображение, но и на звук. Если он отстает, это может снизить эффективную реакцию в игре.
- - - Добавлено - - -
А вот если он начинает щёлкать или плавать по частоте - то такое вот вообще не нужно, какая бы плавная картинка не была.
Конечно звук не должен плавать)
- - - Добавлено - - -
ссылка (https://transfiles.ru/te20h)
Образцово-показательные замеры )
- - - Добавлено - - -
нам найти нужно отношение промежутков звуковухи и видеоадаптера - первого ко второму
таймер сюда может внести только дополнительную погрешность за счёт лишнего этапа на конвертацию
проще говоря, если длина удава нужна именно в попугаях, так сразу в попугаях и измеряй
Не совсем так.
Таймер высокого разрешения очень стабильная и точная вещь.
Он должен быть опорой для любых измерений.
Относительно него я измеряю частоту кадров, и относительно него же частоту семплов.
Именно опираясь на стабильность таймера получается измерять частоту кадров и семплов с высокой точностью.
Если же пытаться измерить частоту семплов опираясь на не очень стабильный источник - частоту кадров, то может получиться значительно хуже.
Сами по себе частоты кадров и семплов тоже высокостабильные, но информацию о них нельзя получить вовремя, она может гулять.
Lethargeek
10.03.2025, 22:15
Lethargeek, не поверишь, но на реальном спеке частота AY не плавала,
не поверю - просто ты не замечал этого :p если уплывал кварц - то и остальное всё вместе с ним
- - - Добавлено - - -
Не совсем так.
Таймер высокого разрешения очень стабильная и точная вещь.
Он должен быть опорой для любых измерений.
Относительно него я измеряю частоту кадров, и относительно него же частоту семплов.
Именно опираясь на стабильность таймера получается измерять частоту кадров и семплов с высокой точностью.
сам себе ответь на вопрос - для ЧЕГО конкретно ТАКАЯ точность?
Если же пытаться измерить частоту семплов опираясь на не очень стабильный источник - частоту кадров, то может получиться значительно хуже.
а может и не получиться - если чётко представлять себе, что мы замеряем и для чего
Сами по себе частоты кадров и семплов тоже высокостабильные, но информацию о них нельзя получить вовремя, она может гулять.
да и пусть себе гуляет, на то существует буферизация и допустимый коридор на эти гуляния
кол-во сэмплов нужно подкорректировать, только если норовит из коридора выползти в одну сторону
возвращаем среднее в коридор, и соотношение высокостабильных частот железа устаканится без всяких точных замеров
сам себе ответь на вопрос - для ЧЕГО конкретно ТАКАЯ точность?
Чтобы ничего не плавало и работало, как часы)
- - - Добавлено - - -
без всяких точных замеров
Без точных замеров гуляние будет сильнее, иначе оно не будет догонять убегание одного от другого.
А у меня из-за очень точных замеров, гуляние 0.1Гц (это 0.0001% при 96000Гц). А может быть и еще ниже.
Lethargeek
10.03.2025, 22:39
Чтобы ничего не плавало и работало, как часы)
так оно и с меньшей тоже не плавает (ну, если винда не сильно протормозила, но замеры в таком случае не помогут)
Без точных замеров гуляние будет сильнее, иначе оно не будет догонять убегание одного от другого.
А у меня из-за очень точных замеров, гуляние 0.1Гц (это 0.0001% при 96000Гц). А может быть и еще ниже.
да хоть до фемтосекунды обзамеряйся, всё равно разница между двумя соседними кадрами ну никак не может оказаться меньше одного сэмпла :D
то есть никакие не 0.0001% а на 2-3 порядка больше (для 48Кгц ~0.1% для 192Кгц ~0.025%)
(ну, если винда не сильно протормозила, но замеры в таком случае не помогут)
У меня помогают)
- - - Добавлено - - -
да хоть до фемтосекунды обзамеряйся, всё равно разница между двумя соседними кадрами ну никак не может оказаться меньше одного сэмпла
Я не опираюсь на разницу между двумя кадрами. Она очень грубая.
Я опираюсь на статистику на длинном окне, и результат там дробный и очень стабильный.
Lethargeek, если уплывал кварц - он уплывал ненамного и уплывал медленно, и однонаправленно. А то что тут как «подгонка» предлагается - чревато не просто уплыванием, а чем-то похуже, что каждые несколько фреймов частота будет меняться туда-сюда. Это без слышимых последствий не обойдется.
Вообще в эмуляции AY главное - чтобы тон не плавал и ресэмплинг был без артефактов, а конкретная опорная частота - без разницы. Кадровая частота (частота прерываний, по которым музыка и играет) может плавать на фрейм туда-сюда, это вообще никто не заметит.
Bedazzle
11.03.2025, 00:38
Хотя, похоже, мы своим флудом всех распугали
Не, я сижу на заборе, поглядываю.
Поставил себе виртуальные аудиодрайвера (Virtual Audio Cable), которые позволяют записать сразу в цифре то, что выдается на аудиовыход.
Оцифровал, посмотрел в спектре в Adobe Audition - все идеально стабильно.
Заодно интересно стало, почему у 'raphaelgoulart - surprisingly NOT four twenty (2014) (Multimatograf X, 2).z80' такой хороший звук. Занимательно было сравнить с обычными многоголосными плеерами.
Кроме того, решил проблему, заключающуюся в том, что у меня эмулятор не понимал моно-выходы (ну негде было протестировать). А с виртуальным драйвером сделал моно-выход и тоже протестировал, тоже заработало.
Таймер высокого разрешения очень стабильная и точная вещь.
стабильность, точность и выское разрешение - это разные вещи. Стабильность нужно проверять сравнивая с тем-же цезиевым или рубидиевым осциллятором, точность- сравнивая с поверенным рубидиевым осциллятором. Системный таймер от обычного кварца тактируется, поэтому о высокой точности и стабильности для него нельзя говорить, у него такое-же гуляние частоты, как и у обычных кварцев. А вот высокое разрешение - это да, он позволяет видеть временные интервалы с очень высоким разрешением.
В данном случае абсолютная точность не имеет значения. А вот стабильность и разрешение важны.
- - - Добавлено - - -
да и пусть себе гуляет, на то существует буферизация и допустимый коридор на эти гуляния
кол-во сэмплов нужно подкорректировать, только если норовит из коридора выползти в одну сторону
возвращаем среднее в коридор, и соотношение высокостабильных частот железа устаканится без всяких точных замеров
При таком подходе выпадание одного видео-кадра (скажем из-за нагрузки на систему) приведет к довольно сильному изменению частот, которое можно будет заметить на слух. Тоже самое и с выпаданием аудио-кадра.
Системный таймер в данном случае лучше тем, что он не останавливается если система по какой-то причине лагает, если процессор не успел чтото обработать и т.п. Он продолжает непрерывный отсчет, поэтому на него удобно ориентироваться для оценки реальной скорости.
Lethargeek
11.03.2025, 08:16
У меня помогают)
ну, и как они тебе помогут, если вдруг винда решила срочно чем-то шибко важным заняться и подвесила связь со звуковухой на пару порций?
Я не опираюсь на разницу между двумя кадрами. Она очень грубая.
Я опираюсь на статистику на длинном окне, и результат там дробный и очень стабильный.
но слышно-то именно разницу между кадрами (а точней, для обсуждаемых величин уровня долей процента НЕ слышно, но некоторые тут веруют, будто слышно)
если уплывал кварц - он уплывал ненамного и уплывал медленно, и однонаправленно. А то что тут как «подгонка» предлагается - чревато не просто уплыванием, а чем-то похуже, что каждые несколько фреймов частота будет меняться туда-сюда. Это без слышимых последствий не обойдется.
а доли процента столь же однонаправленно и очень далеко не каждый фрейм - типа, не медленно? ты опять сам не понимаешь, что говоришь
и на 146% уверен, что в реале слепой тест провалишь даже на чистом тоне, не говоря уж о типичной скрипящей или булькающей музычке
При таком подходе выпадание одного видео-кадра (скажем из-за нагрузки на систему) приведет к довольно сильному изменению частот, которое можно будет заметить на слух. Тоже самое и с выпаданием аудио-кадра.
повторю: при такой занятости системы, что она аж не успевает vsync (!) сообщать, и со звуком тоже ничего хорошего не случится - при любой синхронизации и замерах
Системный таймер в данном случае лучше тем, что он не останавливается если система по какой-то причине лагает, если процессор не успел чтото обработать и т.п. Он продолжает непрерывный отсчет, поэтому на него удобно ориентироваться для оценки реальной скорости.
ну, продолжает; ну, увидел ты, что "случилось стрррашное" - ну, и как оно тебе поможет? уже случилось ведь, и заметил это юзер без всяких таймеров
ну, продолжает; ну, увидел ты, что "случилось стрррашное" - ну, и как оно тебе поможет? уже случилось ведь, и заметил это юзер без всяких таймеров
ориентируясь на системный таймер можно увидеть когда кадр был пропущен или что еще есть время усыпить поток до следующего фрейма, отдав процессор нуждающимся процессам - за такую услугу планировщик ядра будет реже прерывать поток и раньше будить его.
не говоря уж о типичной скрипящей или булькающей музычке
Ну если брать в пример современные *****треки в которых кроме хрипящей огибы ничего и не слышно - да, конечно, не определю.
Но с нормальной музыкой без огибы, вполне слышно что "что-то не так".
ну, и как они тебе помогут, если вдруг винда решила срочно чем-то шибко важным заняться и подвесила связь со звуковухой на пару порций?
1. Аудиопоток у меня имеет сверхвысокий приоритет, и его подвесить практически невозможно.
2. Благодаря таймеру высокого разрешения я буду точно знать, на сколько винда подвесила систему, чтобы сгенерировать не 1 новый фрейм (условно) а столько, на сколько тормознула винда.
- - - Добавлено - - -
точность- сравнивая с поверенным рубидиевым осциллятором.
Давай не будем ударяться в перфекционизм в вакууме)
Давай не будем ударяться в перфекционизм в вакууме)
сейчас рубидиевый осциллятор у многих радиолюбитлей есть. Я тоже хотел взять, но когда их по дешевке продавали не успел купить, потом на них спрос поднялся и цена выросла уже не так интересно стало.
Как любительская альтернатива есть GPSDO - стандарт частоты работающий от GPS. :)
Обратил внимание, что некоторые плееры под бипер играют только в порт бипера, некоторые и в порт бипера и в порт магнитофона.
А вот некоторые играют одни инструменты в порт бипера, а другие в порт магнитофона. Например, я это заметил в мелодиях Shiru - Falling Alseep и Freezing Point.
Интересно, какое у бипера и порта магнитофона должно быть соотношение громкостей на разных реалах?
- - - Добавлено - - -
Попробовал на этих двух мелодиях разнести бипер и магнитофон в разные каналы - левый и правый, и получилось прям настоящее стерео на бипере)
Lethargeek
11.03.2025, 18:33
ориентируясь на системный таймер можно увидеть когда кадр был пропущен
"больной перед смертью потел? - да, доктор. - это хорошо, это очень хорошо!" (c)
или что еще есть время усыпить поток до следующего фрейма, отдав процессор нуждающимся процессам - за такую услугу планировщик ядра будет реже прерывать поток и раньше будить его.
и какое отношение это всё имеет к синхронизации аудио и видео? которая с фактом пропуска уже пошла известным маршрутом
- - - Добавлено - - -
1. Аудиопоток у меня имеет сверхвысокий приоритет, и его подвесить практически невозможно.
это у тебя)) а у винды свои приоритеты, как и у драйвера) и железо тоже бывает разное, механические диски еще в ходу
2. Благодаря таймеру высокого разрешения я буду точно знать, на сколько винда подвесила систему, чтобы сгенерировать не 1 новый фрейм (условно) а столько, на сколько тормознула винда.
с учётом п.1 тебе скорей нужно пропускать, а не генерировать, но не суть
юзер-то в любом случае заметит, что хрень случилась - не услышит, так увидит запинку
стало быть, синхронизация, несмотря на все сверхточные замеры, уже нарушена
- - - Добавлено - - -
Ну если брать в пример современные *****треки в которых кроме хрипящей огибы ничего и не слышно - да, конечно, не определю.
Но с нормальной музыкой без огибы, вполне слышно что "что-то не так".
пххх, да чем чище звук, тем скорее ты услышишь "что-то не так", даже если объективно всё было "так" :v2_dizzy_biggrin2:
на чистом тоне просто головой достаточно повертеть, вот совсем слегка, чтобы субъективно звук изменился
или просто вслушиваться подольше - и начнёт мерещиться всякое, высота начнёт пульсировать или громкость
точность слуха - плавает сильней корректировки на пару сэмплов
стало быть, синхронизация, несмотря на все сверхточные замеры, уже нарушена
Ты хоть раз запустил мой эмулятор и попробовал нагрузить систему? )
Lethargeek
11.03.2025, 18:43
Ты хоть раз запустил мой эмулятор
выше говорил же, с одним только бипером смысла нет
и попробовал нагрузить систему? )
а чего там пробовать, и так знаю, что когда винде приспичит зохавать винт, то на долгие секунды повиснет ВСЁ, вплоть до указателя мыши
некоторые плееры под бипер играют только в порт бипера, некоторые и в порт бипера и в порт магнитофона.
Где-то была статья где этот "трюк" рассматривался как способ добиться большей разрядности чем просто [0,1]. Статью не могу найти.
Где-то была статья где этот "трюк" рассматривался как способ добиться большей разрядности чем просто [0,1]. Статью не могу найти.
2-битный covox
Вот здесь (https://speccy.info/%D0%91%D0%B8%D0%BF%D0%B5%D1%80) говорится кое-что:
Схема управления динамиком, реализованная оригинальной в ULA, представляет собой нелинейный ЦАП - помимо бита D4 на уровень выходного напряжения также влияет бит D3. Теоретически это позволяет получить 4 уровня сигнала, однако в существующих программах эта особенность не использовалась. В большинстве клонов ZX Spectrum схема управления динамиком имеет отличающуюся реализацию и подобная возможность на них отсутствует.
Вот здесь говорится кое-что:
это всё фантазии BlackCat`a.
в твоей-же теме https://zx-pk.ru/threads/2685-ula.html?p=110908&viewfull=1#post110908
это всё фантазии BlackCat`a.
в твоей-же теме https://zx-pk.ru/threads/2685-ula.html?p=110908&viewfull=1#post110908
Значит Ширу использовал бипер и магнитофон просто в качестве стерео? Это хорошо бы где-то узнать.
Lethargeek
12.03.2025, 01:46
А вот некоторые играют одни инструменты в порт бипера, а другие в порт магнитофона. Например, я это заметил в мелодиях Shiru - Falling Alseep и Freezing Point.
музыка в Dark Fusion отличается - на магнитофон не идут ударники
хотя, может, просто так получилось, упрощался код или данные
музыка в Dark Fusion
там кстати имитация mod`a с Амиги
https://www.lemonamiga.com/games/details.php?id=1935
музыка в Dark Fusion отличается - на магнитофон не идут ударники
хотя, может, просто так получилось, упрощался код или данные
Звучит действительно так.
Чтобы это понять, надо анализировать плеер)
- - - Добавлено - - -
это всё фантазии BlackCat`a.
Почему фантазии? В теме приводились напряжения на выходе при разных комбинациях 3 и 4 бита, и там видно несколько уровней.
В общем, пока вопрос остается открытым, что хотел Ширу получить в своих мелодиях используя бипер и магнитофон одновременно. То ли стерео, то ли больше уровней сигнала.
Сделал новый режим, для случая, когда частота кадров монитора не кратна частоте эмулируемой модели Спектрума.
Он получился еще сложнее, чем синхронный режим, хотя, казалось бы, должно быть проще, т.к. нам не нужна синхронность с кадровой разверткой монитора.
В общем, если идти стандартным путем, то да.
Но я пошел другим путем. Сделал этот режим, как расширение того же синхронного режима. Зачем же все так сложно?
А вот зачем. При классическом подходе к синхронизации, когда, например, частота кадров монитора 100.1Гц, а частота эмулируемой модели 50.0Гц, изображение на протяжении нескольких секунд или даже десятков секунд будет двигаться синхронно и плавно, но при приближении к моменту, когда надо выкинуть лишний кадр, изображение начнет несколько раз подергиваться туда-сюда (на примере скролла). Это можно посмотреть в качественных эмуляторах типа ZXMAK.
Про эмуляторы с некачественной синхронизацией (EmuZWin и Spectaculartor) можно даже не упоминать.
При моем же подходе при набегании лишнего кадра будет всего один дерг скроллинга, а дальше опять несколько секунд или десятков секунд плавного движения.
Минусом данного подхода является, что он дает задержку звука 10мс (при 100Гц) для демпфирования скачка. На мой взгляд вообще не критично.
На таких частотах же, как 60Гц - все все всегда плохо, с любой синхронизацией. Слишком большое колебание (каждый 5-й кадр удваивается).
На частотах типа 75Гц - это уже получше. Да, идет мелкая дрожь, но она стабильная.
Ну а на более высоких частотах, или близких к кратным, там заметна разница.
Кстати, на частотах 120Гц и выше даже несинхронный режим смотрится практически плавно. О синхронном и говорить нечего.
По поводу дрожания частоты семплов, о которой шла дискуссия.
Померил точнее, она в моем варианте где-то в районе 0.00002%/кадр. Чтобы это услышать, нужно синхрофазатроном делать спектральный анализ)
Версию пока не выкладываю, потому что все равно интереса у народа мало. Просто рассказываю.
А возможность в мультиплеер через интернет играть не завезут? Уже 100500 эмуляторов сделали, а мультиплеерную поддержку только Кладов в своем emuzwin озаботился сделать.
Lethargeek
16.03.2025, 10:49
По поводу дрожания частоты семплов, о которой шла дискуссия.
Померил точнее, она в моем варианте где-то в районе 0.00002%/кадр. Чтобы это услышать, нужно синхрофазатроном делать спектральный анализ)
значение внутренней переменной в принципе услышать невозможно :D а реальная разница в конкретном кадре при любой точности замеров так и остаётся той же, как я сказал :p
А возможность в мультиплеер через интернет играть не завезут? Уже 100500 эмуляторов сделали, а мультиплеерную поддержку только Кладов в своем emuzwin озаботился сделать.
Нет, такого не планировал.
- - - Добавлено - - -
а реальная разница в конкретном кадре при любой точности замеров так и остаётся той же, как я сказал
Реальная разница такова, как ты это сделаешь.
Зависит от алгоритма.
Не будем разводить тут опять флейм, а то все полезные сообщения уедут.
CityAceE
16.03.2025, 12:40
В общем, пока вопрос остается открытым, что хотел Ширу получить в своих мелодиях используя бипер и магнитофон одновременно. То ли стерео, то ли больше уровней сигнала.
Уверен, что ivagor сможет дать раскладки для этого, так как он использует аналогичный подход в своих экспериментах (https://zx-pk.ru/threads/28132-bipernaya-muzyka-na-vektore-06ts.html) с биперной музыкой для Вектора.
Но я думаю, что использование дополнительно магнитофонного выхода позволяет, как минимум, удвоить количество голосов в биперной музыке.
Интересно, будет ли эмулятор полноценно работать в Linux под wine)
Интересно, будет ли эмулятор полноценно работать в Linux под wine)
Если у кого-то есть wine, хорошо бы запустить.
Предыдущий (который был под DirectDraw и DirectSound) работал. Но он был проще.
Lethargeek
16.03.2025, 15:55
Реальная разница такова, как ты это сделаешь.
Зависит от алгоритма.
нет, железо не зависит от алгоритма, так что "сделать" можно только в рамках его дискретности
хорошо, когда минимальная дискретность такая, что на слух одиночная корректировка неразличима
Не будем разводить тут опять флейм,
вот и не вводи народ в заблуждение :p
вот и не вводи народ в заблуждение
Хочется ответить, но не буду, чтобы не разводить флейм)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot