Как начать писать музыкальный визуализатор на C ++?[закрыто]
-
03-07-2019 - |
Вопрос
Я заинтересован в том, чтобы научиться использовать OpenGL, и у меня возникла идея написать музыкальный визуализатор.Кто-нибудь может дать мне несколько советов о том, какие элементы мне понадобятся и как мне следует научиться это делать?
Решение
Если вы используете C ++ / CLI, то вот пример который использует отображение WPF four (то есть фурье;).
Он ссылается этот сайт (архивировано), который содержит значительную информацию о том, о чем вы спрашиваете, вот ссылка с конкретной страницы;
Как мы разделяем звук на частоты?Наши уши делают это механическими средствами, математики делают это с помощью преобразований Фурье, а компьютеры делают это с помощью БПФ.
- Физика звука
- Генератор гармонических колебаний
- Сэмплирование Звуков
- Анализ Фурье
- Комплексные числа
- Цифровое Преобразование Фурье
- БПФ
Аааа, я нашел это (архивировано) через несколько минут это собственный анализатор C ++.Включен код, который должен заставить вас начать работу.
Другие советы
Мой подход к созданию красоты (http://www.beatharness.com) :
- запись звука в режиме реального времени
- у вас есть поток, который запускает БПФ на аудио, чтобы получить значения частоты
- расчет громкости звука для левого и правого каналов
- отфильтруйте частоты в диапазонах (низкие, средние тона, высокие частоты).
теперь у вас есть несколько полезных переменных для использования в вашем графическом дисплее.Например, покажите картинку, где размер умножен на басы - это даст вам картинку, которая увеличит размер такта.С этого момента все зависит от вашего собственного воображения !:)
Вы пытаетесь написать свой собственный аудио / музыкальный проигрыватель? Возможно, вам следует попробовать написать плагин для существующего плеера, чтобы вы могли сосредоточиться на графике, а не на мелочах кодеков, dsp и устройств вывода звука. Р>
Я знаю, что WinAMP и Foobar имеют API для плагинов визуализации. Я уверен, что Windows Media Player и iTunes также имеют их. Просто выберите медиаплеер и начните читать. Некоторые из них могут даже иметь существующие плагины OpenGL, с которых вы можете начать, чтобы вы могли сосредоточиться на чистом OpenGL.
Если вы хотите получить базовый 3D или ускоренный 2D, я бы порекомендовал приобрести копию Начало программирования игр OpenGL " который охватывает основы OpenGL в C ++. Р>
Что касается анализа музыки, вам следует изучить основы ряда Фурье, а затем выбрать бесплатную реализацию алгоритма DFFT (цифрового быстрого преобразования Фурье).
Вы можете найти реализацию алгоритмов FFT и другую полезную информацию в числовых рецептах на языке Си книга. Книга бесплатная AFAIK. Существует также Числовые рецепты в C ++ .
Вы можете рассмотреть возможность использования функций FFT / DCT libvisual поверх FFTW; с ними гораздо проще работать и предоставлять данные, с которыми так же легко работать для создания визуальных элементов. Несколько медиаплееров и плагинов для визуализации в некоторой степени используют libvisual для визуализации. Примеры: Тотем (игрок), GOOM (плагин для Тотема и других игроков), PsyMP3 2.x (игрок)
С моей точки зрения ... проверьте этот сайт:http://nehe.gamedev.net/
действительно хорошая информация и руководства по использованию OpenGL
Редактировать:http://www.opengl.org/code/