Печать и воспроизведение звука на бумаге

Можно ли закодировать звук в виде изображения, которое считывается камерой и проигрывается в реальном времени? На ум сразу приходит QR-код или некие его аналоги. В такой код можно записать ссылку на mp3, или даже совсем маленький звуковой файл. Но в первом случае требуется выход в сеть, а во втором — большая плотность кода и повышенные требования к качеству изображения. Кроме того, ни тот ни другой способ не обеспечит мгновенное воспроизведение.

Что, если кодировать звук не в цифровом, а в аналоговом формате? То есть, допустить возможность больших потерь информации с сохранением основных «очертаний» звукового послания. Например, такие потери возникнут при плохом освещении, плохой камере, маленькой картинке, мятой или рваной бумаге с кодом. Пусть со страшными артефактами, но картинка должна звучать.

4bb64821260be1f19b45fd3ff1b0a794.jpgНа протяжении нескольких лет я занимаюсь изучением советского фотоэлектронного синтезатора АНС, созданного инженером Евгением Мурзиным в период с 1938 по 1958 г. Фишка этого инструмента в том, что музыка создается путем рисования спектрограммы и играется потом неким подобием современного сканера — вертикальное сканирующее устройство просвечивает партитуру, проецируя свет на специальные диски (своего рода оптические преобразователи Фурье), которые готовый модулированный сигнал посылают на фотоэлементы. Такой формат идеально подошел бы для записи звука в графическом виде. Поврежденная или уменьшенная спектрограмма может потерять некоторые гармоники, но сохранит общую картину для последующего воспроизведения. И очень кстати мною был создан программный симулятор синтезатора АНС — Virtual ANS, способный не только играть такие партитуры, но и создавать, конвертируя аудио-файл в картинку спектра. То, что нужно!

Осталось ответить на последний вопрос — как маркировать границы картинки, чтобы программа-сканер играла именно то, что нужно, не захватывая лишнюю информацию. Решено использовать только горизонтальные маркеры сверху и снизу. Отказ от маркеров по бокам кода во-первых упрощает процесс декодирования, а во-вторых позволяет без особых затрат играть спектрограмму сразу же после обнаружения горизонтальных маркеров. При этом процессом проигрывания можно управлять вручную: скорость и направление задает сам слушатель, свободно сканируя изображение. Ручной режим завораживает, но неравномерность движения и тряска рук накладывают свой отпечаток на звук. Поэтому в программу следует добавить и автоматический режим, когда текущий кадр с камеры застывает и сканируется равномерно без вмешательства пользователя.

Проекту дадим название PhonoPaper. Спецификация кода выглядит следующим образом: 4154f12a7604022fad250c741717b273.png

Бесплатная программа-сканер была написана приблизительно за 2 месяца на языке Pixilang. На текущий момент она доступна только для Android. iOS-версия появится в ближайшие дни. Поддержка других систем — в планах. Android-версия использует библиотеку прямого доступа к камере из проекта OpenCV, которая, к сожалению, совместима не со всеми устройствами, хотя разработчики постоянно ее совершенствуют — с этим пока приходится мириться.

Предвижу вопрос о практическом применении. Поэтому привожу небольшой список с примерами использования PhonoPaper-кодов:

голосовые подсказки или тематические куски музыки на визитках, рекламных плакатах, товарах; бумажные открытки с напечатанным звуковым посланием; аудио-примеры в учебниках или детских книжках; звуковые метки на пластинках, дисках, кассетах; звуковая подпись на обратной стороне бумажной фотографии; арт-эксперименты; изучение основ построения спектральной музыки и звука через ручное рисование PhonoPaper-кодов. Посмотрим, как это работает в живую:[embedded content]

[embedded content]

© Habrahabr.ru