Музыкальная подсветка коллекции оптических стекол

В музее оптики СПбГУ ИТМО есть довольно примечательный экспонат — каталог Аббе, представляющий из себя коллекцию оптических стекол различных марок и размеров. Руководство музея желало чтобы этот каталог подсвечивался под музыку, поэтому на свет появился проект музыкальной подстветки каталога, которым я собственно и занимался. Это что-то сродни задаче мигания светодиодом при помощи микроконтроллера, только помасштабнее.

image

image

Аппаратная часть была разработана в фирме ЛМТ. Под каждым стеклом расположена светодиодная линейка, подключенная к контроллеру. Контроллеры объединены при помощи витой пары в сеть, подключаемую к концентратору, который в свою очередь подключается через USB к компьютеру.

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

Для работы с графикой и звуком использовалась библиотека SFML, для выполнения быстрого преобразования Фурье — FFTW.

Для того чтобы извлекать какую-либо информацию из аудиосигнала, необходимо иметь прямой доступ к аудиосэмплам. При помощи связки SFML + libsndfile реализовать это не составило труда.

Во время проигрывания аудиофайла с определенной частотой (в данном случае это частота кадров) берется небольшой участок массива с сэмплами и затем над ним выполняется быстрое преобразование Фурье. Благодаря БПФ из массива с данными звуковой волны получается массив с частотными данными. В случае выполнения реального преобразования размер результирующего массива будет в два раза меньше исходного.

Нужны примерно вот такие кусочки:
image

Здесь следует учесть один момент, для того чтобы можно было точно отслеживать басовые ноты, для преобразования Фурье необходим довольно большой массив данных. По моим подсчетам, чтобы можно было начинать работу от Ля второй октавы, требовался массив размером 8096. При частоте сэмплирования 44100 это примерно 0,2 секунды, а это довольно большой интервал и в него могут попасть уже не звучащие ноты. Поэтому в данном случае следует прибегнуть к небольшой хитрости, рассказанной еще в учебниках по цифровой обработке сигнала — взять небольшой массив и дополнить его нулями до нужного размера. Это немного изменяет результат, однако в данном случае это не было критично.

Вот над какого вида данными на самом деле выполняется БПФ:
image

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

Спектр получаемый в результате обработки массива аудиосэмплов:
image

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

Т.к. разрешение «экрана» небольшое — 48х3, то особо много вариантов для пространственного расположения нот не придумаешь. Но две идеи пришли в сразу же. В одном варианте столбцы по три стекла объединяются и представляют собой одну ноту, внешне получается нечто отдаленно напоминающее клавиатуру фортепьяно. Во втором варианте одну ноту отображают два стекла стоящих рядом в одном ряду, это ближе к гитаре с тремя струнами и крайне необычной настройкой;)

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

Другой метод формирования цвета был позаимствован из веб-дизайна. В нем цветовая палитра выбирается при помощи одного из шаблонов.

Вот несколько примеров:
image

Используя этот метод можно создавать более контрастные изображения. Также как и в предыдущем методе основной тон можно смещать во времени.

Видео работы системы (доступно в FullHD):


Ссылки:

1. Luke Nimtz, Primary Harmonics — Music/Color Theory
2. Visual music blog

Студентам и абитуриентам — такими вещами (и не только такими) можно заниматься в магистратуре СПбГУИТМО, на направлении «Встроенные вычислительные системы»
Метки:
Поделиться публикацией
Комментарии 67
  • +4
    Очень красиво!
    Здорово, что рядом с нами живут талантливые люди.
    • +1
      Наблюдал в темноте — на порядок круче выглядит!
      • +1
        К сожалению, видео снятое в темноте сделать не получилось, слишком шумное вышло, поэтому пришлось переснимать с включенным светом. А так да, конечно, если в темноте сесть на стул находящийся рядом, то можно смотреть на стекла часами)
    • +1
      Ради таких идей и стоит жить. Браво!
      • 0
        музыку на видео отдельно накладывали?
        • +5
          Да, звуковая дорожка была заменена на музыкальный трек (но естественно тот же самый под который работала система на видео), т.к. с микрофона было плохо слышно, да еще и вдобавок каждую минуту звучало оповещение о пожарной тревоге)
          • +3
            Вы чуток не попали при наложении звука, чувствуется лаг на долю секунды.
            • +5
              Очень долго и на максимальном зуме прицеливался во время сведения дорожек;) На самом деле лаг на долю секунды ощущается из-за того что система работает на частоте всего 12 кадров в секунду, чего явно недостаточно для «риалтайм»-восприятия.
        • +2
          Вау.
          • +3
            Это великолепно! Очень понравилось, восхитительно просто!
            • 0
              Поправьте ошибку в заголовке
              • +2
                Спасибо, а я и не приметил)
              • +1
                Охохо! Буквально пару недель назад видел сие вживую :) Смотрится действительно замечательно!
                • +3
                  Вы были в музее оптики на экскурсии?) Хорошо что вы видели систему во время работы, потому что у меня сложилось ощущение что дамы-эккурсоводы недолюбливают это шумящее устройство и всегда стараются его выключить)
                  • +4
                    Да, на экскурсии) Не могу говорить про всех экскурсоводов, но наша была не против этой штуки и с удовольствием порасказывала про неё. Хотя больший акцент делался на то, что это самый крупный каталог стекла чуть ли не в мире, а не на то, что его подсветка — это круто. Но мы-то знаем в чём соль :)
                    Плюс, на момент моего там прибывания, играло что-то очень тихое и спокойное, так что ни о каком шуме и речи не было.
                    А вообще — отличная работа! Спасибо! ;)
                • +3
                  Кто исполнитель?
                  • +4
                    Pianochocolate — River Song
                    • +3
                      а, нашел
                      PianoChocolate — River Song
                      • +2
                        Pianochocolate — River Song
                        • +11
                          Я всегда буду обновлять комментарии перед публикацией. Я всегда буду обновлять комментарии перед публикацией. Я всегда буду обновлять комментарии перед публикацией. Я всегда буду обновлять комментарии перед публикацией.
                      • +1
                        Поэтому в данном случае следует прибегнуть к небольшой хитрости, рассказанной еще в учебниках по цифровой обработке сигнала — взять небольшой массив и дополнить его нулями до нужного размера.

                        Почему на окно не домножить?
                        • +1
                          Меня устроил и самый простой вариант) До эксперементов с окнами я дошел, но были другие более срочные задачи на тот момент.
                        • +1
                          Красиво, но почему машина шумит?
                          Работает на реле? Почему бы тогда не использовать герконы?
                          ru.wikipedia.org/wiki/%D0%93%D0%B5%D1%80%D0%BA%D0%BE%D0%BD
                          • 0
                            Если это относится к моему комментарию выше про шумящее устройство, то это было образно) Никаких механических частей там нет, просто экскурсоводам музыка мешает рассказывать.
                            • 0
                              А герконы чем должны управляться? Электромагнитами? И чем их включать?
                              • 0
                                Реле != электромагнит.

                                • +1
                                  Автор комментария, на который я отвечал, предлагал заменить реле (если бы они имелись) герконами. Геркон — пара контактов, замыкаемая воздействием магнитного поля. Магнитное поле дает либо постоянный магнит, подносимый к геркону, либо электромагнит, находящийся в непосредственной близости и включаемый дистанционно. В первом случае нужен механизм, перемещающий постоянный магнит — механическая движущаяся часть плюс привод этого механизма. Во втором случае — замыкание контакта электромагнита, что сводит на нет смысл геркона.
                                  Я не сравнивал реле с электромагнитом.
                            • 0
                              Великолепно смотрится.
                              В третьем ряду не хватает пары элементов — при монтаже расколотили? :)
                              • +1
                                Эти стекла доставали откуда только можно в течение 20-ти лет, поэтому они все в плачевном состоянии) А пары из них не было когда я пришел туда впервые (мб они на реставрации), так что я не при чем)
                              • 0
                                а не компьютерная ли музыка? и если так, не лучше(чище) было бы использовать миди для формирования программы? или треки должны быть любыми по ТЗ?
                                • +1
                                  С MIDI все было бы вообще идеально) А так вы правы — по ТЗ из папки с музыкой должно играть все что угодно.
                                  • +1
                                    понятно. полёт шмеля бы посмотреть на такой штучке ) жаль частота мала
                                    • +4
                                      Если темп будет совпадать с частотой кадров, то вполне возможно что будет выглядеть прилично) А вообще в ближайших планах переделка аппаратной части, в первую очередь с целью увеличения частоты кадров.
                                      • 0
                                        Можно поподробней узнать об аппаратной части?
                                        • +2
                                          В качестве микроконтроллера используется Coldfire, объеденино все в сеть при помощи QSPI, таким образом получается что-то вроде огромного сдвигового регистра, связь с компьютером по USB реализована через HID.
                                    • +1
                                      Подсуньте death-metal во время экскурсии
                                      • 0
                                        Хм… Death — Perennial quest должна неплохо выглядеть… Хотя думаю частота маловата. Зато Summoning подойдут просто идеально…
                                • +3
                                  Тащусь просто, жену сейчас разбужу, пусть посмотрит :)
                                  • +1
                                    А где этот музей расположен? Почти 10 лет учился в ИТМО, а про наличие такого музея не знал… Обидно.
                                    • +1
                                      Инновационно-технологический центр СПбГУ ИТМО, Биржевая линия В.О., д.14
                                      Если честно, я не в курсе (т.к. ранее учился и диплом получал не в ИТМО, а в СФУ) когда именно он там появился, но я так понял что недавно.
                                      • +2
                                        А, так это в ГОИ получается, тогда понятно и откуда каталог стекол взялся. Я учился ещё до объединения ИТМО с ГОИ в теперюшнюю мегаструктуру.

                                        Спасибо за ответ.
                                    • +1
                                      Красота. Творчески к работе подходите.
                                      • 0
                                        Красиво! а сколько светодиодов на это чудо ушло если не секрет?!
                                        • +3
                                          Всего 144 светодиодных линейки и в каждой, насколько я помню, по 8 RGB-светодиодов)
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • +1
                                            Конечно возможно. Однако, если ваши разговоры не состоят из распевания частушек и выразительного чтения стихов, то выглядеть скорее всего будет монотонно)
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              • 0
                                                Вы запишите свой голос и проиграте плеером, который рисует гистограмму. Там не будет четких пиков, а просто размазанный широкий спектр, пляшущий в такт речи.
                                                • 0
                                                  Будет как минимум штуки три пика в районе 200-300 Гц — основа. Вопрос в спектральном разрешении — у вашего плеера маленькое, видимо. Видно форманты, шипящие и свист тоже видно — они уже не такие чистые, но визуализатор прикрутить можно.
                                                  Но в комнате ничего не будет, потому что один микрофон, в отличие от человека, не может фильтровать шум, локализуя источник в пространстве.
                                          • +1
                                            Обещаю сам себе зайти в этот музей, если буду в Питере
                                            • +2
                                              В этом есть небольшая проблема, т.к. в музей пускают только группами по заявкам. Если наберутся желающие, то можно организовать экскурсию)
                                              • +1
                                                Я не знаю когда буду в Питере. Есть ли какой-то форум, или какое-то место, где можно будет узнать о сформировавшихся группах? Или прийдется просто стоять у входа в музей с надеждой?
                                                • +2
                                                  Стоять у входа в музей — сомнительная затея. Форума никакого нет, т.к. водят там в основном группы от университетов, школ, фирм. Но если вы соберетесь в Питер (и когда соберетесь), то можете написать мне (в профиле есть мой фейсбук) и я постараюсь что-нибудь придумать.
                                                  • 0
                                                    А группа это от скольки человек?
                                                    • +1
                                                      Я сейчас не могу сказать точно, но уточню у руководства музея и потом добавлю информацию в топик.
                                            • 0
                                              Если не секрет, какова стоимость данного произведения искусства? :)
                                              • +1
                                                Насколько я понимаю в валюте стоимость здесь не выражается, но т.к. коллекция уникальная во всем мире — то она бесценна)
                                                • 0
                                                  Ну я не в качестве покупателя :)
                                                  Имелось в виду, какова стоимость оптических стекол, электроники и прочей аппаратуры, ушедшей на изготовление?
                                                  • +1
                                                    К сожалению не могу ответить на ваш вопрос, т.к. сам всего этого не знаю)
                                              • +2
                                                Наше решение. Цветомузыкальные фонтаны в Крыму (Алупка, Гурзуф). Приложение написано на С# используется либа Un4seen.Bass, собственные разработки по управлению струями.

                                                youtu.be/aak-OyrMuXw

                                                www.youtube.com/user/EBykovski
                                                • 0
                                                  Симпатично выглядит, я тоже как раз задумывался о музыкальной подсветке фонтанов)
                                                • 0
                                                  а что за надпеси под стеклами?
                                                  • 0
                                                    Я точно сам не знаю, но насколько помню надпись отражает марку стекла, т.е. военное, с защитой от радиации и др.
                                                  • +1
                                                    Мягкое уютное кресло, плед, бокал вина, тихо звучит Keiko Matsui — Step of Maya, переливаются цветовые гаммы данной визуализации…
                                                    Что то я размечтался)
                                                    • 0
                                                      Не совсем понял, в итоге — как выбирается, какое именно стекло подсвечивать и каким цветом? По первым секундам ролика вроде бы кажется — по горизонтали идут ноты, а как выбирается цвет подсветки, не понял (если тоже зависит от ноты — то был бы одним и тем же для одного стекла… или просто постепенно сдвигается цветовой круг?)
                                                      • +1
                                                        Вы все верно поняли, в первом режиме в начале ноты идут от низких слева к высоким справа. И да, цветовой круг смещается — я специально нарисовал gif-анимацию чтобы было ясно) Вообще там разные режимы работы как по цвету, так и по расположению, они просто во время ролика переключаются.

                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.