Важная информация

User Tag List

Страница 14 из 24 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 234

Тема: Новый эмулятор ZX Spectrum - Спектрамин

  1. #131
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,663
    Спасибо Благодарностей отдано 
    1,257
    Спасибо Благодарностей получено 
    1,890
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    в Win7 прекрасно приходят нотификации проигрываемой позиции. В ZXMAK2 они используются для подкидывания новой порции данных в циркулярный буфер. Правда верить им нельзя, видимо на нижнем уровне у системы есть своя буферизация, поэтому нотификации могут приходить по две штуки сразу не равномерно во времени.
    Не видимо, а точно есть. У системы буфер размером в 10мс (при частоте семплов 48кГц - 480 семплов, соответственно).
    Его размер и загрубляет возможность точной синхронизации.

    - - - Добавлено - - -

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Зачем отслеживать текущую позицию до байта не совсем понятно, т.к. произвести синхронизацию потоков с достатой скоростью (1/44100 = 0.0000226 сек) не получится.
    В системе до Win7 на аудиокарточке Audigy, которая поддерживала информацию о позиции с точностью до семпла, у меня идеально получалось синхронизироваться.

    - - - Добавлено - - -

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Если интересно, можете глянуть как эти вещи ZXMAK2 обрабатывает. Смотреть с включенным логом, там будут сообщения появляться о переключении на другой дисплей/частоту развёртки во время перемещения окна по пространству рабочего стола
    Лучше расскажи словами, интересно)

    - - - Добавлено - - -

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

    - - - Добавлено - - -

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    85 Гц - это очень неудачная частота для 50 Гц развёртки
    Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)

  2. #132
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,645
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)
    Я бы сказал, какой эмулятор дружественнее к 85Гц. Как я уже сказал, у меня на 60Гц подергивания примерно одинаковые на всех эмулях (и всех режимах синхры у ZXMAK2).

  3. #133
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,591
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    238
    Поблагодарили
    187 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Десяток? Что ты с ними делаешь? Выкидываешь?
    не выкидываю! а меняю между сэмплами промежутки, получая в разных фреймах разное количество сэмплов

    Цитата Сообщение от Titus Посмотреть сообщение
    Это очень много и на слух слышно.
    меньше 2% и ничего ты не услышишь - волна-то та же, звук не потерялся, просто сжат немного или растянут

    Цитата Сообщение от Titus Посмотреть сообщение
    На моем компьютере (Win8.1) примерно раз в несколько секунд слышен щелчок. Видимо, как раз твое несхождение аудиобуфера корректируется.
    нет, проверено, причина - в кривых дровах (известная проблема винды 7+, даже на системных звуках щелчки бывают)
    ну, либо антивирь в песочнице запускает, но это вряд ли (тогда постоянно бы трещало, скорей всего)

    - - - Добавлено - - -

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    проблема там в том, что видеокарта и звуковая карта тактируются от разных кварцев, которые не синхронизированы между собой и у них плавают частота и фаза от температуры, у каждого по своему (да и температура у видеокарты и звуковухи разная). Поэтому ошибка со временем всегда будет набегать.
    нет проблемы, набегать ничего не будет, разве что винда затупит очень надолго, но тогда уже и видео тормозит

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Тут уж надо выбирать что пропускать при критическом набегании ошибки - либо звуковой, либо видеокадр. Поэтому в ZXMAK2 сделан выбор источника синхронизации. При синхре от звука пропускаются видеокадры, а звук поддерживается стабильным. При синхре от видео наоборот. При синхре от времени выпадает и то и другое, в зависимости от того где частота больше уходит от системного таймера.
    еще раз - ПРОПУСКАТЬ ничего НЕ НАДО, вместо этого динамически слегка меняем частоту оцифровки (не воспроизведения!)

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    кратность не имеет смысла. Железо проигрывает циркулярный буфер, писать в него можно порции любого размера (в пределах размера буфера разумеется). Главное помнить, что при наложении записи на текущую позицию воспроизведения, будут возникать артефакты воспроизведения. Поэтому некоторый участок, где сейчас примерно идёт воспроизведение лучше не трогать.
    здесь противоречия никакого, на железо отправляем данные из программной очереди по готовности железа
    в конец очереди добавляем порции покадрово, корректируя по текущему размеру очереди
    если размер очереди стал маловат - растягиваем волну, великоват - ужимаем
    главное - подобрать удачно эти границы
    Прихожу без разрешения, сею смерть и разрушение...

  4. #134
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,663
    Спасибо Благодарностей отдано 
    1,257
    Спасибо Благодарностей получено 
    1,890
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    нет, проверено, причина - в кривых дровах (известная проблема винды 7+, даже на системных звуках щелчки бывают)
    ну, либо антивирь в песочнице запускает, но это вряд ли (тогда постоянно бы трещало, скорей всего)
    Почему же тогда все остальные эмули у меня играют хорошо?

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    меньше 2% и ничего ты не услышишь - волна-то та же, звук не потерялся, просто сжат немного или растянут
    2% - это гигантская погрешность. По музыкальным меркам - это четверть тона.

    Хотел бы и на некоторые другие твои тезисы возразить, но чувствую, что завязну в болоте несостыковок понимания проблем эмуляторописания)

  5. #135
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,591
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    238
    Поблагодарили
    187 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Почему же тогда все остальные эмули у меня играют хорошо?
    мало пробовал "остальных" или не прислушивался; я вот слышал даже в системных звуках; RVM проверь, говорят, что он трещит точно так же
    мб дело в том, что SDL вызывает кривую функцию, так как на проблемном компе у меня треск был даже при проигрывании тишины из очень длинного буфера
    помогло там переключение частоты динамиков на 44100гц (это при том, что в эмуляторе 48000гц)) - сразу перестало трещать везде

    Цитата Сообщение от Titus Посмотреть сообщение
    2% - это гигантская погрешность. По музыкальным меркам - это четверть тона.
    во-1, "меньше 2%" (и на практике, опять же, много меньше 1/10)
    во-2, нихрена ты не услышишь и не поймёшь за "гигантский" промежуток в пару-другую фреймов, на которых будет коррекция

    Цитата Сообщение от Titus Посмотреть сообщение
    Хотел бы и на некоторые другие твои тезисы возразить, но чувствую, что завязну в болоте несостыковок понимания проблем эмуляторописания)
    а ты рискни, не сдерживай себя
    Прихожу без разрешения, сею смерть и разрушение...

  6. #136
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,663
    Спасибо Благодарностей отдано 
    1,257
    Спасибо Благодарностей получено 
    1,890
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    во-1, "меньше 2%" (и на практике, опять же, много меньше 1/10)
    во-2, нихрена ты не услышишь и не поймёшь за "гигантский" промежуток в пару-другую фреймов, на которых будет коррекция
    То, что для одного приемлемо, для другого - нет)

    Для меня нужно идеальное схождение. И оно у меня было в EmuStudio)

  7. #136
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #137
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)
    это не может быть показателем, т.к. тут дело в физических свойствах волн.
    Сигнал с дискретностью 50 Гц физически невозможно перевести в 85 Гц дискретность без побочных эффектов.

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

    Не знаю, есть ли эмуляторы которые делают полноценную передискретизацию видеопотока вверх до нужной частоты с восстановлением сигнала по sinx/x (для каждого пикселя по отдельности). Это можно сделать на шейдерах.

    Но в любом случае результат будет отличаться от оригинала с 50 Гц разверткой.

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    нет проблемы, набегать ничего не будет, разве что винда затупит очень надолго, но тогда уже и видео тормозит
    проблема есть. Видеокарта и звуковая карта тактируются от разных кварцевых генераторов, никак не синхронизированных.
    Ошибка эта будет обусловлена начальным несоответствием и нестабильностью частот от температуры и времени.
    Причём ошибка эта во времени может гулять, как в одну сторону так и в другую, в зависимости от температуры и фазы Луны
    По этой-же причине подстроиться под неё невозможно, потому что эта ошибка постоянно меняется во времени.

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    еще раз - ПРОПУСКАТЬ ничего НЕ НАДО, вместо этого динамически слегка меняем частоту оцифровки (не воспроизведения!)
    эффект от подобной подстройки может быть даже хуже, чем пропуск при накоплении ошибки.
    Во первых будет проблема с динамической подстройкой, её не так просто расчитать из-за отсутствия точных и стабильных временных меток.
    Во вторых небольшое изменение частоты дискретизации исходного сигнала приведёт к плаванию тональности звука. Это уже будет совсем не то пальто

    Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.
    Последний раз редактировалось ZXMAK; 12.05.2019 в 13:36.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  9. #138
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,663
    Спасибо Благодарностей отдано 
    1,257
    Спасибо Благодарностей получено 
    1,890
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.
    Проблема решаема, и, как я уже говорил неоднократно, прекрасно решалась мною на практике в EmuStudio, когда был доступ к позиции буфера воспроизведения с точностью до семпла. Но с переходом на Win7 - это все накрылось, а до новой точной синхронизации через WASAPI Exclusive еще у меня руки не дошли, однако тесты, проверяющие, поддерживает ли она точный указатель буфера воспроизведения, я делал. Все работает хорошо.

    - - - Добавлено - - -

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    это не может быть показателем, т.к. тут дело в физических свойствах волн.
    Сигнал с дискретностью 50 Гц физически невозможно перевести в 85 Гц дискретность без побочных эффектов.

    Артефакты можно уменьшить за счёт фильтров, но это уже будет не совсем то. Чтобы понять разницу можно вспомнить как выглядит прямая линия и линия под углом на пиксельном дисплее. Прямая линия всегда будет выглядеть идеально, а вот линия под углом будет с алиасами. Алиасы можно убрать с помощью фильтра и изображение будет выглядеть лучше, но результат будет отличаться от прямой линии.
    Однако, в твоем эмуляторе в двух режимах из трех артефакты 50Гц/85Гц практически сведены на нет.
    А во всех остальных протестированных мною эмулях - дерганье очень заметное.

    Сомневаюсь, что стоит пропускать пиксельную матрицу через фильтры. Мне кажется, получим какое-нибудь мыло.

  10. #139
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Проблема решаема, и, как я уже говорил неоднократно, прекрасно решалась мною на практике в EmuStudio, когда был доступ к позиции буфера воспроизведения с точностью до семпла.
    нет, подстройка частоты сэмплирования источника ведёт к плавающему частотному искажению звука.
    Это не решение. Это попытка спрятать проблему путём добавления новых артефактов.

    Цитата Сообщение от Titus Посмотреть сообщение
    Однако, в твоем эмуляторе в двух режимах из трех артефакты 50Гц/85Гц практически сведены на нет.
    А во всех остальных протестированных мною эмулях - дерганье очень заметное.
    у меня просто заполнение кадров поддерживается по возможности равномерным, а не случайно куда кадр попадёт.

    Цитата Сообщение от Titus Посмотреть сообщение
    Сомневаюсь, что стоит пропускать пиксельную матрицу через фильтры. Мне кажется, получим какое-нибудь мыло.
    не совсем так. Суть в том, чтобы восстановить форму изменения сигнала каждого пиксела по sinx/x интерполяции, а затем по полученной форме пересчитать новые точки дискретизации для другой частоты.

    ВЧ составляющие спектра пикселя после такой передискретизации конечно точно восстановить не получится. Но надо попробовать, по идее должно неплохо смотреться. Проблема только в большом количестве вычислений. По сути апсемплинг 76800 сигналов в реалтайме (320x240 пикселей), так что без шейдеров тут пожалуй не обойтись
    Последний раз редактировалось ZXMAK; 12.05.2019 в 15:10.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  11. #140
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    проблема есть. Видеокарта и звуковая карта тактируются от разных кварцевых генераторов, никак не синхронизированных.
    Ошибка эта будет обусловлена начальным несоответствием и нестабильностью частот от температуры и времени.
    Причём ошибка эта во времени может гулять, как в одну сторону так и в другую, в зависимости от температуры и фазы Луны
    По этой-же причине подстроиться под неё невозможно, потому что эта ошибка постоянно меняется во времени.
    Монитор (телевизор) тоже тактируется от своего отдельного генератора, частота которого не совпадает с клоком источника видеосигнала.
    В этом можно быть уверенным на 147%, однако Вас почему-то не смущает его ресинхронизация с источником каждую строку.
    Кстати, эффект называется "джиттер"


    Цитата Сообщение от ZXMAK Посмотреть сообщение
    эффект от подобной подстройки может быть даже хуже, чем пропуск при накоплении ошибки.
    Во первых будет проблема с динамической подстройкой, её не так просто расчитать из-за отсутствия точных и стабильных временных меток.
    Во вторых небольшое изменение частоты дискретизации исходного сигнала приведёт к плаванию тональности звука. Это уже будет совсем не то пальто
    Вот Вы очень удачный пример привели про прямую линию с углом расположения кратным 90 градусов и с углом не кратным этому значению.
    На матрице 8х8 выглядеть будет ужасно, а на экране 4к уже вроде как бы и ничего...


    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.
    В итоге: Земля - блин, книга судеб давно написана, можно идти стреляться.

Страница 14 из 24 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Новый эмулятор на Javascript (jVGS)
    от Epsilon в разделе Эмуляторы
    Ответов: 15
    Последнее: 22.01.2018, 13:06
  2. Ответов: 8
    Последнее: 10.03.2016, 10:29
  3. Новый эмулятор ПК-01 ЛЬВОВ.
    от MaratBest в разделе Львов
    Ответов: 10
    Последнее: 17.10.2013, 15:24
  4. Новый глобальный эмулятор!!
    от copperfeet в разделе Эмуляторы
    Ответов: 1
    Последнее: 12.02.2009, 20:54
  5. ZX68 - новый эмулятор Спектрума для PalmOS
    от CityAceE в разделе Эмуляторы
    Ответов: 19
    Последнее: 15.02.2006, 14:12

Ваши права

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