Оцифровываем музыку из XIX века

в 9:15, , рубрики: кванториум, машинное зрение, музыкальная шкатулка, Нотный диск, полифон, Симфонион

Всем привет! На связи школьный кванториум лицея современных технологий управления №2 г. Пензы. Недавно мы загорелись идеей создать лицейский технический музей, так как в нашем городе не осталось ни одного школьного музея с таким направлением. Одна из задач задумки — проследить за эволюцией информационных технологий и дать возможность детям потрогать, послушать, посмотреть и поиграться с ними.

Онлайн-стриминг музыки сегодня для современных детей — это технология, с которой они родились. Музыка по сети кажется им органичной и естественной. Всё ещё сохраняется понимание того, что музыкальные файлы можно скачать, поместить на карту памяти или получить аудио на каком-то легендарном носителе CD (который некуда вставить в окружающей их технической действительности). LaserDisc своим видом (хоть и огромным) выдаёт своё предназначение, и догадки всё ещё верны. Дети находятся на грани понимания совместимости карандаша с аудиокассетой, и этот вопрос становится чуть ли не олимпиадным, за который можно стать почётным агонистом в телепередаче Юрия Вяземского. Винил — хайп, круто, лампово, аудифильство, но какое-то волшебное и без подробностей. Магнитная лента для аудиозаписи (например, Свема) — коричневая мишура на новогоднюю ёлку в бобине. Далее опрашивать бесполезно — видимая детьми вселенная технологий заканчивается. Валик (цилиндр) для фонографа выглядит как артефакт для фильма «Пятый элемент» и своим видом даже не намекает ни на что современное. Что же ещё дальше от сегодня? Стальной нотный диск для полифона, то есть для симфониона... С вашего общего позволения, мы объединим их в слово «Полифон».

Тут фото перечисленных выше экспонатов (в наличии) для самых любознательных
Цилиндр для фонографа
Цилиндр для фонографа
Свема и видеокассеты (попросились в кадр тоже, извините)

Свема и видеокассеты (попросились в кадр тоже, извините)
Ши з э лэээйди, уооооуоуоуооо, ши з э лэээйди (сорокопятка винил из Японии)

Ши з э лэээйди, уооооуоуоуооо, ши з э лэээйди (сорокопятка винил из Японии)
Безумных размеров LaserDisc (слева)

Безумных размеров LaserDisc (слева)
Часть команды нашего музея с недавней выездной экспозицией для студентов ВУЗа: Кузянова Виктория Петровна и Миронов Владислав Максимович.Кстати, найдёте тут устройство, произведённое в Пензе?

Часть команды нашего музея с недавней выездной экспозицией для студентов ВУЗа: Кузянова Виктория Петровна и Миронов Владислав Максимович.

Кстати, найдёте тут устройство, произведённое в Пензе?

Ещё старше была бы шкатулка с шипастым валиком и иные виды шкатулок, где носитель не был сменным. Господа, с этими штуками на фото мы оказываемся в конце XIX века. Российская империя, Германская империя... Вот, где-то в тех временах.

Добытые артефакты истории музыки - нотные диски типа №30 для симфониона.

Добытые артефакты истории музыки - нотные диски типа №30 для симфониона.

Если вы хоть раз увидите полифон своими глазами, то сразу сделаете заключение, что это достаточно огромная музыкальная шкатулка, которая иногда выглядит как напольные часы (или музыкальный автомат высотой до самого потолка, работающий за монетки). Носитель информации у полифона — круглая металлическая пластина с перфорированными отверстиями. Форматов таких пластин оказалось великое множество. Оказывается, даже на то, что у полифона можно легко менять нотный диск, есть отдельный патент (в США No. 359,278). Наши образцы мы брали у мужчины по объявлению, который хранил их в гараже и долго не мог откопать его от снега. Удовольствие не самое дешёвое — по паре тысяч российских рублей за единицу товара, но вы ещё посмотрите на ценники у полифонов...

И это ещё меньшего размера, чем нам нужен...

И это ещё меньшего размера, чем нам нужен...

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

Нам стало интересно: как мы можем сэкономить несколько зарплат и прослушать мелодию с этих пластин? Давайте рассмотрим подробнее устройство носителя.

Особенности строения дисковой пластины крупным планом.
Особенности строения дисковой пластины крупным планом.

Пластина диамтретом 34.5 см (13 5/8 дюйма). Disc Model №30 — так гласит табличка на подходящем симфонионе с одной из аукционных площадок.

Изображение таблички из профиля товара на аукционе.

Изображение таблички из профиля товара на аукционе.

На диске концентрически расположены 100 нотных (тоновых) дорожек, состоящих из сдвоенных отверстий, а также две технические дорожки, идущие подряд где-то посередине. Отверстия были получены механическим выдавливанием от краёв к их центру. Центр двойных отверстий представляет собой своеобразный крючок. Если кому-то интересен процесс изготовления крючков на диске, рекомендем ознакомиться с патентом США №500,373 от 27 июня 1893 года.

Удобная иллюстрация из патента J. E. SANDERS

Удобная иллюстрация из патента J. E. SANDERS

Именно этот крючок отвечает за инициацию извлечения звукового тона на гребёнке. Диск вращается по часовой стрелке, каждый из крючков в зоне считывания задевает звёздочки с молоточками, а они уже ударяют по язычкам гребёнки.

Демонстрация с видео https://www.youtube.com/@mus_col

Демонстрация с видео https://www.youtube.com/@mus_col

Мы долго не могли понять, какая модель симфониона нам нужна и сколько у него гребней, пока не нашли рекламную продукцию имперской эпохи.

Старинное объявление о продаже музыкальных шкатулок со съёмными носителями.

Старинное объявление о продаже музыкальных шкатулок со съёмными носителями.

Вот он — заводной 100 тонный Sublime Harmonie Piccolo за сотню рублей. Нотные диски продавались отдельно по рублю за штуку. Ну что, теперь поищем совместимые гребёнки, чтобы понять, где же какая нота?

Нет, не поищем. Согласится ли продавец хотя бы трунькнуть пальцем язычок гребня по видеосвязи?

Нет, не поищем. Согласится ли продавец хотя бы трунькнуть пальцем язычок гребня по видеосвязи?

Что же... Посмотрим на музейные хроники. В них мы увидели список из 50 нотных пластин и наши 3 были в числе них, в том числе самая заветная для русской тоскующей души — №6012 (не Шаман).

Тут скриншот из видео со списком носителей
источник https://www.youtube.com/@spieluhrenking237

6012 - гимн Российской империи

Та самая, наша, родная, 6012.

Та самая, наша, родная, 6012.
Тут скриншот из видео с гребёнками и более детальное фото одной гребёнки из другого источника
Демонстрация с видео https://www.youtube.com/@mus_col источник https://www.youtube.com/@spieluhrenking2372

Демонстрация с видео https://www.youtube.com/@mus_col источник https://www.youtube.com/@spieluhrenking2372
Фото левой гребёнки из аукционного объявления.

Фото левой гребёнки из аукционного объявления.

Демонстарция работы полифона представлена на видео ниже.

Итак, у подходящей нам модели полифона всего 100 тонов на две пары гребней. Каждая пара расположена диаметрально противоположно и состоит из основной гребёнки и короткой (это Piccolo гребёнка с повышенными тонами). 102 дорожки на пластине получаются из-за того, что технологически необходимо постоянно прижимать выгибающуюся пластину снизу к двум жёстким дисковым валикам (по одному на пару гребней в позиции №25 справа налево), расположенным в зоне «считывателя мелодии». Так как пластина вращается, прижимные валы следуют по окружностям и не могут соприкасаться с крючками диска, иначе они просто сомнут всё по пути. На основной гребёнке 34 тона, на Piccolo — 16 тонов, по 50 звуков на сторону. Чтобы получилось стерео 100 тонов, левая (или правая) пара гребней смещена на одну ширину дорожки так, чтобы каждая из сторон отвечала только за чётные или нечётные дорожки на нотной пластине. Получается дуплекс: мы можем усилить ноту, проиграв её на двух сторонах одновременно, хотя, возможно, всё работает иначе, и тона чередуются на гребёнках. Piccolo гребёнки визуально разные, и дуплекса там точно нет. Кстати, гребёночный дуплекс в музыкальных шкатулках запатентовал Alfred Junod, патент США №356,251 Duplex Music Box 1887 года.

Так или иначе — факт, что мелодия на чётных дорожках смещена на половину оборота диска и обе половины воспроизводятся одновременно.

Ещё немного интересного...

Ниже видео с работой симфониона Eroica. Это огромный шкаф, в котором одновременно воспроизводятся 3 диска 34.5 см диаметром. Спасибо, господи, что нам ещё и с этой механикой не надо разбираться в своём гаражном проекте...

Мы уже узнали многое, так как же воспроизвести нотный диск? Первая мысль — отсканировать пластину, но она больше формата А3 и не влезает на стекло сканера. Прижимать пластину к стеклу сканера невозможно, так как крючки хрупкие. Сфотографировать пластину так, чтобы она не изгибалась, также затруднительно. Вот самая удачная попытка фотографирования и инженерных прижимных ухищрений пластины с мазуркой (есть и HEIC версия по запросу):

Сфотографировали, как могли

Сфотографировали, как могли

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

Судьба решила, что если считать данные по одной фотографии нормально мы не можем, то будем собирать свой цифровой сканер для полифона. Он будет вращать пластину и прижимать её немного в месте считывания информации. Для этого мы будем использовать OpenCV и веб-камеру Logitech C920 (чем богаты, тем и рады).

Схема не как в патентах США, конечно, но вроде понятно, что мы хотим от устройства.

Схема не как в патентах США, конечно, но вроде понятно, что мы хотим от устройства.

Мотор с редуктором на скорую руку собрали из робототехнического набора, сверху повесили один яркий светодиод. Фиксатор для пластины напечатали на 3D принтере, а колёсики поддержки для лучшего вращения диска собрали из своей 3D модели, резинок и подшипника. Только сдержите свои взрослые инженерные фантазии — вот наше устройство:

Чтобы избежать прямого попадания источника света в объектив, мы наклеили полоску бумаги, которая прекрасно передаёт проекции от отверстий. Мы добавили один яркий источник света сверху специально, потому что источники света с потолка помещения давали множество проекций отверстий под разными углами. То, что видит камера, нас устроило:

Проекции чёткие, контрастные, детектируются.

Проекции чёткие, контрастные, детектируются.

План действий: записываем видео одного оборота (примерно минута) 30 кадров в секунду, затем пишем скрипт на Python, который распознаёт каждый кадр и записывает состояние каждой дорожки как 0 или 1 в файл CSV.

Обозначим в кадре область интереса, разобьём её на столбцы-детекторы, откалибруем ширину каждого столбца под особенности всяческих искажений, пронумеруем их, для интереса добавим счётчик срабатываний, чтобы увидеть технические 49 и 50 дорожки с 0 распозанваний. Детектор засчитывает ноту 1 раз, если в прошлом кадре нет ситуации с двумя белыми огоньками. Если два огонька всё ещё находятся в столбце в последующих кадрах - не засчитываем. Два огонька ушли - готовы детектировать новую нотную позицию. Белые огоньки распределяюстя по столбцам центрами контуров.

После отработанного скрипта мы получили сырой файл CSV, в который умышленно не записывали технические дорожки. То есть, столбцов в файле 100.

Столбец - это дорожка. Строка - это кадр.

Столбец - это дорожка. Строка - это кадр.

Для того чтобы выполнить смещение чётных дорожек, нужно найти повтор мелодии, то есть вычислить один полный оборот. Это можно сделать вручную: просто выделим 4 строки в любом месте в начале файла и найдём их же в конце — лишнее удаляем (нашлась ровно одна копия строк, что ожидаемо). Итоговый файл содержит 1888 строк. 1888/30 = почти минута. Шалость удалась, так как получилось совпадение с продолжительностью вращения одного оборота диска на считывателе.

Смещаем каждый второй столбец на половину по высоте и пишем второй скрипт, который помогает нам «скомпилировать» файл MIDI. Пытаемся воспроизводить 30 строк в секунду (но потом мы на слух скорректируем скорость воспроизведения, чтобы хоть как-то можно было опознать мелодию).

В бурных исследовательских потоках информации было вычитано, что обычно гребёнки начинаются с ноты ДО первой октавы. Если говорить о файлах MIDI, то там это 24 индекс тона, а что-то похожее на музыкальную шкатулку скрывается в инструменте №10. Мы пробовали разные октавы и смещения, комбинации гипотез с дуплексом гребёнок (где на два столбца назначали один тон) и их чередованием, комбинированием...

Напоминаем, что мы хотим услышать ЭТО:

А получили ЭТО:

ОСТОРОЖНО! УШАМ БУДЕТ БОЛЬНО.

Ну что, Боже, Царя храни? (да, это похоже на мем, где под неуклюжую музыку на дудке кто-то падает куда-то или делает что-то неправильно). Согласитесь, мотив узнаётся, но что мы упускаем?

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

Всякие мысли: не все ноты одновременно срабатывают в распознавателе, не хватает piccolo для полноты, в MIDI нельзя две ноты одинаковых указать для удвоения звука как в реальном аппарате (?), проигрывать только одну пару гребёнок нельзя из‑за потери информации (там реально средневековое стерео, но не всегда), вот бы кто‑то нам гребёнку трунькнул на видео мизинчиком потихонечку...

Краткие итоги:

  • мы нашли прекрасный экспонат себе в лицейский музей в виде трёх нотных дисков типа №30 для симфониона на 100 тонов;

  • мы нашли очень много исторических справок, даже пантентов из Германской империи и США с описанием устройства отдельных частей полифона;

  • мы пока не нашли способа узнать (или нужного патента), какие же тона на самом деле заточены в гребёнках;

  • мы сдампили (не идеально, но всё же) нотный диск из XIX века и можем пытаться дальше обрабатывать эти данные, увеличивая точность;

  • познакомились с некоторыми коллекционерами в Германии (но у них нет нашей модели симфониона), просто приятно поболтали;

  • надеюсь, подняли ваше настроение и уровень энтузиазма в крови.

Да, понимаем, хабр жаждит кода скриптов, но мы пока не готовы ими делиться публично и ставим сложность прочтения статье - легко (однако, мы всегда готовы предоставить код тет-а-тет для сочувствующих энтузиастов, которые готовы подсказать или помочь в личном порядке). Если доделаем, то обязуемся выложить всё, дополнив очередной прекрасной статьёй для сообщества!

Автор: seventhevil

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js