Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Вектор (http://zx-pk.ru/forumdisplay.php?f=55)
-   -   Вектор-06Ц: Эмуляция - КР580ВИ53 (http://zx-pk.ru/showthread.php?t=11029)

ivagor 31st October 2009 14:31

Quote:

Originally Posted by b2m (Post 229106)
Ну мы же вроде договорились, что поддержка внешнего ПЗУ более 32Кб - это не есть гуд. Я и переделал, уже недели две как тому назад.

Точно, я забыл, вопрос снят.

b2m 31st October 2009 14:34

Ну вот теперь видно, что 50Гц были из-за таймера. Но очень уж они тихие, у меня гораздо громче получается. Ну и фиг с ним.

---------- Post added at 15:34 ---------- Previous post was at 15:33 ----------

Кстати, используется как раз режим 2 таймера.

ivagor 31st October 2009 14:36

Quote:

Originally Posted by b2m (Post 229108)
Кстати, используется как раз режим 2 таймера.

да я уж посмотрел :). Но в эксолоне менее слышно, там более высокочастотный шум получается, наверно поэтому.

b2m 31st October 2009 14:42

Не знаю, у меня в эксолоне вообще никакого треска нет.

---------- Post added at 15:42 ---------- Previous post was at 15:40 ----------

Разница в том, что в эксолоне действительно "тычёк в один такт", а в clrs сотни тактов.

ivagor 31st October 2009 14:54

"Режисерская версия саундтрека exolonа".
1. Сначала пару-тройку секунд мигает РУС/ЛАТ, я нажимаю БЛК+СБР
2. Распаковывается, показывает текст, нажимаю РУС/ЛАТ
3. Переход на заставку, заиграла музыка
4. Нажимаю РУС/ЛАТ, музыка прекратилась
5. Примерно на 30й секунде нажимаю БЛК+ВВОД (по индикатору уровня в редакторе видно, что в этот момент уровень уменьшается примерно на 6 дБ).

b2m 31st October 2009 15:15

После прекращения музыки там действительно "тычки" в один такт. Однако у меня, похоже, это не эмулируется: в одном сэмпле при частоте сэмплирования 44100Гц укладывается целых 34 такта таймера, так что вероятность того, что последнее значение будет еденица - всего 3%.

---------- Post added at 16:15 ---------- Previous post was at 16:13 ----------

При честной эмуляции значение сэмпла нужно было бы считать интегрируя каждый такт. Тогда действительно тычки были бы очень тихие.

Ramiros 31st October 2009 15:25

Сигнал Gate снимается (т.е. равен лог. 0) когда нажаты СБР+БЛК или ВВОД+БЛК, в это время счет прекращается и на выходе таймера будут неизменные сигналы. Это я к тому что необязательно обнулять прогу.

ivagor 31st October 2009 15:27

Quote:

Originally Posted by b2m (Post 229115)
При честной эмуляции значение сэмпла нужно было бы считать интегрируя каждый такт.

А сейчас совсем никакого интегрирования нет? Надо будет попробовать мои попытки ШИМ на реале.

b2m 31st October 2009 15:43

Нет, и при частоте ШИМ более 22КГц вряд-ли будет достоверный результат.

---------- Post added at 16:38 ---------- Previous post was at 16:29 ----------

А в эксолоне используется ШИМ! А я то думаю, почему он у меня шипит?!!

---------- Post added at 16:43 ---------- Previous post was at 16:38 ----------

Там таймер для нескольких голосов не используется!!! Всё через порт 00h!

ivagor 31st October 2009 15:46

Попытка по-быстрому изобразить ШИМ (все очень тупо, кроме того чуть медленновато, поэтому голос звучит ниже, чем должен). Все же на реале свистит несколько меньше, чем в эмуляторах.

Удалил вложение, т.к. далее выложил вариант получше

b2m 31st October 2009 15:50

Но ведь работает :)

ivagor 31st October 2009 15:53

Quote:

Originally Posted by b2m (Post 229120)
Там таймер для нескольких голосов не используется!!! Всё через порт 00h!

Там же звук со спектрума-48

---------- Post added at 16:53 ---------- Previous post was at 16:50 ----------

Quote:

Originally Posted by b2m (Post 229127)
Но ведь работает

и что интересно, VV и b2m свистят при ШИМе немного по-разному.

b2m 31st October 2009 15:55

Ну там два голоса, т.е. минимум три уровня нужно. По твоей записи видно, что там три уровня, я и подумал, что был использован таймер. А там оказывается ШИМ.

---------- Post added at 16:55 ---------- Previous post was at 16:54 ----------

Quote:

Originally Posted by ivagor (Post 229128)
и что интересно, VV и b2m свистят при ШИМе немного по-разному.

Ну дык разные программы-то :)
Шутка. Просто разные частоты сэмплирования.

ivagor 31st October 2009 17:00

Переделал ШИМ, в т.ч. уменьшил число используемых бит из каждого звукового отсчета - теперь по 3. Если стараться не обращать внимание на свист, то почти нормально.
После уменьшения числа бит образовался небольшой запас быстродействия, в принципе можно 11-12 кГц wavы воспроизводить.

ZEman 31st October 2009 18:18

блин ребята, ну вы маньяки :)
чтоб до таких мелочей докапываться.

b2m 31st October 2009 18:27

ZEman, мы просто хотим стереть все грани между реалом и эмуляцией :)

ZEman 31st October 2009 19:00

у вас это кстати неплохо получается.
хотя эмулятор рамироса мне больше нравится.

Ramiros 1st November 2009 13:55

Ввел интегрирование для каждого сэмпла, теперь вроде как свистита стало немного меньше.

Ждем когда Tim0xA обновит эмуль :)

Tim0xA 1st November 2009 16:49

Обновил

ivagor 3rd November 2009 12:54

Ramiros, стало лучше. Если сравнивать ШИМ в VV и в текущей версии b2m, то счет в твою пользу. Но хотелось бы еще более похоже на реал. Сравни спектры сигналов, записанных с реала и в твоем эмуляторе (я смотрел в Sound Forge).
Attachment 14037
Это немного улучшенные версии, могут играть и из основной памяти и с КД. PWM8 - частота дискретизации 8000 Гц, PWM9 - 11500 Гц (это и по спектрам видно). В PWM9 на реале свист ушел в область выше и не так напрягает - фактически осталась одна гармоника на 11500 (только памяти не напасешься).

Ramiros 3rd November 2009 14:57

Quote:

Originally Posted by ivagor (Post 229663)
Ramiros, стало лучше. Если сравнивать ШИМ в VV и в текущей версии b2m, то счет в твою пользу. Но хотелось бы еще более похоже на реал. Сравни спектры сигналов, записанных с реала и в твоем эмуляторе (я смотрел в Sound Forge).
Attachment 14037
Это немного улучшенные версии, могут играть и из основной памяти и с КД. PWM8 - частота дискретизации 8000 Гц, PWM9 - 11500 Гц (это и по спектрам видно). В PWM9 на реале свист ушел в область выше и не так напрягает - фактически осталась одна гармоника на 11500 (только памяти не напасешься).

Тут наверное ничего неподелаешь, частота дискретизации буфера равна 44100 Гц, но чтобы создать один полный период необходимо хотябы 2 точки, т.е. получается реальная максимальная звуковая частота равна 22050 Гц. Поэтому все что мы будем генерировать на выходе канала PCM будет ресэмплироваться к частоте буфера, и будут появлятся гормоники низшей частоты.
Для таймера можно просто при определенных значениях счетчика которые например дают частоту более 20 КГц отсекать эти частоты, т.к. человек их всеравно неслышит, что я и делаю при включеном фильтре, а как быть с каналом PCM ? анализировать сигнал на лету, весьма сложная задача.

---------- Post added at 15:57 ---------- Previous post was at 15:52 ----------

ivagor, неплохо бы еще сделать (переделать) тест таймера для BCD режима, какое то белое пятно остается, наверняка неукого нереализовано, или реализовано криво :) Я в новой версии (пока невыкладываю) уже сделал поддержку, но пока хотелось бы потестить, посмотреть результат с реала.

b2m 3rd November 2009 15:33

Quote:

Originally Posted by Ramiros (Post 229688)
наверняка неукого нереализовано, или реализовано криво

У меня реализовано. Насколько криво - покажет тест на реале. :)

ivagor 3rd November 2009 15:46

Quote:

Originally Posted by Ramiros (Post 229688)
Поэтому все что мы будем генерировать на выходе канала PCM будет ресэмплироваться к частоте буфера, и будут появлятся гормоники низшей частоты.

Попробую перевести это в понятный мне вид - у тебя исходно частота дискретизации звукового сигнала >44100. Чтобы привести к 44100 ты делаешь децимацию, но без ФНЧ, в результате алиасинга верхние частоты заворачиваются вниз. Я правильно понял? Если да, то надо добавить фильтрацию при децимации. Если я неправильно понял, то поясни подробнее.

Quote:

Originally Posted by b2m (Post 229700)
неплохо бы еще сделать (переделать) тест таймера для BCD режима, какое то белое пятно остается, наверняка неукого нереализовано, или реализовано криво

Quote:

Originally Posted by b2m (Post 229700)
У меня реализовано. Насколько криво - покажет тест на реале.

Где тесты, я готов их прогнать (если Tim0xA не успеет раньше :) ).

b2m 3rd November 2009 16:38

Quote:

Originally Posted by ivagor (Post 229704)
Где тесты, я готов их прогнать (если Tim0xA не успеет раньше :) ).

Ты же главный по тестам, у себя и спрашивай :)

ivagor 3rd November 2009 17:20

Ramiros, b2m, вы предлагаете, чтобы я взял например вот эти тесты, у которых в авторах указан в т.ч. b2m, поправил один бит при задании режима таймера и запустил на реале? Это несерьезно. Вы и svofski уже долго въезжаете в эту тему, вам и карты в руки.

ivagor 3rd November 2009 20:54

Свист при ШИМ не давал мне покоя, поэтому сделал вариант с частотой дискретизации 17 кГц (pwm10, играет с КД) - не свистит! Вернее мое ухо не слышит, может некоторые дети и животные услышат и такой высокочастотный свист. Правда, есть некое несильное жужжание, но это гораздо меньше напрягает, чем свист. Также перезаписал wavы от pwm8 и pwm9. В прошлом варианте с pwm8 еще все нормально, а в pwm9 при записи добавился призвук, которого не было при воспроизведении с вектора. Изменил технологию записи, в новом варианте все нормально. pwm8and9and10.7z

Понял, почему немного жужжит pwm10, это убирается ценой некоторой потери частоты (до 16 кГц), но при этом становится немного слышен свист. Буду думать, как ускорить и чтобы не жужжало и не свистело одновременно.

Ramiros 4th November 2009 14:34

1 Attachment(s)
Вот переделал i8253.rom под BCD режим. Жду результатов с реала

ivagor 4th November 2009 14:51

Результат I8253_BCD.ROM

b2m 4th November 2009 14:57

Мдя, переход через ноль я не учёл, в BCD будет не FFFF, а 9999 :)

Ramiros 4th November 2009 15:00

Quote:

Originally Posted by ivagor (Post 229943)
Результат I8253_BCD.ROM

результат полностью совпал! :)
Выпускаю в свет версию VV 5.97, кроме режима BCD сделана доработка прерываний с учетом реальной длинны команд, vst10 теперьвыдает результат как на реале.

Tim0xA выкладывай :)

Tim0xA 4th November 2009 15:17

Эмулятор на сайте!

b2m 4th November 2009 15:51

Аналогично.

Ramiros 5th November 2009 12:12

Quote:

Originally Posted by ivagor (Post 229704)
Попробую перевести это в понятный мне вид - у тебя исходно частота дискретизации звукового сигнала >44100. Чтобы привести к 44100 ты делаешь децимацию, но без ФНЧ, в результате алиасинга верхние частоты заворачиваются вниз. Я правильно понял? Если да, то надо добавить фильтрацию при децимации. Если я неправильно понял, то поясни подробнее.

Все верно ты понял.
Сделал ФНЧ, звук в pwm значительно улучшился :)

Tim0xA 5th November 2009 12:28

Выложил эмуль на сайт.

ivagor 5th November 2009 15:48

Ramiros, спасибо, что работаешь в этом направлении, стало лучше. Надеюсь, ты не успокоишься, пока не станет неотличимо от реала ;)

ivagor 30th January 2013 16:36

4 Attachment(s)
В 2009 выкладывал пример проигрывания WAVа через ВИ53+бипер. Сайта уже давно нет, теперь тот файлик на форуме.

В связи с дискуссией в теме про музыку Сергея Новикова сделал еще два примера с использованием "ЦАПа".
1. Проигрывание пяти разных форм сигнала, в т.ч. треугольника и пилы
Attachment 39572
Attachment 39574Attachment 39575

2. Меандр с четырьмя разными уровнями громкости
Attachment 39573

В архивах есть исходники, ROMы и WAVы.

Titus 30th January 2013 16:51

А как получают на ВИ53 несколько уровней громкости?
Или это какая-то особенность схемы именно Вектора?

ivagor 30th January 2013 17:37

Три канала ВИ53 складываются на векторе с одинаковыми весовыми коэффициентами, что дает (с учетом молчания) 4 уровня. Как оказалось и бипер на векторе тоже складывается практически с тем же весом, т.е. +еще один уровень. Предполагаю, что на Апогее и ПК8002 (т.е. там, где все каналы ВИ53 могут играть звук) примерно аналогичная ситуация (если не брать в расчет ЦАП для управления громкостью на ПК8002).

Ramiros 30th January 2013 19:25

у ВИ53 есть команды которые позволяют сформировать на выходах лог.1 или 0 (при условии что на входах GATE всегда 1), учитывая схему микшера каналов понятно что можно формировать 4-х уровневый сигнал, но это впринципе от ЦАПа ничем ни отличается и этот метод требует больших процессорных ресурсов и много ОЗУ, следовательно полезность этой фичи стремится к нулю.

Titus 30th January 2013 19:43

Quote:

Originally Posted by Ramiros (Post 571821)
это впринципе от ЦАПа ничем ни отличается и этот метод требует больших процессорных ресурсов и много ОЗУ, следовательно полезность этой фичи стремится к нулю.

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


All times are GMT +4. The time now is 23:23.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.