1

Тема: Эмулятор и ЯЗС

А вообще, хотя бы теоретически, возможно в эмулятор добавить Ячейку ЗвукоСинтеза?

2

Re: Эмулятор и ЯЗС

Вообще, почти для всех известных аналоговых синтезаторов были написаны программные эмуляторы в виде плагинов.
Так что в принципе это на 100% возможно.

Вопрос в том, есть ли на форуме люди достаточно опытные чтобы сделать программную модель для аналоговой части ЯЗС?
Насчет цифровой-то части сложностей быть не должно. А вот насчет аналоговой у меня есть только общее понимание как это делать. В деталях я этот процесс представляю намного хуже, а опыта моделирования таких штук нет совсем.

Второй вопрос - а насколько точно ее вообще можно эмулировать?
Проблема с аналоговой частью в том, что у всех деталей есть разброс параметров. Если взять две ЯЗС, то они не будут звучать на 100% одинаково. А программная модель  - это такой "сферический конь в вакууме" - можно считать, что это ЯЗС из деталей с 0% точностью, поэтому она будет давать звук чуть-чуть другой по сравнению с любой железной версией.

И еще есть вопрос с нестандартным программированием ЯЗС. Можно ведь упростить создание модели ЯЗС, если ограничиться только стандартными режимами работы. Но тогда, если попробовать ее программировать не так, как планировали разработчики, то упрощенная модель скорее всего будет давать сильно отличающийся от реальной платы звук.

3

Re: Эмулятор и ЯЗС

Что значит "нестандартное программирования ЯЗС"?

Я не разбираюсь в написании эмуляторов (да и, вообще, программ для РС), но, предполагаю, что добавить в эмулятор "Агата" источник звука на 580ВИ53 несложно. Чуть фантазии: во-первых, можно взять за основу модель AY8912 от какого-нибудь эмулятора и использовать её. Или скрестить её с моделью 580ВИ53, взяв генератор звука от ВИ53 и огибающие - от AY. Что касается фильтров, то, если я правильно помню, популярная библиотека bass.dll, которая использована во многих плеерах и играх, имеет функции эквалайзера, которые можно использовать для фильтров.
Что касается прерываний, думаю, это тоже вполне можно реализовать. Музыкальная клавиатура - для неё можно использовать клавиатуру компьютера и/или сделать возможность работы с MIDI-портом, благо алгоритм этот прост, как мычание...

4 Отредактировано avivanov76 (16-05-2021 01:25)

Re: Эмулятор и ЯЗС

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

Между ВИ53 и AY8912 отличий гораздо больше, чем сходства. Даже разрядность счетчиков не та, у AY8912 - 12 разрядов, а у ВИ53 - 16.

Эффекты в bass.dll - для данной цели вряд ли подойдут. Они должны навешиваться на стрим, у них значения параметров очень ограничены. Да и потом, как подбирать параметры? На слух?

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

Правильный подход состоит в том, что сначала надо промерять АЧХ фильтров (с какой точностью - не знаю). Потом надо как-то определить требуемый порядок фильтра. Ну и наконец, взять эту АЧХ как передаточную функцию и по ней попробовать посчитать параметры.

Кроме АЧХ есть еще фазовые сдвиги, которые тоже хорошо бы учесть. Потому что два колебания в противофазе друг друга гасят. И если на фазовые сдвиги забить, то в микшере какие-то частоты могут просто пропасть.

Для реализации огибающих надо снимать реальную форму огибающей. Огибающие от AY8912 - цифровые и изрядно ступенчатые. А в ЯЗС - гладкие линии.

Тут кстати, еще вопрос, а насколько та плата, которая у нас есть, пострадала от времени. Не получится ли так, что мы что-то измерим, а потом окажется, что у нее половина электролитов высохла и параметры уехали. То есть, по хорошему, надо все детали снимать и мерять их значения.

Ну и самое мутное место - переходные процессы, когда что-то переключается в процессе воспроизведения. Как к этому подойти - я не знаю. Что-то ничего кроме сэмплирования в голову не приходит.

5 Отредактировано AlexBel (16-05-2021 08:39)

Re: Эмулятор и ЯЗС

AY8912 я привёл в пример только в плане использования из его модели каких-нибудь решений. По фильтрам - очевидно, ЯЗС собирались из чего попало и какого-то определённого, стандартного, их звука не существует. Так что и точность эмуляции - относительно чего? Если относительно имеющего образца, то кто сможет сравнить? Да и, вообще, это техника не того класса, чтобы выслушивать там какие-то мелочи в звуке. Думаю, вполне достаточно приблизительной эмуляции и те же огибающие от AY8912 вполне могут подойти. Точнее, огибающая. Ну кто там заметит её ступенчатость? Или, если уж на то пошло, есть другие программные модели звуковых генераторов - OPL, SID, их тоже можно использовать в качестве базы.
Впрочем, я, как уже говорил, ни разу не писатель для РС, тем более, таких сложных вещей, как эмуляторы, поэтому виднее тем, у кого в этом есть опыт...

6 Отредактировано Voldemar0 (16-05-2021 14:56)

Re: Эмулятор и ЯЗС

Тут есть ещё один вопрос: каков разрыв между реальной ЯЗС и идеальной ? Т.е. когда авторы её разрабатывали, они ведь исходили из каких-то "музыкальных" вопросов, но их сверху ограничивала сложность итоговой схемы. Например, мы видим в схеме прямоугольный перестраиваемый генератор, за ним стоящие переключаемые фильтры. Фильтры не очень сложные. Но на самом ли деле авторы хотели видеть там именно такие фильтры ("плавные") или же при разработке ПО они считали эти фильтры идеальными (например, с почти прямоугольным срезом АЧХ) и само ПО исходит из этого ?
Видели ли они в ВВ53 именно источник прямоугольника или же ПО исходит из того, что там "как бы синус" на выходе и если в эмуляции сделать там реальный синус, то звук бы стал гораздо более верным (именно на том ПО, которое существует сейчас) ?

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

Простейший вопрос: вот встроенный звук в агате. Маленький динамик, который встраивали в системник. Или динамик побольше, закреплённый в Юность 404 - даже они звучат немного по разному. А если хорошую аккустику подключить - то там и низы пробиваться начинают,
и верхи посимпатичнее. А авторы музыки для какой комбинации аккустики писали свои проги?
Ну да, понятно, что они об этом и не думали. Но вот разработчики ЯЗС уже вполне могли делать ЯЗС исходя из какой -то конретной идеальной модели синтеза.

Я так думаю, тут бы надо глубоко вникнуть в литературу, вот хотя бы "музыка, электроника, интонирование" - там 200 страниц мыслей о синтезе звука электронной схемой, и, наверняка, там есть какие-то намёки на то, что реально ожидали от ЯЗС. Возможно, если будет ясна идеальная модель ЯЗС, то и задача по её моделированию станет заметно попроще, чем пытаться эмулировать всё до отдельного транзистора.

7

Re: Эмулятор и ЯЗС

А наработки автономного эмулятора ЯЗС могут как-то помочь в реализации модуля ЯЗС для агатэмулятора?
Ведь автономный (программный) прекрасно работает:
https://shiru.untergrund.net/software.shtml

https://shiru.untergrund.net/pic/yachpms.png

8

Re: Эмулятор и ЯЗС

Мне кажется, их можно было бы взять за основу. Правда, все равно придется какую-то прослойку дописывать: надо будет ловить обращения к виртуальным портам ЯЗС и превращать их в команды включения/выключения нот.

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

И некоторые вещи эмулятор в трекере просто не может повторить. Например, вывод оцифрованного звука в режиме PWM на ЯЗС.