Всем привет! На связи школьный кванториум лицея современных технологий управления №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 века и можем пытаться дальше обрабатывать эти данные, увеличивая точность;

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

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

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

Файлы CSV и видео (и куча душераздирающих MIDI-треков)

До новых встреч в нашем скромном школьном кванториуме!
До новых встреч в нашем скромном школьном кванториуме!

Над проектом всё ещё продолжают трудиться:

  • Журавлев Алексей Владимирович (на момент написания статьи лицеист)

  • Адамский Сергей Сергеевич (куратор проекта, учитель информатики)

Хотим выразить благодарность старшему преподавателю кафедры ИТС ПензГТУ Володину Константину Игоревичу за очные консультации по машинному зрению.

Если у вас есть что-то интересное для нашего музея, то будем рады! Чао!

Комментарии (29)


  1. bolk
    08.01.2025 10:22

    Ребята, диски и их фотки можно найти на сайте meshok.net. Многие даже покупать не надо, фотки хватит. Я, когда для интереса занимался теоретической проверкой возможности «озвучить» такой диск, просто «нарезал» прямо по фотке спираль и смотрел пересечение пятен через неё. Вышло неплохо.

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


    1. seventhevil Автор
      08.01.2025 10:22

      Спасибо за подсказку про Центр письменного и музыкального наследия, напишем им. Про спираль не очень понятно - запись идёт не по спирали, а замкнутыми кругами. Если бы у нас был диск для полифона с 1 гребёнкой, то результат был бы более достижимый.


      1. bolk
        08.01.2025 10:22

        Я, к сожалению, это давно делал, помню плохо, может и не спираль была, а круги с шагом — это 2019-й год был. Я студенту это в тему диплома давал и хотелось проверить что вообще можно сделать, хотя бы в теории.


        1. seventhevil Автор
          08.01.2025 10:22

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


  1. bolk
    08.01.2025 10:22

    Ничего у полифонов тональностей было — 156! Офигеть, как по мне, это очень много.


    1. seventhevil Автор
      08.01.2025 10:22

      Да, тонов было много, но в некоторых полифонах тональности дублировались, чтобы они удваивались в громкости при одновременном извлечении, но всё равно писали большое (двойное) число тонов. Получается, маркетинг :)


  1. hssergey
    08.01.2025 10:22

    Вообще интресно, как изначально рассчитывали как сделать эти крючки? Ведь в зависимости от расстояния от центра диска за единицу времени пройдет разное количество крючков. В этом и сложность распознавания - у вас сейчас получилась линейная синхронизация, и это работало бы будь это цилиндр как в музыкальных шкатулках, а не диск. Но на диске справа будет сыграно больше нот, чем слева, в результате чего при переносе это в линейный файл для игры через миди, временные отметки начала нот сдвигаются. Тут получается надо делать 100 независимых трэков, в каждом из которых свои временные отметки начала нот и свое количество нот. Как это потом преобразовать в миди-файл непонятно, возможно, надо собственную програму для озвучки писать, чтобы работала с этими независимыми треками


    1. seventhevil Автор
      08.01.2025 10:22

      Спасибо за комментарий! У нас 100 треков распознаются независимо. Да, Вы правы, что скорость из-за разницы радиусов различная, но как только в область интереса попадают два отверстия с трека - нота засчитывается в конкретном моменте времени. Именно так бы и механическая деталь работала - в момент прохождения крючком центра - молоточек цепляет гребёнку. Есть ли разница между «крючок прошёл центр физической детали со звёздочками» и «в зоне интереса появились два отверстия», если учесть, что размер отверстий одинаковый, просто с разной скоростью движутся.
      Низких тонов и правда можно уместить меньше по окружности... Это факт.


  1. ciuafm
    08.01.2025 10:22

    Если есть фотки гребенок по которым можно установить относительный размер, просто пересчитайте относительные частоты, т.к. толщина пинов одинаковая это должно быть не сложно. Человек распознает мелодию если все ноты одинаково сдвинуты по частоте. Затем настраиваете сдвиг и готово.


    1. seventhevil Автор
      08.01.2025 10:22

      Толщина язычков разная, так как снизу некоторые из них уходят глубоко в корпус по толщине


    1. kaseiiro
      08.01.2025 10:22

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


  1. Javian
    08.01.2025 10:22

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

    А на скриншоте этого midi как это выглядит в каком-нибудь редактор нот, например, в MuseScore.


    1. seventhevil Автор
      08.01.2025 10:22

      А вот этого не догадались посмотреть... Вернусь позднее со скриншотом


    1. kaseiiro
      08.01.2025 10:22

      Закинул full duplex.mid в Cubase, что-то тут не то немного. Надо бы срисовать вручную хоть полтакта, чтобы уловить суть. Подумаю над этим.

      Не откажусь, если в личку бросите фото диска в максимально имеющемся качестве.


      1. seventhevil Автор
        08.01.2025 10:22

        Завтра попробуем исправить длительность каждой ноты, чтобы не сливалось и напишем в ЛС.


        1. vesper-bot
          08.01.2025 10:22

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


  1. kaseiiro
    08.01.2025 10:22

    Еще идеи. Публично, ибо вдруг желающие реализовать найдутся.

    1. При фотосъемке набросить пленку с отпечатанной на ней сеткой с известным шагом (например, 5 мм). Потом по сетке отфотошопить искажения. Тут не только дисторсию и перспективу поправить получится, тут и локальные искажения можно вытянуть, если они вдруг есть.

    2. Из видео на фоне щели нарезать полосы и аккуратно склеить идеальный скан диска. Для этого желательно иметь яркую точку в центре. (Тогда нестабильность скорости не имеет большого значения. Но может набежать погрешность из-за низкого разрешения.)

    3. Как 2, только склеивать фрагменты из светлой щели в длинную портянку, а не в диск. Развернуть диск из полярных координат в декартовы, аккуратно совмещая кадры. Даже вручную реально сделать такую склейку. Распознавать ее — одно удовольствие.


    1. seventhevil Автор
      08.01.2025 10:22

      С пленкой хорошо! Может, даже с бумагой с кругами поверху, на которую снизу светить через все отверстия разом. Кстати, Файл CSV и есть декартовы координаты :)


    1. Moog_Prodigy
      08.01.2025 10:22

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