Сегодня у меня есть немного времени, что бы написать про событие, произошедшее два месяца назад. А что случилось два месяца назад? Питерская демо-party Undefined 2023!
Когда у меня есть возможность поучаствоваеть в демо-party, я всегда себе ставлю задачу изучить новую технологию или разобраться с тем, до чего раньше не доходили руки. Ну, или на худой конец, сделать на изученных мной технологиях что-то, чего я раньше не делал. Так сказать, шагнуть на ступеньку вверх.
На ChaosConstructions 2021 я решил разобраться с тем, как в современном мире программируют 3D-визуализацию и как считают 3D-сцену графические ускорители. Для этого я написал небольшое атмосферное демо Retrogram, в котором на уровне GLSL-шейдеров реализован алгоритм Ray Marching для построения и текстурирования 3D-примитивов. Демо заняло 1-е место в номинации One Scene compo.
Для Undefined 2023 я решил сделать "демо без демо". То есть, демо, в котором нет ни строчки кода. Как такое возможно? Например, если демо представляет из себя WAV-файл. Но это же просто звук! Да, звук, но особенный: если правый и левый звуковой канал подать на оциллограф, включенный в режиме X-Y, этот звук будет рисовать осмысленные изображения. Такие демо называются oscilloscope demo.
How to Get Started With Oscilloscope Music
Теория была, в принципе, понятна. Но нужно было как-то создать или найти софт, который бы позволял сотворить такое чудо. На написание софта времени небыло, поэтому я решил использовать готовый. Оказалось, что такой софт даже существует. Программа называется OsciStudio. Она не имеет версию под Linux, содержит закрытый код, стоит 34$, и по российским банковским карточкам, естественно, не продается. В общем, по всем пунктам не мой вариант. Мне то нужен Linux, открытый код, обязательно бесплатно, то есть даром.
Поэтому я решил найти открытый и свободный (в крайнем случае закрытый но бесплатный) софт под Linux. Да, нужного и готового комбайна в Linux нет. Но можно все собрать "по кусочкам". Для отрисовки картинок я использовал векторный редактор Inkscape. Для преобразования картинок в звук (это центральная часть проекта) я использовал утилиту Osci-Render. Для написания трека я разобрался с кроссплатформенным трекером SunVox, который давно и упорно разрабатывает наш соотечественник Александр Золотов.
Для визуализации нужен был осциллограф или его эмулятор. Свой четырехканальный Rigol DS1054Z я побоялся везти на демопатю, а найденные мною эмуляторы либо не работали, либо были очень тормознутыми. К счастью, оказалось, что в SunVox есть встроенный эмулятор оциллографа, в котором сделан нужный мне X-Y режим. Этого оказалось достаточно, чтобы весь пазл собрался.
Полный размер
По факту, в таком режиме использования, музыкальный трекер SunVox выступил как система нелинейного видеомонтажа. Ведь паттерны, расположенные на таймлинии, сразу визуализировались как кадры видео на инструменте Amplifier. В общей сложности, когда я понял, каким набором софта я могу сделать то, что задумал, вся работа была сделана за два дня. В первый день я отрисовывал векторные картинки и пробовал их озвучить. Во второй день писал трек с визуализацией на эмуляторе осцилографа. В виде файла SunVox работа и была отправлена на demoparty Undefined 2023.
Итак, смотрите на YouTube oscilloscope-демо Pittone, победитель номинации Wild Demo compo:
Pittone - SunVox oscilloscope demo for Undefined 2023 by Xintrea
Скачать исходник проекта можно на странице продукта.
Я надеюсь, что скоро у меня дойдут руки чтобы расчехлить аппаратный осциллограф, подключить его к звуковой карте и записать видео с настоящей аппаратуры.