Мне интересно научиться использовать OpenGL, и у меня возникла идея написать музыкальный визуализатор. Может ли кто-нибудь дать мне несколько указаний на то, какие элементы мне понадобятся, и как я должен учиться этому?
Как начать писать визуализатор музыки на С++?
Ответ 1
Если вы используете C++/CLI, вот пример, который использует WPF четыре (Фурье;) отображения.
Он ссылается на этот сайт (в архиве), который содержит значительную информацию о том, что вы спрашиваете, здесь, со страницы с конкретной страницы;
Как мы разделяем звук на частоты? Наши уши делают это механическими средствами, математики делают это с помощью преобразований Фурье, а компьютеры делают это с использованием БПФ.
- Физика звука
- Гармонический генератор
- Sampling Sounds
- Фурье-анализ
- Сложные числа
- Цифровое преобразование Фурье
- FFT
Ааа, я нашел это (архивируются) через несколько минут позже, это родной C++ анализатор. Код в комплекте, который должен заставить вас работать.
Ответ 2
Мой подход для создания BeatHarness (http://www.beatharness.com):
- запись аудио в режиме реального времени
- есть поток, который запускает FFT на аудио, чтобы получить интенсивность частоты.
- рассчитать громкость звука для левого и правого каналов.
- фильтровать частоты в диапазонах (басы, полутоны, высокие частоты)
теперь у вас есть несколько приятных переменных для использования в графическом дисплее. Например, покажите изображение, в котором размер умножается на бас - это даст вам изображение, которое будет увеличиваться в такт. Оттуда на нем ваше собственное воображение!:)
Ответ 3
Вы пытаетесь написать свой собственный аудио/музыкальный плеер? Возможно, вам стоит попробовать написать плагин для существующего проигрывателя, чтобы вы могли сосредоточиться на графике, а не на мелочах кодеков, dsp и аудиовыходов.
Я знаю, что WinAMP и Foobar имеют API для плагинов визуализации. Я уверен, что Windows Media Player и iTunes также имеют их. Просто выберите медиаплеер и начните читать. Некоторые из них могут даже иметь существующие плагины OpenGL, с которых вы можете начать, чтобы сосредоточиться на чистом OpenGL.
Ответ 4
Если вы только после некоторого базового 3D или ускоренного 2D, то я бы порекомендовал приобрести копию Dave Astle " Beginning OpenGL Game Programming ", которая охватывает основы OpenGL в C++.
Ответ 5
Для части анализа музыки вы должны изучить основы рядов Фурье, затем выбрать свободную реализацию алгоритма DFFT (цифрового быстрого преобразования Фурье).
Ответ 6
Вы можете найти реализацию алгоритмов FFT и другую полезную информацию в Numerical Recipes in C book. Книга бесплатна AFAIK. Существует также Numerical Recipes in С++.
Ответ 7
Возможно, вам захочется рассмотреть функции libvisual FFT/DCT над FFTW; они намного проще работать и предоставлять данные, с которыми легко работать, ради создания визуальных эффектов. Некоторые медиаплееры и плагины визуализации в некоторой степени используют libvisual для своих визуальных эффектов. Примеры: Тотем (игрок), GOOM (плагин для Тотема и других игроков), PsyMP3 2.x(игрок)
Ответ 8
С моей точки зрения... проверьте этот сайт: http://nehe.gamedev.net/
действительно хорошая информация и учебники по использованию OpenGL
изменить: http://www.opengl.org/code/