PDA

Просмотр полной версии : Вектор-06Ц: Эмуляция - КР580ВИ53



Tim0xA
04.02.2009, 13:57
Нашлись тесты, которые использовались для отладки эмуляции ВИ53 в эмуляторе VE http://sensi.org/~svo/scalar/ware/650

b2m
04.02.2009, 14:56
Знать бы ещё, чего они выдают на реальном Векторе...

svofski
04.02.2009, 15:22
Знать бы еще чо это вообще за цифирь =)))

b2m
04.02.2009, 15:43
Двузначная цифра, как ни странно, номер режима.
Первая 4-х значная: считанное значение после загрузки 0FFFFh (до этого стоит HLT), а вторая у трёх тестов разная:
i8253 - считанное значение после двух HLT
i82531 - считанное значение после загрузки 0E0E0h
i82532 - просто повторно считанное значение (при этом до обоих считываний была установка того-же режима)

Добавлено через 14 минут
Кажется, третий тест у меня неправильно работает: после установки режима счёт вроде бы запрещён, и оба значения должны быть одинаковы...

svofski
11.08.2009, 10:55
Не буду утверждать совсем уж строго, потому что целенаправленно не тестировал, но мне очень сильно показалось, что в режиме "0" ВИ53 в обоих эмуляторах переваливает через ноль и продолжает считать как ни в чем ни бывало. А должен ждать, пока его не перезарядят.



Mode 0 (terminal count)
The counter output is set to “L” level by the mode setting. If the count value is then written in the counter with the gate input at “H” level (that is, upon completion of writing the MSB when there are two bytes), the clock input counting is started. When the terminal count is reached, the output is switched to “H” level and is maintained in this status until the control word and count value are set again.
Counting is interrupted if the gate input is switched to “L” level, and restarted when switched back to “H” level.
When Count Values are written during counting, the operation is as follows:
1-byte Read/Load. ............When the new count value is written, counting is stopped immediately, and then restarted at the new count value by the next
clock.
2-byte Read/Load ............. When byte 1 (LSB) of the new count value is written, counting is stopped immediately. Counting is restarted at the new count value when byte 2 (MSB) is written.

Tim0xA
03.10.2009, 08:56
Вечером сделаю замеры на реале, сравним. Можете также придумать свои тесты.

svofski
03.10.2009, 13:34
Ближе к вечеру погоняю, отпишусь. Мой таймер у меня тоже иногда вызывает сомнения, но сейчас я еще не могу на них сфокусироваться.

b2m
03.10.2009, 14:27
Да, таймер сломался. Вобщем, чтобы убрать артефакт программирования палитры я сделал изменение, которое касается эмуляции в целом. Я потестировал немного все компы, вроде косяков не было, но как оказалось сделал это слишком поверхностно. Действительно, для теста таймера больше всего подходит exolon на Векторе, это я давно заметил :)

Tim0xA
03.10.2009, 23:12
clrs с музоном срывается раз в 7-8 секунд.

Прилагаю скриншоты тестов таймера http://www.sensi.org/~svo/scalar/ware/650/

svofski
05.10.2009, 13:31
Вектору нужен более компактный и быстрый плеер. Все эти адаптированные с Z80 чудеса отжирают недопустимо много экранного времени.

Сидел вчера, мучил свой таймер. Узнал немало нового про устройство 8253, передавал в астрале инженерам из интела наипламеннейшие приветы. Три известных таймерных теста стали проходить как на реале: все кроме 0-3. 0-3 у меня показывает 2C28 хоть убей (вместо 2C26), причем в других случаях цифры совпадают.

clrslow при этом все равно дергается (хотя, сейчас вспоминаю и не могу с увереностью сказать, когда именно я его проверял), а SSTV по-прежнему не желает сдвигаться с мертвой точки. Это какой-то заговор.

ivagor
05.10.2009, 13:40
svofski - а exolon нормально работает?

svofski
05.10.2009, 13:53
svofski - а exolon нормально работает?

Конечно, как можно без Эхолона =) Но я не знаю, гарантирует ли это что бы то ни было, кроме исправности Эхолона. Таймер имеет ожидаемый период в режиме <x> и из него получается считывать значения каждый раз одинаковые.. В каком, кстати, режиме, кто-нибудь помнит?

Мне кажется, что команда разработчиков 8253 испытывала какой-то комплекс перед всеми остальными.. Типа, вот, люди процессоры делают, контроллеры шыыыннные, к памяти напрямую доступаются! А нам счетчик какой-то дали убогий. И, подогреваемые эмоциями, сделали его сложнее процессора. Документаторы, соответственно, не смогли описать его поведение, поэтому в даташитах везде какие-то недомолвки. С другой стороны, забавно. Ведь это единственный чип того времени, который до сих пор есть в каждом писюке. Правда, интегрированный в южный мост.

Ramiros
05.10.2009, 16:01
Конечно, как можно без Эхолона =) Но я не знаю, гарантирует ли это что бы то ни было, кроме исправности Эхолона. Таймер имеет ожидаемый период в режиме <x> и из него получается считывать значения каждый раз одинаковые.. В каком, кстати, режиме, кто-нибудь помнит?


Для отсчетов интервала ехелон использует канал 1 в режиме 2

---------- Post added at 17:51 ---------- Previous post was at 17:43 ----------

Кстати игры использующие таймер нестандартно: colorwar.rom, набор карточных игр card.fdd, само собой exelon.rom. в других прогах незамечал. В картах вообще непонятно зачем, походу SES неособо задавался этим вопросом когда передирал его :)

---------- Post added at 18:01 ---------- Previous post was at 17:51 ----------

Вот например в даташитах написано минимально допустимое число которое можно записывать в счетчик в разных режимах, но нигде ненаписано, что будет если всеже его туда записать, и что счетчик по окончанию счета должен остаться в нуле или переполнится и будет считать с $FFFF, и таких вопросов у меня была целая куча, к томуже нет программ, которые это могут выявить, тесты все подводные камни всеравно невыявят

svofski
05.10.2009, 16:12
Colorwar вроде запускал не так давно. Вроде ничего из ряда вон не заметил.

Сейчас вспомнил, на диске с SSTV у меня есть не помню откуда взявшийся файл TEST8253.COM, который с виду не делает ничего, кроме как рисует снизу какую-то черточку и зависает. Никто не знает, что это такое и, если черточка -- это индикатор (не)исправности, как она должна выглядеть?

---------- Post added at 16:12 ---------- Previous post was at 16:04 ----------


Вот например в даташитах написано минимально допустимое число которое можно записывать в счетчик в разных режимах, но нигде ненаписано, что будет если всеже его туда записать, и что счетчик по окончанию счета должен остаться в нуле или переполнится и будет считать с $FFFF, и таких вопросов у меня была целая куча, к томуже нет программ, которые это могут выявить, тесты все подводные камни всеравно невыявят
Да, это одно из кидалов. В даташите OKI как-то очень косно написано, что число $0000 прочитать из счетчика нельзя. Что они хотели этим сказать я не очень понял. Из Intel-овского даташита следует, что все "однократные" режимы 0 и 4 на самом однократны только с точки зрения выходов. А счетчик продолжает считать, переваливаясь через 0. Экспериментально вроде получилось, что переваливается он без перезагрузки (хотя это трудно установить теми тестами, что есть).

Еще интересный момент, который не выкопаешь ни в какой доке. После первого теста в режиме "0" счетчик продолжает считать. Дальше тест программирует его на режим "1" и загружает в него значение $FFFF. Но, поскольку сигнал GATE в Векторе всегда "1", это число не переписывается во внутренний счетчик и счет продолжается как будто бы записи не было. Самое занятное в том, что операция установки режима в "1" все же останавливает счетчик, а загрузка значения, которое в него так никогда и не попадает, продолжает счет.

Ramiros
05.10.2009, 16:21
короче сделали какой то глючный таймер, а нам теперь все глюки клонируй :)

b2m
05.10.2009, 17:03
Самое занятное в том, что операция установки режима в "1" все же останавливает счетчик, а загрузка значения, которое в него так никогда и не попадает, продолжает счет.
А я-то думаю, откуда у меня 36 лишних тактов по сравнению с оригиналом? :) Хотя судя по тесту должно было быть только 32.

svofski
05.10.2009, 17:06
Хмм.. а у меня вроде получалось 12 таймерных, то есть 24 процессорных =)

b2m
05.10.2009, 17:24
Не, вообще-то счётчик должен останавливаться на 32 такта:


OUT 08H ; тут в последнем цикле останавливается
MVI A,0FFH ; 8 тактов
OUT 0BH ; 12 тактов
OUT 0BH ; 12 тактов, в последнем цикле включается

Если не учитывать смещение сигнала на пару тактов в последнем цикле команды OUT, то будет 8+12+12=32 такта.

Откуда же у меня ещё 4 лишних такта? :v2_conf2:

---------- Post added at 18:22 ---------- Previous post was at 18:16 ----------

Надо посмотреть выход из режима HALT, наверное у меня делается мгновенно, а не через 4 такта после прерывания...

---------- Post added at 18:24 ---------- Previous post was at 18:22 ----------

Нет, тогда бы наоборот - счётчик меньше "уменьшился" ...

svofski
05.10.2009, 17:33
Я балда стоеросовая, или какая она там бывает, дубовая, еловая мякинная.. 12 хекс, 18 таймерных, то есть 36 процессорных тактов у меня разница была пока я не стал останавливать счетчик после записи управляющего слова. Правда, это никак не проливает пока свет на твои 4 такта, но меня немножко успокаивает.

---------- Post added at 17:33 ---------- Previous post was at 17:32 ----------


Нет, тогда бы наоборот - счётчик меньше "уменьшился" ...
А ты учел, что счетчик там переваливает через край? Начальный отсчет в итоге получается меньше конечного.

b2m
05.10.2009, 18:57
В принципе, если принять за аксиому, что после установки режима счётчики простаивают 2 таймерных такта, то всё сходится. Т.е. нужно не просто приостановить счётчик, а ещё и задержать его возобновление на 2 таймерных такта.

svofski
05.10.2009, 20:10
Вот небезынтересный сорец из MAME. Не думаю, что этот таймер выдержал бы проверку Вектором, но он тоже не в лоб по даташиту написан.

http://mamedev.org/source/src/emu/machine/pit8253.c.html

---------- Post added at 20:10 ---------- Previous post was at 19:55 ----------

Да, к слову сказать, установка флага разрешения счета у меня происходит на следующий за загрузкой таймерклок, значит первый отсчет случится еще на следующий. Как будто бы сходится с твоей "аксиомой"?

b2m
06.10.2009, 17:40
Я отрихтовал эмулятор, чтобы он показывал такие-же буковки, как и скрины тестов ВИ53 от Tim0xA. Занимательно то, что как и svofski я не смог пока победить тест 0-3, который аналогично выдаёт 2С28 вместо 2С26.

svofski
06.10.2009, 17:47
b2m, лол. Предлагаю принять наш вариант единственно верным =)

В коде MAME есть какая-то очень подозрительная оговорка насчет режима 3. Что-то типа timer->value &= 0xFFFE; в функции load_timer_value(). Как ты думаешь, что они имели ввиду? Впрочем, режим 3 у них реализован вообще странно.

b2m
06.10.2009, 18:04
Нечётное значение инициализации счётчика в режиме 3 должно как-то хитро обрабатываться. Например, если загружаем 5, то счёт ведётся примерно так: 5 4 2 5 2 5 4 2 5 2 ... Если откинуть пятёрку, то так и получится, что младший бит нужно в ноль установить. Но это неправильно.

svofski
06.10.2009, 18:14
Даташит говорит, что если значение нечетное и output == 1, вычитаем 3. Если нечетное и output == 0, вычитаем 1 (ну или наоборот). Что делается при загрузке числа 1, разумеется, непонятно. В MAME есть на этот счет поправка, ссылаются на экспериментальные исследования.

Но в наших тестах загружается $FFFF...

b2m
06.10.2009, 19:00
Поправил предыдущий пост. Действительно либо 3, либо 1 в первом такте вычитается, а дальше чётное число пошло.

---------- Post added at 20:00 ---------- Previous post was at 19:23 ----------

Всё, теперь работает как на картинке :)

svofski
06.10.2009, 19:02
Ну а чего ты сделал-то, колись?

b2m
06.10.2009, 19:10
Я не стал мудрить со счётом, счётчик тупо загружает нечётное число, а при считывании, если режим 3 и в счётчик было загружено нечётное значение - один раз добавляется еденичка, другой раз убавляется. Тут, конечно, есть фича - никогда не считывается исходное число, которым производили инициализацию, но в целом работает. :)

svofski
07.10.2009, 14:53
Хмм... Как в даташите:


7 4 2 0(7) 6 4 2 0(7) 4 2 ...

Как у тебя:


6 4 2 0 8 6 4 2... (считывается)
7 5 3 1 7 5 3 1 (внутри)

Так?

b2m
07.10.2009, 15:13
Ну, у меня всё гораздо запутаннее :)


8 6 4 2 6 4 2 8... (считывается)
7 5 3 1 6 4 2 7 (внутри)

Внутри, когда значение меньше или равно нулю доплюсовывается начальное значение. При считывании, если число нечётное (в режиме 3), то добавляется еденичка. Вообще-то, надо бы скорректировать условие, должно быть: если число нечётное (в режиме 3) и оно меньше начального значения, то добавляется еденичка.

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

А чё, по даташиту может ноль считаться?

svofski
07.10.2009, 15:57
А чё, по даташиту может ноль считаться?

Ни. Это так изображатеся, что в момент, когда по уму должен бы быть ноль, счетчик уже перезагружен и содержит начальное значение. Один из шитов, кажется OKI, вообще говорит, что ноль никогда не считывается. Но я не очень понимаю, что же тогда должно считываться тогда в момент перевала через ноль в режиме 0, например. Я думаю, что написанное ими следует читать как "ни в одном из описаных режимов", а не "никогда вообще".

Да, у тебя запутано и сложно =) В то же время оригинальный 8253 простым и элегантным назвать никак язык не поворачивается.

b2m
07.10.2009, 16:52
8 6 4 2 6 4 2 8 ... (у меня)
7 6 4 2 7 4 2 7 ... (по даташиту)

Вот и думаю я, как бы мне это исправить-то: все значения кроме первых правильные, а вот первые - увы.

svofski
07.10.2009, 17:04
Как заведено у программистов:


// ХАКА
if (первое) исправить(); // ПОПРАВИТЬ!!

b2m
07.10.2009, 17:09
Мда, придётся так и сделать :)

b2m
07.10.2009, 18:57
Ещё раз подправил таймер, а заодно сделал тест третьего режима таймера: загружается (только младший байт) число 33, цикл опроса составляет 64 такта, т.е. 32 тика таймера, таким образом каждая следующая итерация попадает на следующий тик таймера.

Tim0xA
08.10.2009, 00:11
Реальный тест

svofski
21.10.2009, 15:04
А можно было бы как-нибудь склеить все накопившиеся у нас тесты 8253 в один, чтобы по нажатию кнопки они бы один за другим шли? Круто было бы, конечно, еще и с эталонными данными, но это так, мечты.

Ramiros
27.10.2009, 12:23
До таймера у меня все как то руки недоходят, но вот в голове мысли крутятся, и я чесно говоря непонял, в режиме 3 счетчик декркментируется сразу на 2 за один такт? именно с этим связаны все эти шаманства для этого режима?

ivagor
27.10.2009, 15:54
При работе clrs (и clrslow) на реале из пищалки слышно гудение, может это таймер? Я записал этот звук с магнитофонного/звукового выхода вектора 13914

Tim0xA, у тебя нечто подобное слышно?

Tim0xA
27.10.2009, 18:12
Tim0xA, у тебя нечто подобное слышно?
Не слышно, т.к. внутренний диамик оторван :)

ivagor
27.10.2009, 18:14
А со звукового/магнитофонного выхода?

Tim0xA
27.10.2009, 18:36
Я не подключал выход во время прогона clrs. Могу проверить, если интересно.

ivagor
27.10.2009, 19:15
Уточню - жужжит (по крайней мере у меня) вариант clrs с музоном на AY. Музычки на AY я, конечно, не слышу.

svofski
27.10.2009, 20:44
До таймера у меня все как то руки недоходят, но вот в голове мысли крутятся, и я чесно говоря непонял, в режиме 3 счетчик декркментируется сразу на 2 за один такт? именно с этим связаны все эти шаманства для этого режима?
Примерно так, да. Шаманства связаны еще отчасти с тем, что в случае загрузки нечетного значения, первый отсчет будет по очереди то -1, то -3.

b2m
27.10.2009, 23:02
Уточню - жужжит (по крайней мере у меня) вариант clrs с музоном на AY. Музычки на AY я, конечно, не слышу.
Да, должно жужжать. В эмуляторе с AY это не реализовано, т.к. используются каналы input[0-2], а они предназначены только для меандра. Есть другой канал - просто input, который может битовый звук выводить, вот с ним да, жужжит. Для проверки можно исправить конфиг так:

beep : AY-3-8910 {
freq=10/1B
-input=sys.portC[0]
input=mtim.out[0]
input[1]=mtim.out[1]
input[2]=mtim.out[2]
}

ivagor
27.10.2009, 23:25
Это только я ничего не понял (в смысле почему же оно гудит/жужжит)?
input=sys.portC[0] - это beeper?
-input=sys.portC[0] - а это? Почему при таком конфиге не слышно бипера и, как я понял, одного (0-го?) канала ВИ53?

b2m
28.10.2009, 00:32
Минусом это я так строчку закомментировал :) Можно было и удалить.
Гудит не от биппера, а с выхода таймера. input поддерживает все режимы таймера, а input[0-2] только третий режим - меандр.

Tim0xA
28.10.2009, 01:00
Tim0xA, у тебя нечто подобное слышно?
Может это уже и неважно, но я всё же проверил - звук точно такой же, как у тебя.

В VV, если выключить AY, этого звука нет. Непорядок.

ivagor
28.10.2009, 07:20
input поддерживает все режимы таймера, а input[0-2] только третий режим - меандр.
Планируешь доделывать, чтобы input[0-2] поддерживали все режимы таймера?

Ramiros
28.10.2009, 12:07
Может это уже и неважно, но я всё же проверил - звук точно такой же, как у тебя.

В VV, если выключить AY, этого звука нет. Непорядок.

Почему непорядок, я когда писал таймер, сделал чтобы звук выводился только в 3-м режиме по любому каналу

ivagor
28.10.2009, 12:12
Почему непорядок, я когда писал таймер, сделал чтобы звук выводился только в 3-м режиме по любому каналу
Ramiros, а на реале разве так :) ?

Ramiros
28.10.2009, 12:19
ivagor, исправлю, тогда я подумал зачем оно надо...

Tim0xA
28.10.2009, 12:20
Почему непорядок, я когда писал таймер, сделал чтобы звук выводился только в 3-м режиме по любому каналу
На векторе независимо от того, в каком режиме работает таймер, любое изменение состояния выходов будет издавать звук.

b2m
28.10.2009, 12:23
Планируешь доделывать, чтобы input[0-2] поддерживали все режимы таймера?
Не знаю, может сделать опционально, а то Вектор в отладочной версии и так уже почти к 100% загрузке проца приближается, отлаживать неудобно.

Ramiros
28.10.2009, 12:25
Еще такой вопрос - сколько тактов укладывается между прерываниями? у меня по всем расчетам и опытным путем получается 59904 такта, но вот с тестом таймера на реале i8253.rom почемуто никак нисходится, там где два HLT и счетчик успевает перезагрузится у меня в режиме 1 получается число на 1 меньше, если же при перезагрузке счетчика загрузить число на 1 больше, то все сходится, но exelon тогда начинает уползать.

b2m
28.10.2009, 12:40
у меня по всем расчетам и опытным путем получается 59904 такта
Всё правильно, 192 такта на строку, 312 строк: 192*312=59904

2ivagor
Кстати, про канал input в AY я наврал, это у beep он поддерживает все режимы, а в AY это только битовый звук, и меандр он не поддерживает.

svofski
28.10.2009, 15:03
Ramiros, проверь момент защелкивания, последовательность считывания байт в двухбайтовом режиме и все такое.

svofski
29.10.2009, 16:05
Кстати, есть ведь еще режим BCD..

Ramiros
30.10.2009, 10:19
Кстати, есть ведь еще режим BCD..

Да есть, у меня пока неподдерживается

---------- Post added at 11:19 ---------- Previous post was at 10:06 ----------

Подтянул я таймер, все тесты как на реале, Для маньяков сделал опционально отключаемым фильтр шумов и тресков, теперь будет тарахтеть :)

Tim0xA, Обнови эмуль на сайте

Tim0xA
30.10.2009, 12:32
Обновил. Еще бы стереорежим для ВИ53 а-ля AY.

---------- Post added at 10:26 ---------- Previous post was at 10:10 ----------

Кстати, на сайте выложен эмулятор PSG AY-3-8910 на КР580ВИ53 от ivagor-а http://vector06c.narod.ru/recompile/AYVI53.ZIP

---------- Post added at 10:32 ---------- Previous post was at 10:26 ----------

Почему в обоих эмуляторах ВИ53 звучит громче, чем AY? Может стоит сделать уровень звука одинаковым?

Ramiros
30.10.2009, 12:50
Почему в обоих эмуляторах ВИ53 звучит громче, чем AY? Может стоит сделать уровень звука одинаковым?

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

---------- Post added at 13:50 ---------- Previous post was at 13:39 ----------



Кстати, на сайте выложен эмулятор PSG AY-3-8910 на КР580ВИ53 от ivagor-а http://vector06c.narod.ru/recompile/AYVI53.ZIP


Очень неплохо звучит, жаль что канал шума через PCM идет. А огибающая как нибуть поддерживается?

Tim0xA
30.10.2009, 13:06
потому что у него громкость нельзя регулировать, если AY играть на полной громкости, то было бы одинаково
Да, точно. Просто я сравнивал версии игр MSX со звуком ВИ53 (счтемаш) (http://vector06c.narod.ru/recompile/game/v06c/msx_classic.rar) и AY (от ivagor-а) (http://vector06c.narod.ru/recompile/game/v06c/msx_sound.rar), у AY-версий значит громкость выставлена не на полную.

b2m
30.10.2009, 13:21
На БК есть прикольная штука, вроде melman.bin называется, так там музон очень похож на AY (и громкость есть), но выводится через однобитный порт! Используется ШИМ, поэтому чуток посвистывает, но в целом по больнице - температура нормальная :)

---------- Post added at 14:21 ---------- Previous post was at 14:15 ----------

Вот (http://pdp-11.ru/mybk/BIN/MELMAN.BIN), запускать:
В Фокале: P пробел M enter M enter enter
В Бейсике: MON enter M enter enter

ivagor
30.10.2009, 13:49
А огибающая как нибуть поддерживается?
Круче всего было бы просто ответить Да :)
Поддерживается только в плане играть/не играть. Сделать канал шума с ШИМом руки не дошли (бензин кончился).
Еще такая идея была - сделать не real-timовый конвертер для вектора, который бы перегонял муз-модуль в малобитныйИКМ на КД. А с КД играть или ШИМом через beepер или через "двухбитный ЦАП" ВИ53 (можно еще beepер добавить) или через COVOX подключаемый к разъему ПУ (поддерживается в ve27).

svofski
30.10.2009, 15:12
Covox нах, а вот через трехбитный цап из ВИ53+бипер -- это было бы зачетно.

ivagor
30.10.2009, 15:52
трехбитный цап из ВИ53+бипер
Чтобы поддержать имидж зануды - 2,32 битный ЦАП.
Этот способ я на практике не пробовал. Подозреваю, что отрицательный эффект от неодновременности установки значений каналов ВИ53 да еще и бипера может смазать выигрыш от "больше чем однобитности".

svofski
30.10.2009, 16:36
Ну что ты, наоборот. Он украсит его неповторимым шармом и спустя 10 лет люди будут спорить о преимуществах тёплого 3-битного звука с невовремя установленным старшим битом.

ivagor
30.10.2009, 19:36
Самому стало интересно. Передал Wave AY (http://sensi.org/~svo/scalar/ware/606/) под ВИ53 (надо заметить, что в исходном варианте waveay задержка между воспроизведением отсчетов сделана никуда не годным образом). Результат не сильно впечатляет, но работоспособность идеи видна (слышна). Проверить можно в последней версии VV, только не забудьте отключить i8253 Filter Noise (по умолчанию он включен, что, IMHO, неправильно). Это вариант без BEEPера, только ВИ53. Приложил WAV-файлик для примера.

ivagor
31.10.2009, 10:39
Сделал полный вариант - ВИ53+бипер, что дает 5 уровней. Если оптимизировать таблицу квантования под каждый проигрываемый файл, то получается (IMHO) лучше чем ШИМ через бипер (по крайней мере нет свиста). Даже удивительно, почему никто до сих пор так не делал.
http://retrocomp.narod.ru/vector06c/vi533.zip

ivagor
31.10.2009, 13:11
По поводу exolonа - если в VV выключить i8253 Filter Noise, то в игре слышен треск.
Записал с реала (вышел на заставку, заиграла музычка, нажал РУС/ЛАТ) - Удалил вложение, т.к. далее выложил более полный вариант
Типа реж 2 на самом деле практически не слышен (и не виден в звуковом редакторе) в отличие от реж 0?

b2m
31.10.2009, 13:45
ivagor, пришлось таки доделать вывод битового звука через каналы таймера :)
В exolon вроде никакого треска нет.

b2m
31.10.2009, 13:54
ivagor, проверь, есть ли на реале треск вот в этой версии clrs. У меня есть едва заметный.

ivagor
31.10.2009, 13:55
Исходник и запись с реала.

b2m
31.10.2009, 14:03
Разницы не заметил, разве что у меня чуть погромче :)

ivagor
31.10.2009, 14:08
ivagor, проверь, есть ли на реале треск вот в этой версии clrs. У меня есть едва заметный.
запись

b2m
31.10.2009, 14:14
Ну тут на самом деле непонятно, откуда 50 Гц, то-ли наводки, то-ли из-за таймера. Вот если бы ты в конце БЛК+ВВОД нажал, тогда было бы более ясно.

Ramiros
31.10.2009, 14:18
По поводу exolonа - если в VV выключить i8253 Filter Noise, то в игре слышен треск.
Записал с реала (вышел на заставку, заиграла музычка, нажал РУС/ЛАТ) - 13980.
Типа реж 2 на самом деле практически не слышен (и не виден в звуковом редакторе) в отличие от реж 0?

Ну на реале может и неслышно, тычек очень короткий, всего 1 такт. т.к. на выходе стоит емкость (если кто обпатил внимание), она его сглаживает поэтому ничего и неслышно.

ivagor
31.10.2009, 14:21
В сегодняшней версии vi533.rom "говорит", но есть странный глюк - запустить его я смог только через File->Open, а через внешнее ПЗУ не открывается. Это не только в сегодняшней версии, но и во вчерашней. Попробовал версию от 03.02.2009 - в ней открывается через внешнее ПЗУ (но там похоже хак и объем ПЗУ получается 40 Кб), и даже чуть-чуть слышно голос.[COLOR="Silver"]

ivagor
31.10.2009, 14:28
Ну тут на самом деле непонятно, откуда 50 Гц, то-ли наводки, то-ли из-за таймера. Вот если бы ты в конце БЛК+ВВОД нажал, тогда было бы более ясно.
Сценарий записи:
1. Примерно до 1 сек мигает РУС/ЛАТ, я нажимаю БЛК+СБР
2. Примерно до 10 сек работает clrs
3. Последние 10 сек - после БЛК+ВВОД

b2m
31.10.2009, 14:30
есть странный глюк - запустить его я смог только через File->Open, а через внешнее ПЗУ не открывается
Ну мы же вроде договорились, что поддержка внешнего ПЗУ более 32Кб - это не есть гуд. Я и переделал, уже недели две как тому назад.

ivagor
31.10.2009, 14:31
Ну мы же вроде договорились, что поддержка внешнего ПЗУ более 32Кб - это не есть гуд. Я и переделал, уже недели две как тому назад.
Точно, я забыл, вопрос снят.

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

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

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

ivagor
31.10.2009, 14:36
Кстати, используется как раз режим 2 таймера.
да я уж посмотрел :). Но в эксолоне менее слышно, там более высокочастотный шум получается, наверно поэтому.

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

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

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

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

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

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

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

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

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

b2m
31.10.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
31.10.2009, 15:46
Попытка по-быстрому изобразить ШИМ (все очень тупо, кроме того чуть медленновато, поэтому голос звучит ниже, чем должен). Все же на реале свистит несколько меньше, чем в эмуляторах.

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

b2m
31.10.2009, 15:50
Но ведь работает :)

ivagor
31.10.2009, 15:53
Там таймер для нескольких голосов не используется!!! Всё через порт 00h!
Там же звук со спектрума-48

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


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

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

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


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

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

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

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

ZEman
31.10.2009, 19:00
у вас это кстати неплохо получается.
хотя эмулятор рамироса мне больше нравится.

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

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

Tim0xA
01.11.2009, 16:49
Обновил

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

Ramiros
03.11.2009, 14:57
Ramiros, стало лучше. Если сравнивать ШИМ в VV и в текущей версии b2m, то счет в твою пользу. Но хотелось бы еще более похоже на реал. Сравни спектры сигналов, записанных с реала и в твоем эмуляторе (я смотрел в Sound Forge).
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
03.11.2009, 15:33
наверняка неукого нереализовано, или реализовано криво
У меня реализовано. Насколько криво - покажет тест на реале. :)

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


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

У меня реализовано. Насколько криво - покажет тест на реале.
Где тесты, я готов их прогнать (если Tim0xA не успеет раньше :) ).

b2m
03.11.2009, 16:38
Где тесты, я готов их прогнать (если Tim0xA не успеет раньше :) ).
Ты же главный по тестам, у себя и спрашивай :)

ivagor
03.11.2009, 17:20
Ramiros, b2m, вы предлагаете, чтобы я взял например вот эти тесты (http://sensi.org/~svo/scalar/ware/650/), у которых в авторах указан в т.ч. b2m, поправил один бит при задании режима таймера и запустил на реале? Это несерьезно. Вы и svofski уже долго въезжаете в эту тему, вам и карты в руки.

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

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

Ramiros
04.11.2009, 14:34
Вот переделал i8253.rom под BCD режим. Жду результатов с реала

ivagor
04.11.2009, 14:51
Результат I8253_BCD.ROM

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

Ramiros
04.11.2009, 15:00
Результат I8253_BCD.ROM

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

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

Tim0xA
04.11.2009, 15:17
Эмулятор на сайте!

b2m
04.11.2009, 15:51
Аналогично.

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



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

Tim0xA
05.11.2009, 12:28
Выложил эмуль на сайт.

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

ivagor
30.01.2013, 15:36
В 2009 выкладывал (http://zx-pk.ru/showpost.php?p=229053&postcount=69) пример проигрывания WAVа через ВИ53+бипер. Сайта уже давно нет, теперь тот файлик на форуме (http://zx-pk.ru/showpost.php?p=570014&postcount=9).

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

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

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

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

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

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

Titus
30.01.2013, 18:43
это впринципе от ЦАПа ничем ни отличается и этот метод требует больших процессорных ресурсов и много ОЗУ, следовательно полезность этой фичи стремится к нулю.
Ничего не к нулю, не всегда во время музыки требуется другая процессорная активность.

ivagor
30.01.2013, 20:54
этот метод требует больших процессорных ресурсов и много ОЗУ
Все умеют считать, но все же напишу. Если хранить в одном байте три пятиуровневых значения (разбивать байт на три значения по таблице длиной 125*3=375 байт или можно честно делить, так будет короче, но тормознее), то при частоте дискретизации 8000 Гц на секунду звука потребуется 2667 байт. В ОЗУ влезет 64-8(экран по минимуму)-2(программа с запасом)=56 Кбайт/2667 байт=примерно 20,5 секунд. На стандартный квазидиск влезет 98 секунд.
Теоретически можно попытаться не только проигрывать сэмплы, а скрестить эту штуку с одноголосым биперным движком. В результате можно будет выбирать "инструмент", которым мы играем. Правда тут вероятно будут проблемы с маленьким диапазоном и невысокой точностью задания нот из-за длинных процедур изменения амплитуды.

---------- Post added at 22:54 ---------- Previous post was at 21:10 ----------

Кстати, если ограничиться меандром, наличие трех каналов позволяет регулировать громкость даже при традиционном проигрывании по прерываниям (соответственно с дискретностью регулирования по времени 20 мс). Будет один голос и три (если не считать нулевую) градации громкости. Не четыре, т.к. бипер по понятным причинам тут уже не применишь.

Titus
30.01.2013, 23:14
Киньте, если есть, подробную доку на ВИ53.

svofski
31.01.2013, 13:39
Вот эта самая детальная из всех, что попадались
http://ftp.utcluj.ro/pub/users/nedevschi/PMP/DocI8086CP/OKI/msm82c53_2rs.pdf

Titus
31.01.2013, 13:51
Вот эта самая детальная из всех, что попадались
http://ftp.utcluj.ro/pub/users/nedevschi/PMP/DocI8086CP/OKI/msm82c53_2rs.pdf
Является ли ВИ53 точной копией?

ivagor
31.01.2013, 17:27
Пример амплитудной модуляции сигнала играемого через ВИ53 по прерываниям
39585
39586
В архиве исходник, ROM, картинка и WAV.
Тут и время между прерываниями свободно и нет ограничений на диапазон нот. Недостатки (по сравнению с "ЦАП на ВИ53+бипер"), как я уже писал - 4 уровня громкости, а не 5 и амплитуду можно менять только раз в 20 мс.
Для музыки мне кажется был бы лучше компромиссный (между числом голосов и регулированием громкости) вариант - 2 голоса, один ("тихий") с нерегулируемой громкостью, а второй ("солист") с 3мя (считая нулевой) уровнями громкости.

ivagor
31.01.2013, 17:30
По поводу доки на ВИ53. Сам я пользуюсь бумажной книжкой
Щелкунов Н.Н., Дианов А.П.
Микропроцессорные средства и системы. - М.: Радио и связь, 1989
Предполагаю, что она есть в электронном виде, но не гуглил.

Titus
31.01.2013, 17:46
По поводу доки на ВИ53. Сам я пользуюсь бумажной книжкой
Щелкунов Н.Н., Дианов А.П.
Микропроцессорные средства и системы. - М.: Радио и связь, 1989
Предполагаю, что она есть в электронном виде, но не гуглил.

Точно оно?
Скачал в инете, не нашел в оглавлении ВИ53.

ivagor
31.01.2013, 17:54
3.7 Средства счета времени...............133

Titus
31.01.2013, 19:46
3.7 Средства счета времени...............133

Спасибо, нашел)
Ишь, замаскировали)

---------- Post added at 19:46 ---------- Previous post was at 18:07 ----------

Да, кстати, сам иногда специально не пересматриваю старые записи по поводу какого-либо уже начатого проекта, делаю заново, а потом сравнивю с тем, что было, и обьединяю как бы усилия двух разных идей)

x-code
01.02.2013, 19:44
А никто не пробовал делать регулируемую громкость на ВИ53 методом широтно-импульсной модуляции? Помнится, на IBM PC в начале 90х ухитрялись загнать таймер в такой режим, когда он выдает "несущую" частоту в 16-20 кГц, а скважностью импульсов, и, соответственно, амплитудой результирующего выходного сигнала управляет ЦП путем подачи управляющих команд.

Я в подростковом возрасте, еще не зная тогда, что такое ШИМ, пытался "по наитию" воспроизвести что-то подобное на Векторовском бипере (по ВИ53 тупо не было никакой информации), и оно даже как-то регулировало громкость. Про ШИМ меня тогда папа просветил, когда я ему с гордостью продемонстрировал результат эксперимента, и даже схемку какую-то нарисовал с динамиком и интегрирующей RC-цепочкой.

BYTEMAN
01.02.2013, 19:50
Помнится, на IBM PC в начале 90х ухитрялись загнать таймер в такой режим, когда он выдает "несущую" частоту в 16-20 кГц, а скважностью импульсов, и, соответственно, амплитудой результирующего выходного сигнала управляет ЦП путем подачи управляющих команд.
там вроде как i8254 стоит.

ivagor
01.02.2013, 21:15
там вроде как i8254 стоит
На возможность ШИМа через ВИ53, насколько я могу судить, это не влияет. Только заниматься ШИМом в эмуляторах (по крайней мере вектора) не здорово, отличия с реалом заметны.

Titus
01.02.2013, 21:26
На возможность ШИМа через ВИ53, насколько я могу судить, это не влияет. Только заниматься ШИМом в эмуляторах (по крайней мере вектора) не здорово, отличия с реалом заметны.

Так можно аппаратный ШИМ сделать на ВИ53 или только программный?

Надо эмулятор, который хорошо эмулирует ШИМ)

ivagor
01.02.2013, 21:35
Я бы использовал режим 0, загружая в счетчик(и) требуемую(е) амплитуду(ы). Наверно это получается программно-аппаратный метод.

ivagor
02.02.2013, 16:19
Прикинул примерно (на бумажке), что можно выжать из ШИМа на ВИ53. Получается как-то слишком хорошо - 5битный ШИМ при Fд около 47 кГц, 6битный при 23,4 кГц. Только хранить длинные фргаменты просто негде, разве что в ERAM. С бипером мои лучшие спортивные достижения (но на реале) всего 3битный при 23,8 кГц и 4битный при 19,7 кГц.

ivagor
04.02.2013, 14:31
Попробовал в эмуляторах ШИМ через ВИ53 (6 бит при Fд=23,4 кГц) - играет, но свистит (или наоборот).

Titus
04.02.2013, 14:35
Попробовал в эмуляторах ШИМ через ВИ53 (6 бит при Fд=23,4 кГц) - играет, но свистит (или наоборот).

Если частота ШИМ'а в звуковом диапазоне, то будет свистеть)
На эмуляторе или на реале?

ivagor
04.02.2013, 14:44
Ну я, например при Fd=19,7 кГц не слышу свиста, хотя пик в спектре есть (это я не про текущую пробу, это про запись с реала ШИМа с бипера).
Справедливости ради, c включенным LF Filter в VV получше.
Эх, могу себя упрекнуть - пока был реал, можно было попытаться определить АЧХ звукового выхода вектора (вернее АЧХ связки "звуковой выход вектора+вход моей звуковой карты").

svofski
04.02.2013, 14:54
Если вам под сорок и вы слышите писк в 19.7 кГц, это у вас звенит в ушах.

ivagor
04.02.2013, 15:16
Для самопального стереорежима для ВИ53 (http://sensi.org/~svo/scalar/ware/776/) можно было бы и стерео воспроизводить, такой вот стерео-эрзац-COVOX для бедных. Основная проблема - мало места для звука.

x-code
04.02.2013, 19:31
Прикинул примерно (на бумажке), что можно выжать из ШИМа на ВИ53. Получается как-то слишком хорошо - 5битный ШИМ при Fд около 47 кГц, 6битный при 23,4 кГц. Только хранить длинные фргаменты просто негде, разве что в ERAM.

Можно было бы пойти по пути chip-tune и программно синтезировать сэмплы (правда, тут вопрос, хватило ли бы на это аппаратных мощностей ЦП)

ivagor
24.03.2013, 18:37
Здесь (http://vec06c.narod.ru/) упоминается воспроизведение сэмплов через ВИ53, но программы нет и срок хранения mp3 истек.

ivagor
25.03.2013, 11:40
Внимательно почитал текст по вышеприведенной ссылке (часть про звук), прикинул цифры - есть непонятки. Написано о воспроизведении 8-битного звука через ВИ53 с частотой 7,2 кГц (1 голос/канал), 3,6 кГц (2 голоса/канала). Если использовался ШИМ, то при 8ми битах (соответственно 256 длительностях) и частоте ВИ53 1,5 МГц частота дискретизации получится не более 5859 Гц. Если не ШИМ, то 256 уровней через ВИ53 никак не получится. Т.е. или не совсем 8битный (208 уровней максимум), или частота дискретизации была меньше 7,2 кГц.

Ramiros
25.03.2013, 13:03
Да там вся статья (не только про звук) мягко говоря приукрашена :)

ivagor
25.03.2013, 18:54
В принципе можно попробовать сочетать ШИМ с использованием от 1 до 3х каналов ВИ53, при этом достаточно использовать счетчик ШИМа до 85. При этом можно достичь частоты дискретизации до 17 с лишним кГц. Но нельзя одновременно включить или выключить два или, тем более, три канала. Фактически это создаст дополнительную погрешность квантования, и эта погрешность будет значительно превышать минимальный шаг передаваемый ШИМом (будет значительно больше 1 такта ВИ53 или 2х тактов проца). IMHO неудачный вариант, хотя можно попытаться уменьшить побочные эффекты. Например, использовать максимум два канала ВИ53 и считать ШИМом до 128, частота дискретизации соответственно уменьшится.

Pyk
24.04.2013, 23:39
Кто-нибудь изучал вопрос, в каком состоянии находятся счетчики сразу после аппаратного сброса? По даташиту их состояние неопределено, а вот как оно в реальности? Просто попалась программа для "Микроши", в которой считывается значение счетчика 0 для получания "случайных" чисел без предварительной инициализации этого счетчика (не инициализируется он и "Монитором").

x-code
23.04.2015, 12:03
Вот тут товарищи успешно эмулируют звучание, близкое к Covox, на одном канале такого же чипа, как и в Векторе, на IBM PC с 8088 процессором, который ИМХО недалеко ушел по быстродействию от ВМ80:

http://www.reenigne.org/blog/8088-pc-speaker-mod-player-how-its-done/


4.77 MHz 8088 CPU. 5 MHz seems like a lot compared to other 8-bit micros, but it takes the CPU 4 cycles to read a single byte. So, compared to other 8-bit CPUs like the 6502 or 6809, which can read a byte in one clock cycle, the effective clock speed of the 8088 is more like (4.77 / 4) = 1.19 MHz.

Может, и на Векторе что-то подобное запилить можно? Наверное, микшировать 4 канала не получится (в статье товарищи используют адскую оптимизацию, расчитанную на конвейер инструкций, которого нет в ВМ80), но, хотя бы один "вытянуть" можно?

Еще в статье описывается интересная техника псевдо-многоголосости на одном канале таймера, возможно, тоже имеющая применение на Векторе

ivagor
31.10.2015, 16:25
Пару лет назад писал про успешную пробу ШИМ через ВИ53. Тогда использовал высокую частоту дискретизации (под 24 кГц), чтобы было меньше свиста, но при этом нужно очень много памяти под звук. И исходник я тогда не выкладывал. Сегодня попробовал добавить линейную интерполяцию в 2 раза при воспроизведении 8 кГц фрагмента. В VV при включенном LF Filter (насколько помню по умолчанию он как раз включен) эффект от интерполяции есть, как на слух, так и по спектру записанного из VV аудио видно.
В обоих случаях используемый wav один и тот же - 8 кГц, 8 бит. Но воспроизводится он по-разному:
nointerp - Fs=8 кГц, 7 бит (максимальная Fs, при которой еще можно 8 бит - 5859 Гц)
interp - Fs=16 кГц, 6 бит (увы, одним битом пришлось пожертвовать при увеличении частоты дискретизации)

ivagor
31.10.2015, 17:40
Немного жести. При частоте дискретизации 22000 Гц (линейная интерполяция в 4 раза с 5500) эмуляторы звучат довольно своеобразно. В VV при включенном LF Filter более-менее (и по спектру тоже), в emu совсем жесть. На реале 100% будет ближе к VV с фильтром и даже лучше.

PPC
01.11.2015, 08:11
При отсутствии интерполяции, частоту Найквиста мой лично мозг успешно отсеивает от полезного сигнала. С интерполяцией, тяжело как-то воспринимать.
Да, rom файлы желательно всё таки в архивах по разному называть, если можно :).

ivagor
01.11.2015, 09:51
ИМХО недостаточное качество воспроизведения ШИМа и артефакты связаны с особенностями эмуляции, запись шим (биперного) с реала звучит заметно лучше, чем в эмуляторах.

ivagor
02.11.2015, 10:44
Попробовал увеличить громкость (использовать все 3 канала). Да, при этом фактически добавляется шум, уменьшается точность из за неодновременности задания счетчиков. Но на слух звучит лучше (в VV с LF Filter, возможно и на реале). В приложенном файле линейная интерполяция в 3 раза (частота дискретизации 7143*3=21429 Гц), 6 бит.

ivagor
02.11.2015, 11:09
Еще один пример с увеличенной громкостью. Линейная интерполяция в 4 раза 5357.25*4=21429 Гц, 6 бит.

ivagor
02.11.2015, 17:49
Простой способ отличить VV от emu:

mvi a,00110000b
out 8
xra a
out 0Bh
out 0Bh
in 0Bh
VV вернет 0FCh, emu - 0FDh

---------- Post added at 19:49 ---------- Previous post was at 19:40 ----------

Очень старые версии VV (2009 года) выдавали 0F9h, т.ч. можно и их отличить. Ради интереса можно проверить и старые версии emu, но лень.

ivagor
02.11.2015, 19:38
Еще проверил v06cc - выдает FC, как и VV
Для удобства проверки слепил прогу

ivagor
08.01.2016, 15:24
Спасибо Дмитрию2012, который проверил chkvvemu на Векторе-2014: FD, т.е. у b2mа правильно.

ivagor
09.01.2016, 12:35
Сделал более полный тест ВИ53 (https://yadi.sk/d/OMqReU-wmkmQk). Еще раз спасибо Дмитрию2012 за проверку на Векторе-2014. В архиве есть исходник и фото с реала. На текущий момент emu рулит в эмуляции таймера, VV и v06cc требуют доработки.
Скриншот из emu:
55499

Vslav
09.01.2016, 18:07
Возможно еще были 580ВИ53 с мелкими модификациями - фотография 580ВИ53M (300МБ) (http://u.zeptobars.ru/yuot/580/580vi53m.jpg)
Если есть непонятки и будет интерес для реверса - могу еще пошлифовать и отснять слой диффузии.

ivagor
09.01.2016, 18:53
Vslav, если когда-нибудь сделаете модуль ви53 по результатам реверса - будет очень здорово. Но вроде основные возможности заэмулированы нормально. Вот всякие мелкие и мало востребованные особенности, как в вышеприведенном случае, может еще будут вылезать.

Ramiros
12.01.2016, 23:36
VV обновился, таймер ОК :)
http://asdasd.rpg.fi/~svo/virtualvector/

artyr_n
13.01.2016, 03:41
VV обновился, таймер ОК
Под wine не запускается, как то уже с этим разбирались. У меня запускается и работает VV_684.

artyr@sklo:~$ wine --version
wine-1.6.2
artyr@sklo:~$ uname --all
Linux sklo 3.19.0-39-generic #44~14.04.1-Ubuntu SMP Wed Dec 2 10:00:35 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ivagor
13.01.2016, 08:12
Ramiros, ты не заменил палитру 1200, есть какие-то сомнения?

Ramiros
13.01.2016, 08:33
Ramiros, ты не заменил палитру 1200, есть какие-то сомнения?

Сомнений нет, я обновил чуток раньше, чем палитру увидел :)
Обновлю в следующий версии, заодно кастыль для wine придумать надо. В прошлый раз я просто закоментил проблемную фичу и скомпилил для artyr_n, но это не наш метод :)

ivagor
13.01.2016, 20:27
Для большей универсальности дополнил тест чтением с защелкиванием. Спасибо Дмитрию2012 за проверку на Векторе-2014! Фото с реала и исходник в архиве (https://yadi.sk/d/MWvbYYabmtdpf).
Теперь в emu и VV 6.86 все нормально, в v06сс с последней правкой тоже, но нет bcd.
Скриншот из emu:
55553

ZEman
13.01.2016, 21:54
artyr_n, хоть у меня и нету линукса, но я обратил внимание на то что у тебя используется wine 1.6.2 версии.
это уже довольно старая версия, сейчас самая новая 1.9.1
https://www.winehq.org/download/
возможно на более новой версии VV пойдёт нормально.

Ramiros
13.01.2016, 22:13
artyr_n, проверь этот экзешник путем подмены, заработает?

artyr_n
14.01.2016, 00:09
artyr_n, хоть у меня и нету линукса, но я обратил внимание на то что у тебя используется wine 1.6.2 версии.
это уже довольно старая версия, сейчас самая новая 1.9.1
возможно на более новой версии VV пойдёт нормально.

я ставлю с репозитария оттуда ставится та версия что я показал


artyr_n, проверь этот экзешник путем подмены, заработает?

да с этим экзешником не вылетает с ошибкой.

Ramiros
15.01.2016, 16:25
Новая версия VV выложена:
http://asdasd.rpg.fi/~svo/virtualvector/

artyr_n
15.01.2016, 16:35
под wine запустилась

PPC
21.01.2016, 13:00
VV обновился, таймер ОК :)
http://asdasd.rpg.fi/~svo/virtualvector/
Наконец-то VV может проиграть вокал в бутлодере Роботов на полной громкости без специального фикса в драйвере под этот эмулятор (фикс правда придётся оставить для совместимости со старыми версиями VV).

Но вот выдать бип после загрузки Bold BIOS 2.x и прекратить звучать в момент вывода командного промпта, как это эмулирует emu и как это было на оригинальном Векторе, VV ещё пока не умеет ;).

Ramiros
21.01.2016, 16:51
Наконец-то VV может проиграть вокал в бутлодере Роботов на полной громкости

Это я пофиксил еще в VV6.85 :)


Но вот выдать бип после загрузки Bold BIOS 2.x и прекратить звучать

Я даже не знал об этом :) и не удивительно, В картотеке bold bios я не нашел, можно его выложить?

PPC
21.01.2016, 23:13
В картотеке bold bios я не нашел, можно его выложить?

Во вложении - архив с версиями МикроДОС на 46, 47 и 56К TPA с Bold BIOS и доками/тулами. Если svofski положит этот архив в картотеку, то я его уберу отсюда. В картотеке уже есть раздел BoldBIOS, созданный когда-то Tim0xA, но он пуст.

Файл mdbold21.com в архиве - это МикроДОС с Bold BIOS 2, при старте которого и проявляется разница между VV и реалом/emu. В реале после запуска ДОС должен быть один beep и тишина. Это я помню совершенно точно, и точно также работает emu. А VV генерит некий дребезжащий звук до первого нажатия на любую клавишу, как будто антидребезговый код работает с таймером, или счётчики не останавливаются.

ivagor
28.01.2016, 21:30
Продолжается противоборство брони и снаряда. На новые версии эмуляторов ответим новыми способами детекта.
Приложил архив с программой, но если коротко, то собственно детект на данный момент такой:


mvi a,00110000b
out 8
xra a
out 0Bh
out 0Bh
mvi a,00110001b
out 8
in 0Bh
emu - 28, VV 6.87 - F8

marinovsoft
28.01.2016, 21:46
А вариант для реала, дабы было с чем сравнить?

ivagor
28.01.2016, 22:07
На случай загрузки с магнитофонного входа добавил wav. Для преобразования rom->wav есть замечательная утилита (http://asdasd.rpg.fi/~svo/scalar/ware/556/) Ramirosа.

ivagor
15.04.2016, 20:28
Сомнения в адекватности эмуляции шима были, и теперь благодаря Дмитрию2012 (спасибо!) удалось прояснить ситуацию. Он попробовал на своем 2014 три варианта шима (с разной битностью и частотами дискретизации) и вот лучший: 6 бит, примерно 22050 Гц (https://yadi.sk/d/HNw3-i_Pr36n4). Там программка генерирующая пилообразный сигнал (принцип аналогичен ранее выложенным в треде) и запись Дмитрия с реала. На мой взгляд результат отличный, практически как с ЦАПа, с этими параметрами можно и музыку проигрывать. Только даже в квазидиск маловато влезет

svofski
15.04.2016, 20:42
Звучит очень прилично! Вот бы еще послушать какие-нибудь свайпы по доступному диапазону.
Кстати, звуки удобно заливать на http://instaud.io

ivagor
16.04.2016, 21:53
Программа и запись с реала (https://yadi.sk/d/FHsM46AXr47ZP) (очередное спасибо Дмитрию2012!). Там частота качается от 20 до 11025 Гц за 2 с, потом обратно и так в цикле. Получилось не сразу, но в итоге все ОК

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

Заменил wav с качающейся частотой на версию без "улучшайзеров" (записал с реала Дмитрий2012). По форме сигнала и по спектру отличия видны, но на слух ничего не изменилось.
22 кГц - это хорошо, не свистит и все такое, но нужно очень много памяти. Раньше уже выкладывал вариант с воспроизведением звукового фрагмента, частота дискретизации которого 5500 Гц с линейной интерполяцией в 4 раза, до 22 кГц. На эмуляторах результаты неоднозначные, но благодаря Дмитрию2012 теперь известно, как это звучит на реале. Программа и wav (https://yadi.sk/d/GHgJKWxGr47tW). В программе пара доработок по сравнению с ранее выложенным вариантом. wav сразу записан без "улучшайзеров". Получилось приемлемо, не свистит, и квазидиска с таким качеством хватит на 46 секунд.

ivagor
18.04.2016, 20:50
Предыдущие варианты звучали нормально, но хотелось, чтобы и выглядел сигнал как будто после ЦАПа, без ВЧ составляющей. Благодаря Дмитрию2012 можно убедиться, что при увеличении частоты дискретизации до 32 кГц (https://yadi.sk/d/3roYDqKqr6hzR) и, тем более, до 44 кГц (https://yadi.sk/d/6824wSD1r6i2Q) ВЧ компоненты уже не только не слышно, но и не видно.

ivagor
21.04.2016, 19:19
Пришло время для музыки. Программа, играющая с КД и 3 примера (https://yadi.sk/d/egkpHRLxrBhYQ) (запуск pwm202 имя_файла.raw). Дмитрий2012 не только записал результат проигрывания на реале, но и выполнил функцию ОТК, забраковав первый некачественный вариант. По наводке svofski размещаю файлы с реала, чтобы их можно было слушать не отходя от кассы: Hallelujah (https://instaud.io/nqT), Pulsar (https://instaud.io/nqU), Sir Duke (https://instaud.io/nqV)

ivagor
22.04.2016, 21:11
И еще вариант (https://yadi.sk/d/-g3BYvOlrDTfb). Немного уменьшил частоту дискретизации, а потом уменьшил в два раза. Чтобы не свистело при воспроизведении линейно интерполируется в два раза. Фрагменты взяты из тех же композиций, что и для pwm202, но здесь они подлиннее. Спасибо Дмитрию2012 за записи с реала: Hallelujah (https://instaud.io/nvu), Pulsar (https://instaud.io/nvw), Sir Duke (https://instaud.io/nvx)

ivagor
28.04.2016, 20:06
Завершающая часть по шиму через ви53 с квазидиска.
Если добавить ДИКМ и убрать линейную интерполияцию, то качество будет выше, чем в предыдущем варианте, при одинаковом битрейте (образ (https://yadi.sk/d/EZ_k-H7VrNM5n) с проигрывателем и примерами). Записи с реала: Hallelujah (https://instaud.io/nTd), Pulsar (https://instaud.io/nTe), Sir Duke (https://instaud.io/nTf)

А для любителей экстремального LoFi можно объединить ДИКМ с интерполяцией (fdd (https://yadi.sk/d/gcBvEpX7rNM9L)) и максимальная длина фрагментов почти достигнет минуты. Примеры с реала: У кошки 4 ноги (https://instaud.io/nTg), Bad Apple (https://instaud.io/nTh), Hallelujah (https://instaud.io/nTi), Pulsar (https://instaud.io/nTj), Sir Duke (https://instaud.io/nTk)

С использованием COMANовского ERAM можно было бы играть песенки целиком.

Большое спасибо Дмитрию2012 за проявленную стойкость при выполнении многочисленных записей с реала, в т.ч. и всех перечисленных в данном посте!

vladtru
29.04.2016, 15:24
Очень интересные результаты – звучание на реальном «Векторе» отличное. Правда, очень жаль, что эмулятор выводит ШИМ с сильными помехами (но хорошо, что вообще выводит :)). Это я о VV, а EMU, вроде бы, не воспроизводит совсем. Мало помогает и включение LF-фильтра. Вот примеры звучания (композиции другие – пробовал для интереса менять в образе диска RAW-файлы на свои) на ПК, эмуляторе Virtual Vector (c LF-фильтром) и обработанный после эмулятора фильтром на 5 кГц (используется вариант проигрывателя 18I2, т.е. 9 кГц, но вывод вдвое чаще с интерполяцией).

Звучание на современном ПК: Дельфин Ecco (https://instaud.io/nVU), Заповедник (https://instaud.io/nVW), Григ (https://instaud.io/nVX).

Звук с эмулятора Virtual Vector 6.85: Дельфин Ecco (https://instaud.io/nVY), Заповедник (https://instaud.io/nW0), Григ (https://instaud.io/nW2).

Звук с эмулятора Virtual Vector 6.85 + фильтр, отсекающий частоты выше 5 кГц: Дельфин Ecco (https://instaud.io/nW5), Заповедник (https://instaud.io/nW7), Григ (https://instaud.io/nW8).

Образ диска: https://yadi.sk/d/ZB7sJTUwrPXEL

Помехи на эмуляторе такие, что они даже не до конца подавляются НЧ-фильтром, т.е. это не просто ВЧ-свист. Интересно, откуда берутся эти помехи (и можно ли от них легко избавиться) – если дело не только в фильтре, то в чём? У реального Вектора никакого сложного фильтра на выходе, естественно, нет (несколько резисторов и пара конденсаторов), но звучание чистое и свист довольно слабый даже при частотах вывода отсчётов порядка 6-8 кГц. Может быть, кто-то знает, каковы частоты среза у выходного звукового фильтра «Вектора»? Я понимаю, что точная эмуляция ВИ53 – дело непростое, и наши уважаемые авторы эмуляторов уже с ним намучались. Но так хочется, чтобы ШИМ-звук был близок к реальному! Может быть, можно поправить эмуляцию ВИ53 хотя бы в режиме одновибратора?
Кстати, хотел ещё спросить – как записывался звук с реального «Вектора»? Напрямую с выхода ПК на вход звуковой карты? Без промежуточных фильтров, усилителей и обработки? И соответствует ли звуковой выход Вектора-2014 выходу «старых» Векторов?


Если добавить ДИКМ

Это вы подразумеваете ADPCM (4-битное кодирование разницы между текущим отсчётом и предыдущим)? Мне он раньше не очень нравился, поскольку даёт заметные помехи. С другой стороны, у него есть и большие достоинства: всё же сокращение битрейта в два раза при сохранении примерно таких же частотных параметров сигнала (т.е. на слух при той же частоте дискретизации звук очень похож на 8-бит ИКМ, но с шумоподобными помехами). А на «Векторе» у APDCM есть и как бы дополнительное достоинство – поскольку вывод отсчётов идёт не 8 бит, а 6 бит (на 8 бит не хватает диапазона счётчика ВИ53), то сигнал с ADPCM можно сделать намного ближе по форме к сигналу PCM (скажем, весь диапазон от 0 до 63 охватывается всего за 4 приращения, а при 8-битном выводе – только за 16), т.е. уменьшить те самые характерные помехи. Но для этого, я так понимаю, нужно каким-то образом готовить ADPCM-файл не из 8-битного PCM, а из 6-битного.

PS.
Очень интересно было бы объединить такой проигрыватель с какой-то простейшей визуализацией (типа осциллограмм или калейдоскопов, здесь возможных вариантов очень много) – тогда было бы что не только послушать, но и посмотреть, а это намного интереснее. Я давно уже о таком мечтаю. Вот только, чем сложнее режим вывода отсчётов и чем выше частота этого вывода, тем меньше остаётся процессорного времени на графику. Но при частотах порядка 6-8 кГц (даже при её удвоении-утроении, но, пожалуй, без интерполяции), мне кажется, простая «цветомузыка» достаточно реальна.

И ещё интересный вопрос – использование жёсткого диска на «Векторе», т.к. на дискетах, конечно, хранить музыку и воспроизводить с них довольно странно (на один диск помещается не больше одной композиции). Винчестер решил бы во многом и вопрос скорости (сейчас загрузка на квазидиск с дискеты занимает чуть ли не больше времени, чем звучание самой музыки :)). Аналогично хорошо бы иметь, действительно, и более ёмкий квазидиск. Да-а, здесь хорошо видно, насколько нормальная работа с цифровым звуком требовала более дорогих ПК, с жёсткими дисками и большим ОЗУ. Тем удивительнее, что простой и дешёвый «Вектор» всё же может это делать, и неплохо!

svofski
29.04.2016, 17:42
Григ звучит волшебно!

Дмитрий2012
29.04.2016, 17:53
Кстати, хотел ещё спросить – как записывался звук с реального «Вектора»? Напрямую с выхода ПК на вход звуковой карты? Без промежуточных фильтров, усилителей и обработки? И соответствует ли звуковой выход Вектора-2014 выходу «старых» Векторов?
Звук подавался напрямую с выхода ПК на вход звуковой карты. Никакие фильтры, усилители и обработку я не использовал. Вектор-2014 полностью повторяет схемотехнику Вектора-06Ц, единственное отличие - все разъемы на плате были заменены на современные.

ivagor
29.04.2016, 18:29
Это вы подразумеваете ADPCM (4-битное кодирование разницы между текущим отсчётом и предыдущим)?
В p18d4 и p18i2d4 просто DPCM, без адаптивности. Нечто вроде IMA ADPCM я мог бы сделать, но не особо хочется париться над тем, чтобы успеть его в real-time с частотой 18 кГц и без плавания интервалов. Вот для covoxа это более реально, там можно не бояться свиста, уменьшить частоту дискретизации (и не использовать интерполяцию).


Мне он раньше не очень нравился, поскольку даёт заметные помехи.
Я считал psnr - данный дикм весьма незначительно уступает "честным" 6 битам. Особенно если сравнить с простым отбрасыванием 2х младших бит. Да и на слух это заметно.

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


поскольку вывод отсчётов идёт не 8 бит, а 6 бит (на 8 бит не хватает диапазона счётчика ВИ53)
Ну все же не диапазона счетчика, а частоты таймера. Можно и 8 бит и 7, но тогда при 1,5 МГц ви53 свистит.

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


а EMU, вроде бы, не воспроизводит совсем
Воспроизводит, но тихо, а вот свистит при этом громко

Ramiros
29.04.2016, 18:32
В LF фильтре где то косяк, буду разбираться, но быстро не обещаю, времени мало.

svofski
29.04.2016, 19:16
Моя версия почему: LF фильтр стоит после конвертера семплрейта (связка 1.5МГц ВИ53 с неизбежными 44100/48000/96000 драйвера аудио), и он пытается фильтровать артефакты такого преобразования. Если он будет стоять до (пересчитанный соответствующим образом), то артефактам неоткуда будет браться.

vladtru
30.04.2016, 11:39
В p18d4 и p18i2d4 просто DPCM, без адаптивности.

Спасибо за поправку – я просто привык к ADPCM на ПК (он здесь как бы стандартный вариант ДИКМ). А как вы готовили файл с ДИКМ, какими программами? И приращения там всё же 4-битные? Кстати, надо же как-то выложить эти программы в картотеку ПО с пояснениями, чтобы люди могли воспроизводить свои композиции. Ну и с исходниками, если вы не против.

А как влияет на звук интерполяция – он становится как-то заметно лучше? Мне кажется, большой разницы между интерполяцией и простым повторением отсчёта быть не должно – частоты будут одинаковые (а это самое главное слышимое ограничение при низких битрейтах), разве что ступеньки немного сгладятся, т.е. искажений будет чуть меньше. Я это к тому, что, если делать вывод графики во время звучания, то надо будет экономить время и регистры :).


Я считал psnr - данный дикм весьма незначительно уступает "честным" 6 битам.

Мне кажется, если нужно экономить память (а на «Векторе» нужно :)), то ДИКМ очень даже хорош. Качество звука вполне приемлемое, и действительно в этом случае сравнительно мало отличается от ИКМ (тем более 6-битной ИКМ). Конечно, при частоте дискретизации 20 кГц и ИКМ звук заметно чище и приятнее, но из-за ограничений памяти реально более применим именно ДИКМ 9 кГц (битрейт в 4.4 раза меньше, ~до 1 минуты на квазидиске, ~до 3 минут на флоппи-диске). А если надо поместить в память больше, то можно уменьшить частоту ~до 6 кГц и меньше.


Ну все же не диапазона счетчика, а частоты таймера.

Имелся в виду диапазон длительностей импульсов, а он, конечно, зависит от входной частоты таймера. Но увеличить эту частоту даже в 2 раза было невозможно – у ВИ53 максимальная входная частота 2 МГц, да и минимальная частота звука в режиме делителя частоты тогда выросла бы тоже.

А вот о необходимости удвоения-утроения частоты вывода (чтобы не было свиста) я как-то сначала совсем забыл (мне вообще казалось, что мы в 90-е этого не делали, т.к. совершенно этого не помню, но потом подумал, что, раз уж сильного свиста не было, значит, всё же делали :)) – даже не учёл это в статье о «Векторе». А вы пробовали воспроизводить на частоте именно 6-9 кГц на реальном Векторе – свист при этом сильный? Если у вас есть такая запись с реального Вектора, выложите её, пожалуйста.


Воспроизводит, но тихо, а вот свистит при этом громко

А у меня в EMU все варианты с квазидиском не работают – выдают какой-то кратковременный шум и всё, но программы в ROM звук воспроизводят (может, дело именно в эмуляции квазидиска?).

ivagor
30.04.2016, 17:34
А как вы готовили файл с ДИКМ, какими программами? И приращения там всё же 4-битные?
Для выполнения ДИКМ накропал скрипт на матлабе (без использования dpcmopt, dpcmenco и dpcmdeco). Приращения закодированы с использованием 4х бит. Матлабовский вариант выкладывать не буду, если соберусь переделать на чем-нибудь нормальном - выложу.


А как влияет на звук интерполяция – он становится как-то заметно лучше? Мне кажется, большой разницы между интерполяцией и простым повторением отсчёта быть не должно – частоты будут одинаковые (а это самое главное слышимое ограничение при низких битрейтах), разве что ступеньки немного сгладятся, т.е. искажений будет чуть меньше.
Я очень занудный - простое повторение это тоже интерполяция, только с использованием однородного фильтра, или, если угодно, полинома 0го порядка. Интерполяция убирает "лишние" повторения спектра (которые в данном случае попадают в слышимый диапазон и будут свистеть, если их оставить). Линейная делает это лучше, чем простое повторение, хотя, с другой стороны, она сильнее портит сигнал в основной полосе.


А вы пробовали воспроизводить на частоте именно 6-9 кГц на реальном Векторе – свист при этом сильный?
Дмитрий2012 записал с реала варианты с 6/7/8 битами и соответствующими частотами дискретизации - 7 и 8 свистели (что неудивительно), 6 - нет. Выкладывать эти (7/8) варианты мне не хочется, и без свиста много вариантов получилось.


у ВИ53 максимальная входная частота 2 МГц
Да, но, например, в Орионе-ПРО 2,5 МГц. Не в курсе, применяется ли там ВИ53Д или разгоняется стандартный таймер, но он работает. Правда, насколько помню, там он со звуковым выходом никак не связан. 2,5 МГц увеличили бы разрядность звукового шима до 7 бит без свиста.

Про emu интересно, но идей никаких нет, может b2m знает, в чем подвох.

b2m
01.05.2016, 16:24
Про emu интересно, но идей никаких нет, может b2m знает, в чем подвох.
Просто очень тихо. Ну и с жутким высокочастотным шумом. Незнаю, когда будет время заняться эмуляцией подобных вещей.
По поводу подвоха, может версия какая-то очень старая? Других идей нет.

ivagor
01.05.2016, 17:43
Эффективный вариант реализации связки ДИКМ+линейная интерполяция можно подсмотреть у DDp: 1 (http://zx-pk.ru/threads/9368-apogej-bk01-i-apogej-bk01ts-obsuzhdenie.html?p=868284&viewfull=1#post868284), 2 (http://zx-pk.ru/threads/9368-apogej-bk01-i-apogej-bk01ts-obsuzhdenie.html?p=868936&viewfull=1#post868936).
Из интереса преобразовал его звуковой фрагмент в самый компактный вариант (для p18i2d4.com). Полоса немного поуже, соответственно и качество похуже, но мне показалось нецелесообразным делать "качественную" версию.

vladtru
11.05.2016, 23:31
Выложил в Ютуб ролик с пятью примерами звучания "Вектора" в режиме 9 кГц 4-бит ДИКМ с удвоением частоты: https://www.youtube.com/watch?v=DCwcQM6EPxk

Чтобы не смотреть на пустой экран, добавил в программу (прямо в отладчике VV) команды вывода в палитру (OUT 0Ch) в разных вариантах (вместо "пустых" команд-задержек XTHL и NOP по адресу 263h) – получилась простенькая "цветомузыка" :).

ivagor
13.05.2016, 18:11
Вероятно первый пример ШИМа через ВИ53 на векторе - Буратино на диске muzspace (http://asdasd.rpg.fi/scalar/ware/821/). Был неправ, когда в письме Дмитрию сожалел, что не использовали такую возможность в начале 90х.

Не хочется делать отдельный пост в ветке про картотеку, напишу здесь. В упомянутой карточке есть неточности, но отчасти они вызваны некорректными описаниями, которые выдают сами программы:
1. Ковокс там используется только в Саманте
2. Для современных версий emu приведенный фрагмент конфига нужно немного изменить
3. Чип и дейл играет через бипер

vladtru
16.05.2016, 10:25
Да, ШИМ, при всей его очевидности для электронщиков, оказался не так-то прост и очевиден для программистов. Например, мы в УСПИДе добрались до ШИМ-звука только в 93-м году. Причём я же прекрасно знал о применении ШИМ в электронике и даже интересовался, как воспроизводился оцифрованный звук через PC-спикер на IBM (а ещё раньше - как делалось изменение громкости при выводе через простейший бипер у БК, Спектрума а также, например, в электронных часах). Но с "Вектором" это никак в практическом плане не ассоциировалось – казалось, что ВИ53 способен только на простейший "прямоугольный" звук и без всяких изысков. Лишь после обсуждения этой темы с Романом Кузнецовым (автором Амбала, Alien Ambush, Аниматора и т.д., а тогда работавшего над разными обучающими программами на РС и Макинтоше) стало понятно, что на "Векторе" это тоже вполне осуществимо и как конкретно это сделать.

Ramiros
21.05.2016, 14:07
Обновил VV688, скачать можно тут http://asdasd.rpg.fi/~svo/virtualvector/

Основная причина обновления - Улучшено качество фильтрации LF фильтра

vladtru
22.05.2016, 10:02
Основная причина обновления - Улучшено качество фильтрации LF фильтра

Спасибо! А с чем связано наличие сильного писка на частотах порядка нескольких килогерц - например у P18I2D4 (DPCM на частоте 9 кГц) писк на частоте около 2 кГц и кратных ей? На реальном ПК такого писка нет. У PWM202 (обычный звук PCM на частоте 20,2 кГц) в эмуляторе сильный писк на частоте порядка 3,5 кГц.

И ещё просьба – может быть, можно в эмуляторе сделать настройку частоты LF-фильтра, что было бы удобно для полного удаления ВЧ-свиста в ШИМ-звуке.

x-code
31.05.2016, 12:39
Выложил в Ютуб ролик с пятью примерами звучания "Вектора" в режиме 9 кГц 4-бит ДИКМ с удвоением частоты: https://www.youtube.com/watch?v=DCwcQM6EPxk

Как по мне, так звучит ничуть не хуже, а на некоторых композициях - даже и лучше, чем оцифрованный звук в игровых приставках той же эпохи :v2_thumb: Всегда верил, что ШИМу на ВИ53 быть; можно сказать, сбылась одна моя маленькая мечта детства :)

dbk
02.06.2016, 13:02
Обновил VV688, скачать можно тут http://asdasd.rpg.fi/~svo/virtualvector/

Основная причина обновления - Улучшено качество фильтрации LF фильтра

Рамирос, подскажите куда копнуть, с недавних пор VV стал выдавать вот такое вот окно: https://www.cubbyusercontent.com/pli/vv_bug.JPG/_f5b7860c14c04545b5194692eee5b81d
Откат на предыдущие версии ничего не дал.
Система вроде как была, так и осталась.

Ramiros
03.06.2016, 07:03
Рамирос, подскажите куда копнуть, с недавних пор VV стал выдавать вот такое вот окно: https://www.cubbyusercontent.com/pli/vv_bug.JPG/_f5b7860c14c04545b5194692eee5b81d
Откат на предыдущие версии ничего не дал.
Система вроде как была, так и осталась.

С ходу не могу сказать, опиши подробней, когда вылетает, при запуске или что то сделать пытаешься, и что эмуль после этого делает, работает или вешается или закрывается, чем больше информации, тем проще найти косяк

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

Разобрался, это система не дает сделать запись в реестре, попробуй запустить эмуль от имени администратора, да какая ось у тебя ? может антивирус или файрвол не пускает?

dbk
03.06.2016, 22:44
Разобрался, это система не дает сделать запись в реестре, попробуй запустить эмуль от имени администратора, да какая ось у тебя ? может антивирус или файрвол не пускает?
Скорее всего так и было. Систему снес - проблема ушла. Может если будет время/желания - добавьте "косметические" сообщения обработки ошибок запуска эмулятора (как пример - не смог записать в реестр и т.д.) чтобы было понятно, что происходит с программой.

svofski
08.10.2016, 17:05
Во вложении - архив с версиями МикроДОС на 46, 47 и 56К TPA с Bold BIOS и доками/тулами. Если svofski положит этот архив в картотеку, то я его уберу отсюда. В картотеке уже есть раздел BoldBIOS, созданный когда-то Tim0xA, но он пуст.


Не прошло и года, как svofski положил:
http://asdasd.rpg.fi/scalar/ware/835/

Могу поправить описание в соответствии с пожеланиями уважаемого PPC.

svofski
13.10.2016, 14:46
Экспериментальная меломанская версия в06цжс: http://asdasd.rpg.fi/scalar/vector06js/uncompiled.html?roms/pwm18i2.fdd
(может быть редактируема по живому, хотя ближайшие часов 10 вряд ли)

ivagor
13.10.2016, 18:23
svofski, а этот (https://yadi.sk/d/yw5SYAWKtJBkG) проигрыватель пробовал? Его я выкладывал в ковоксной ветке. Там "стандартные" частоты дискретизации и wavы. ШИМный проигрыватель - wavpwmq
Сам я попробовал и похоже на данный момент твой эмулятор лучше других играет ШИМ
"Но зато мой дру-у-уг лучше всех играет ШИМ!"

svofski
14.10.2016, 03:38
ivagor, если бы ты еще навел меня на местоположение wavpwmq, было бы здорово. На этих образах я нахожу только *cvxq.com

(Ковокс у меня не поддержан, хотя это вряд ли окажется совсем уж непосильной задачей)

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

Поигрался еще чуть чуть с фильтрами, сделал по умолчанию так, как мне больше всего нравится и неплохо звучит с более традиционными способами звукоизвлечения из ВИ53 и АЫ.

Если подвести мыша вниз под кнопку загрузки, появится тайная панель управления фильтрами.

ivagor
14.10.2016, 07:19
Пардон, вот (https://yadi.sk/d/g52aicPbwobCo) обновленные образы

svofski
14.10.2016, 12:39
Послушал, звучит в соответствии с моими ожиданиями. Кстати, надо бы все это в картотеку.

Вот WAVAYQ у меня совсем не работает. И на других вещах я замечал, что АЫ, который я позаимствовал в emuscriptoria, некоторые существенные звуки как-то пропускает.

Ramiros
14.10.2016, 16:45
Послушал, звучит в соответствии с моими ожиданиями. Кстати, надо бы все это в картотеку.

Вот WAVAYQ у меня совсем не работает. И на других вещах я замечал, что АЫ, который я позаимствовал в emuscriptoria, некоторые существенные звуки как-то пропускает.

Когда в каком либо канале включен режим огибающей но генератор тона и шума выключены, на выход должна переть огибающая в чистом виде, а у тебя судя по всему ничего не идет ))
Та же фича касается уровня громкости

svofski
14.10.2016, 17:13
Ramiros, может быть. Надо будет разбираться. До сих пор я старался не очень-то закапываться в код АЫ.

ivagor
22.04.2018, 13:58
Тема почти подходит, если почти не считается - могу удалить и перенести куда-нибудь.
SegaBoy сделал (http://zx-pk.ru/threads/29077-igraem-melodii-na-vi53.html) для Апогея проигрыватель мелодий из castlevanии, а я конверснул на вектор.

svofski
22.04.2018, 17:31
http://sensi.org/scalar/ware/899/

SegaBoy
23.04.2018, 00:02
SegaBoy сделал (http://zx-pk.ru/threads/29077-igraem-melodii-na-vi53.html) для Апогея проигрыватель мелодий из castlevanии, а я конверснул на вектор.
От себя добавлю - для написания программ использую Прекрасный ассемблер (https://svofski.github.io/pretty-8080-assembler/), для отладки - EMU (http://bashkiria-2m.narod.ru/index/emul/0-8). svofski, b2m, ivagor - огромное спасибо!

Pyk
09.04.2019, 15:09
На первых страницах темы упоминались некие программы clrs и clrslow. Из контекста можно понять, что оно еще и воспроизводит что-то на AY, то есть это не clrs.rom, отображающий на экране 256 цветов. Подскажите, плиз, что это и где взять? В картотеке не нашел...

P.S. Нашел какую-то версию clrs.rom со звуком здесь (https://zx-pk.ru/threads/11029-vektor-06ts-emulyatsiya-kr580vi53.html?p=229092&viewfull=1#post229092). Ссылка на clrslow в теме про Chaos Construction 2009 уже нерабочая.

ivagor
09.04.2019, 17:55
Вроде clrslow это была мая хака clrs b2ma с добавлением AYковой музыки. Просто проверка идеи (идея оказалась рабочая), сегодня никакой ценнности не представляет.

b2m
10.04.2019, 08:57
Вот ссылка на мою версию в картотеке: clrs.rom (http://sensi.org/scalar/ware/770/)