samstyle / Xpeccy

Multiplatform emulator of retro computers
MIT License
71 stars 13 forks source link

[FR] Звуки дисковода и LED для номера трека #88

Open alexanderk23 opened 3 years ago

alexanderk23 commented 3 years ago

В Unreal и VICE есть такая вот люто обожаемая мной фича, добавляющая сотни ламповости. В анриле сделано просто двумя вавками "трек вперёд / трек взад", в вайсе круче - ещё и шуршание диска в конверте слышно при включенном моторе. Не самая полезная фича, конечно, но вдруг найдётся время когда-нибудь и на неё )

Volutar commented 3 years ago

Звук перемещения головки различается для разных дорожек, помимо того что он немного отличается и между вперед/назад. По крайней мере для 5.25". Это ж нужно звуки для всех дорожек хранить. Или проанализировать и составить алгоритм генерации этого звука. Что еще веселее. А еще нужен звук двигателя и включения и отключения двигателя. Некоторый софт любит досрочно отключать мотор.

holub commented 2 years ago

и вообще вроде бы в каких то софтах юзали дрыгание дисководом для издаввание звуков но нигде это как всегда не эмулируетсо? как всегда токо реал....

В M.A.M.E. эмулируется звук дисковода

holub commented 2 years ago

В M.A.M.E. эмулируется звук дисковода

этот тот который наука не знает как запустить? эмулируетсо это когда играетсо рандомный семпл? или эмулируетсо как бипер (что нам и нужно)?

Эмулируется сэмплами - но эффект "полного присутсвия": и вращение и дерганье головы. Запустить в первый раз боль - но можешь меня пингануть, я помогу.

Volutar commented 2 years ago

Длительность щелчка при движении шагового двигателя маленькая, но в итоге в несколько раз длиннее периода 6мс (стандартная скорость для 5.25"). Они не "обрезаются" с началом следующего, а должны микшироваться. "Длина" такая связана с "эхом", акустическим хвостом, и резонансными эффектами в корпусе дисковода. Причем спектральные характеристики меняются в зависимости от положения головки (ну и направления, как я выше писал). Если пытаться эмулировать воспроизведение "звуков" головкой, то нужно хотя бы рабочий пример из спектрума, а то лично у меня есть сомнения что ВГ93 допускает тайминги отличные от 24/12/6/3. Такие извращения с дисководом делаются всякими ардуинами и полным контролем этих линий. И как мне видится в эмуляторе они лишние (в отличие от стандартных звуков вращения/движения головки).

Я записывал звуки отдельного движения головки между соседними дорожками, и сразу между кучей, и в принципе склеивание микшированием множества отдельных щелчков почти не отличается от звука реального движения между несколькими дорожками.

Volutar commented 2 years ago

Ещё раз, звук перемещения состоит из щелчка, и акустических хвостов, ревербирации, звона корпуса, и прочего. И при создании перехода на несколько дорожек нужно их микшировать как следует. Либо синтезировать эти акустические хвосты, всю сопутствующую ревебрерацию из склеенной очереди. Иначе получится срань как со звуком перемещения в gotek. И все равно нужно учитывать то в какой части происходит движение, и в какую сторону. Спектральные характеристики щелчков отличаются на 0й и на 79й дорожке, как отличается и шаг вперед от шага назад.

Volutar commented 2 years ago

А и не надо имитировать резонансы. Достаточно записать отдельные звуки перемещения головки вперед от 0 к 1, от 1 к 2 и так до 84, и обратно. Со всеми акустическими хвостами. 170 сэмплов. И их спокойно склеивать с перехлестом (микшированием). SDL насколько я знаю такое легко делает. Плюс фоновое зацикленное вращение диска, на 3-5 оборотов - хватит. Можно с и без (звуки разумеется разные). В итоге может получится очень правдоподобное звучание.

samstyle commented 2 years ago

А главное - кто тот герой, кто будет запихивать это в эмуль? wait, oh shi...

Volutar commented 2 years ago

Звуки записать несложно. Они фактически уже записаны.

holub commented 2 years ago

https://github.com/mamedev/mame/tree/master/samples/floppy

Volutar commented 2 years ago

https://github.com/mamedev/mame/tree/master/samples/floppy

Что-то они какие-то слабоватые, заглушенные. Плюс вообще никакого учета расположения головки и направления, т.е. один и тот же звук на любое перемещение. Плюс звук "длинного" перемещения, на неопределенное количество дорожек. А между тем на слух однодорожечное перемещение прекрасно отличается от 2х и 3-4х. Здесь свои записи выложил: https://volutar.myds.me/zx/floppysound/ (записывал конденсаторным микрофоном на дисководе, управляемом с ардуины, т.е. отдельно мотор, отдельно головка).

В fdd5_step_0_83.wav записано движение от 0 до N и назад, и прекрасно слышно в какую сторону происходит движение. Это как образец. Периодичность 6мс. Если "синтезировать" звук движения через несколько дорожек путем склеивания одиночных (как в fdd5_step1_0_83_0.wav), то получится фактически такой же результат (при правильном микшировании).

Volutar commented 2 years ago

в основном отличие в громкосте

Не-а. Слышно это одинарный или двойной пик.

сильно большая частота (изменения большо похожо на резонансы : )

Резонансов там достаточно. Но записывалось с открытого дисковода. В реальности как правило они как минимум внутри кожухов стоят, и верхние частоты заглушены, т.е. ближе к тому что в MAME.

можошь все тожо самое но помедленее 1 тык в сек например

Не. Год назад записывал, не вижу резона заморачиваться. Что есть то есть. Если вдруг будет внедрено, и понадобятся более чистые сэмплы, то уже можно будет помучиться.

тут опять жо отличия минимальные

Это ты 2.5 минуты в 700 пикселей скукожил? Сильнее бы утрамбовал, глядишь вообще отличия бы исчезли.

Volutar commented 2 years ago

Сэмплы можно сократить, уменьшить хвосты, уменьшить резонанс, подзаглушить, зафиксировать дисковод, положить на демпферный материал. Сам щелчок можно уместить максимум в 50мс, а не в 250мс. Пики выравнивать не нужно, достаточно ориентироваться на одинаковые промежутки между шагами. Но еще раз - не вижу смысла заморачиваться этими "вычищениями", пока сам код не будет поддерживать всё это.

Volutar commented 2 years ago

С обычной ВГ скорость перемещения 6мс, 12мс, 20мс, 30мс. С турбированной ВГ соответственно 3мс, 6мс, 10мс, 15мс.

Другие тайминги возможны только при прямом взаимодействии с дисководом, мимо ВГ. Обычно этим страдают всякие любители поиграть на дисководах всякие Имперские Марши https://www.youtube.com/watch?v=yHJOz_y9rZE Не уверен что 5.25" подобное умеет. Насиловать свой как-то жалко.

Volutar commented 2 years ago

для имперских маршов ссобственно ии нужна эмуляция

Не получится. ВГ не умеет иных таймингов. Точного управления нет. Нет ни одного софта на Спектруме или других компьютерах со стандартными контроллерами, которые бы дисководом произвольные звуки генерировали. Это все с ардуинами пришло. Максимум - подпёрдывать на полдюжине частот.

Volutar commented 11 months ago

В общем поэкспериментировал я давеча со звуками движения головки. Есть 2 жизнеспособных варианта:

Вариант 1:

Вариант 2:

Думаю есть смысл в варианте №2. Минимальная нагрузка на процессор (не нужно 22 сэмпла микшировать как в №1) Протестировал - звучит вполне аутентично. Пример: fdd5_motor_combined.mp3.zip

Также ко всему этому нужно микшировать звук вращения (звуки разные - с дискетой и без).


Вообще звук начала для варианте №2 тоже желателен, но выделить его, и собирать общий звук и с ней - не намного сложнее - звук просто будет собираться из 3х частей (пред-звук + тело + шлейф).