Художественный проект в реальном времени --- вход: звук --- вывод: изображение (лучше название?) - PullRequest
0 голосов
/ 18 декабря 2011

Я не совсем уверен, стоит ли мне задавать этот вопрос здесь.Я хочу сделать арт-проект.Я хочу использовать голос в качестве входа и изображение в качестве вывода.Изображение меняется соответственно звуку.

Как я могу это понять?Потому что мне нужно в реальном времени или задержка до 50 мс.Сначала я думаю, что было бы лучше использовать микроконтроллер.Но я хочу рассчитать огромные изображения, может быть, я не могу это сделать микроконтроллером.Например, я хочу рассчитать 10.000 движущихся объектов.Могу ли я реализовать это с помощью windows / linux / mircocontroller?

Было бы очень хорошо, если бы я мог использовать Python.Или вы считаете, что обработка - лучший выбор?

Вам нужно больше деталей?

Ответы [ 2 ]

5 голосов
/ 18 декабря 2011

Задумывались ли вы об использовании графической среды потока данных, такой как Pure Data (Pd) или Max ? Макс коммерческий продукт, но Pd бесплатно.

Даже если вы не в конечном итоге используете Pd для своего окончательного проекта, он станет отличным инструментом быстрого прототипирования. Хотя возможности графической обработки Pd ограничены, существуют такие расширения, как Gridflow и Gem , которые могут вам помочь. Конечно, с помощью Pd вы можете анализировать входящий звук, используя объект [fiddle ~], который даст вам общую высоту звука и частоту / амплитуду отдельных частот, а также [env ~], который даст вам среднеквадратичную амплитуду. Затем вы можете очень легко сопоставить изменения звука (высота, амплитуда, тембр) с различными свойствами изображения, такими как цвет, формы, количество элементов и т. Д. В Gem или Gridflow.

10 000 движущихся объектов звучат чертовски много даже на современном настольном GPU! Расчет всех этих позиций на лету потребляет лот ресурсов. Я думаю, что даже с выделенной графической библиотекой C ++, такой как openFrameworks , это может быть проблемой. Возможно, вы захотите рассмотреть стратегию оптимизации, такую ​​как аспекты предварительного рендеринга изображения, и использование управления звуком в реальном времени, чтобы определить, какие предварительно отрендеренные компоненты отображаются в любой момент времени. Это может создать иллюзию контроля над 10 тысячами объектов, когда на самом деле большая часть их предварительно визуализирована.

Удачи!

1 голос
/ 21 декабря 2011

Приведенный выше ответ является хорошим, PD очень гибок, но если вам нужно что-то более ориентированное на код и лучше подходящее для микширования с MCU, обработка может быть лучше.

Еще один хороший способ сделать это - использовать Csound с Csound Python API. Csound имеет крутую кривую обучения, но тонны тонны функциональности анализа звука, и это очень хорошо для работы с низкой задержкой. Вы можете определенно проанализировать входной сигнал в режиме реального времени, а затем отправить управляющие значения в графическую среду, используя сценарии на языке Python.

...