Я хочу изучить аудиопрограммирование

В моей средней школе мы можем взять класс, где мы в основном изучаем предмет самостоятельно в течение семестра. Я думал, что хочу узнать о "звуковом программировании", но понял, что понятия не имею, что это значит. Мне интересно узнать, например, как работает синтезатор и как работает звук в компьютерной науке. Я действительно хочу сосредоточиться на низкоуровневой части кода, а не на части композиции. Является ли это приемлемым предметом? Есть ли хорошие учебники для кого-то, совершенно нового в этом? Я знаю С++ и использую Windows. Первый ответ в этом - это то, что меня интересует (хотя это над моей головой).

Ответы

Ответ 1

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

Поскольку вы упомянули как "как работает звук в компьютерной науке", так и "синтезаторы", стоит отметить разницу между аналоговым звуком, сэмплированным звуком и синтезированным звуком, поскольку они представляют собой разные концепции. Я кратко объясню их здесь.

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

Сэмплированный звук - это представление звука, которое хорошо поддается обработке с помощью компьютера. Люди больше всего знакомы с дискретизированным звуком через компакт-диски и другие музыкальные записи. Аналоговый сигнал сэмплируется на некоторой частоте (например, 44,1 кГц для записи CD). Таким образом, дискретизированный звуковой сигнал является дискретным во временной области. Если сигнал квантуется, то он также будет дискретным в области амплитуды. Форматы, такие как MP3, являются сэмплированными форматами. Там, где вам интересно, много исследований, таких как восстановление (удаление статических и т.д.) И сжатие (опять же, кодеки MP3, Ogg Vorbis). Это очень весело, потому что там есть много экспериментов и кода.

Как аналоговый, так и дискретизированный звук глубоко проникают в поле под названием Digital Signal Processing. Google для этого, чтобы понять, что ему нравится. Его часто преподавали как курс в университетах, поэтому, если вы действительно заинтересованы, вы можете взглянуть на слайды слайдов или даже попробовать некоторые из более ранних, более простых проектов.

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

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

ИЗМЕНИТЬ

Хорошая книга для чтения this. Вероятно, вы можете взглянуть на связанные заголовки в Amazon и найти что-то новое, но прошло некоторое время с тех пор, как я сделал покупки для обработки аудио.

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

Ответ 2

Рассмотрите возможность работы через книгу "Кто такой фурье? Математическое приключение" . Вы могли бы приспособить примеры, чтобы сделать небольшие задания программирования, которые демонстрируют основные понятия. После того, как вы закончите, вы сможете использовать fft для создания спектрограммы своего голоса, когда произносите гласные a, e, i, o, u - идентифицируете основную частоту и форманты каждого гласного.

Я рекомендую изучать Python и модули NumPy, SciPy и matplotlib (там тонна, поэтому помимо основных уроков, просто учитесь как ты иди). У оболочки iPython есть опция "-pylab -p scipy", чтобы автоматически импортировать наиболее распространенные инструменты в ваше пространство имен. Вы можете записывать и воспроизводить аудио с помощью PyAudio. Там также Pygame, который расширяется на SDL (простой слой DirectMedia) и pyglet, который использует OpenAL (OpenGL аудио, 3D-эффекты и эффекты).

Что касается C/С++, там есть IT ++, SPUC и FFTW для обработки сигналов, а SDL/SDL_mixer и OpenAL/ALmixer для взаимодействия с аппаратными и аудиофайлами.

Ответ 3

Я бы рекомендовал эту книгу: http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=8218 (его часть доступна здесь: http://books.google.com/books?id=nZ-TetwzVcIC&printsec=frontcover&dq=computer+musical+tutorial&hl=pt-BR&ei=D-dKTaKsBMOB8gbF4KDcDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CDgQ6AEwAA#v=onepage&q=computer%20musical%20tutorial&f=false)

И еще одна вещь, которую вы можете посмотреть, - это pureata, это графическая среда с открытым исходным кодом для звукового программирования, и это отлично подходит для новичков. (http://puredata.info/)