14

Играем на компьютерной пищалке

Приветствую, Пикабу! В своём первом посте хочу поделиться каверами на саундтреки из визуальной новеллы Бесконечное Лето для системной пищалки.

Несмотря на тематику сообществ программистов и БЛ, думаю, послушать интересно будет всем.

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

Написал их далёким летом 2015го под впечатлением от визуальной новеллы Бесконечное Лето.

В качестве языка и среды разработки выбрал Delphi - на тот момент мой основной инструмент.

Управление пищалкой осуществляется через порты ввода-вывода, доступ к которым для простых приложений закрыт - нужен драйвер. Выбор пал на подписанный и свободный WinRing0 с готовым функционалом для чтения\записи портов ввод-вывода. Итог - простенький синтезатор-клавиатура:

Извлечение звука - процесс нехитрый: направить вывод тактового генератора на пищалку, задать генератору делитель базовой частоты и включить звук - за это отвечают три порта с номерами 0x61, 0x42 и 0x43. Но как передать нотный текст, не тратя часы на подгонку таймингов и частот? Было решено написать синтезатор, переводящий понятные человеку текстовые нотные обозначения в частоты и паузы.


В итоге получился синтезатор, позволяющий играть стаккато, легато и нон-легато, играть триоли и квинтоли, а также эмулировать форшлаги и морденты - в простой и удобной текстовой записи в формате "AA:BB", где AA - модификатор (длительность и стиль), BB - нота.

Пример: "!E:D3 E:0 E3:C1 E3:D1 E3:C1" - стаккато Ми третьей октавы, восьмая пауза и триоль из восьмых До-Ми-До первой октавы.


Одноголосный синтезатор - хорошо, но можно ли на монофонической пищалке играть аккорды? Можно. Для этого сделаем интересный трюк: если очень-очень быстро переключать ноты - для слушателя это будет очень похоже на аккорд, и чем выше частота переключения - тем "однороднее" звук. На этом этапе столкнулся с необходимостью жёстко выдерживать тайминги, засекать время и выдерживать паузы с точностью до наносекунд. Так как системный Sleep начинает плыть уже на единицах миллисекунд (спасибо планировщику), пришлось писать свою реализацию задержек на ассемблере. Собрав всё вместе, получил многоканальный синтезатор, где в каждом канале идёт своя линейка нот, и синтезатор очень быстро переключается между ними.


Синтезатор готов. Осталось "всего ничего" - перевести саундтрек в ноты. Часть треков удалось найти нотами для Guitar Pro (часть из них пришлось переписать), часть подбирал на слух, и вот результат:

То, что получилось, предлагаю оценить и вам.


Оригинальные треки:

Between August and December - Blow With The Fires

Between August and December - Lightness

Between August and December - Sayonara Cruel World

Sergey Eybog - A Promise From Distant Days

Sergey Eybog - Everlasting Summer

Sergey Eybog - Forest Maiden

Sergey Eybog - I Don't Blame You

Sergey Eybog - Let's Be Friends (Lena Theme)

Sergey Eybog - Memories

Sergey Eybog - Mystery Girl

Sergey Eybog - Trapped In Dreams


Ссылки:

Готовые бинарники ([1ch] - одноканальные версии, [2ch] - двухканальные): https://www.dropbox.com/s/1y8zx7ug7jv7u2v/%5BBeeSynth%5D%20E...

Исходники: https://www.dropbox.com/s/dlr3862gfdmcd2o/%5BBeeSynth%5D%20S...

Синтезатор-клавиатура и его исходники: https://www.dropbox.com/s/2bje6sd49ennzif/Beeper%20Synthesiz...

Исходники WinRing0: https://www.dropbox.com/s/t9z7u6ovm3v9yj7/WinRing0.zip?dl=0


Если кого-то заинтересует техническая сторона - рад буду обсудить в комментариях или в вк: https://vk.com/id23507301


И, если пост и тема понравятся, в следующий раз напишу про воспроизведение на пищалке настоящей музыки - WAV-файлов.

P.S.: Первая картинка взята из этого поста: https://pikabu.ru/story/on_sovsem_pro_menya_zabyil_odni_kora...

1
Автор поста оценил этот комментарий

Знаешь, притащил бы ты это в Лагерь, ибо хейтеры не спят, а у нас точно оценят.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Вообще, сначала хотел запостить именно в Лагерь, но подумал, что тематика скорее общая - как звучать на чём-то, отличном от динамиков
показать ответы
0
Автор поста оценил этот комментарий

Почему именно на пищалку?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Потому что необычно. Ни у кого не видел подобного. На флоппи - да, а про пищалку (незаслуженно) забыли.

0
Автор поста оценил этот комментарий

Win7 x64. Экзешники запускаются, картинки есть, звука нет. "Пианино" тоже не звучит, драйвер не встал, да и вообще, хрен знает, есть ли в компе сама "пищалка" - я ни разу про неё не вспоминал за пять лет жизни машины. Может и найду - поковыряюсь чуток, но без фанатизма.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Если приложение запустилось, но звука нет - значит, нет самой пищалки. В любом другом случае вылетит ошибка при старте. Кстати, в VMware пищалка эмулируется через обычный динамик. Вариант для хардкорщиков)
0
Автор поста оценил этот комментарий

Класс! У меня еще со времен ХР были подобные exe`шники с мелодиями звездных войн, шерлока холмса и еще какой-то. Но с переходом на 7-ку, это дело перестало работать, а подобие синтезатора с названием "Баян 1.11.exe" стало воспроизводить не в бипер, а в динамик.

Хотел когда-то сам сделать подобные, но я не программист, да и где-то наткнулся на инфу, что на 7-ке нельзя получить доступ к биперу. Ну и бросил это дело, а файлы те до сих пор лежат у меня.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Если есть драйвер - доступ получить не проблема. Можешь взять WinRing0 из поста - он подписан и умеет работать с портами.
1
Автор поста оценил этот комментарий

Весь прикол в том, то, по задумке автора, это должно звучать через PC-Speaker ("пищалка" в компьютере, которая пищит, когда нажимают слишком много клавиш). Не через колонки, не через наушники. То бишь с телефона - никак и с компа, на котором что-то новее, чем Windows XP, судя по всему, тоже никак. По крайней мере, у меня на "семёрке" не работает. Жаль, что под DOSом нынче мало кто сидит, иначе пост точно вышел бы в "лучшее". А сам PC-Speaker звучит примерно так: https://www.youtube.com/watch?v=HcI8lQvX8Ng

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Тестировал на Win7 x32 и Win10 x64. На ХР - не уверен. Запускается, но нет звука? Или не запускается вообще?
показать ответы
0
Автор поста оценил этот комментарий

Где послушать то? Видео там или ссылка..

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Ссылка "готовые бинарники" в конце поста

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества