2010-07-31 3 views
3

Хорошо, это может быть немного из левого поля, но я все равно попытаюсь.программно создает звук колодки

Пэд - это своего рода окружающий электронный звук, который «гудит». Что-то вроде this.

Как это сделать в коде? Использование либо обработки, OpenFrameworks, C, Objective-C или C++. Имейте в виду, что я так долго не программировал.

Я буду очень впечатлен, если это даст ответ!

Хорошо ... Идите!

ответ

5

Я никогда не слышал, чтобы термин «пэд» применялся здесь, но звучит как звук синтезатора, играя основные аккорды.

В качестве начала, чтобы представить одну ноту, вы могли генерировать волны sin на основной частоте ноты (скажем, 440 Гц, если мы говорим об A Major), и о следующих нескольких кратных (880, 1760) , 3520) и суммировать их с некоторыми (уменьшающимися) весами. Затем добавьте в другие ноты аккорда (C# и E), сделанные таким же образом.

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

EDIT: Под «некоторыми (уменьшающимися) весами» я имел в виду добавление обертонов к некоторому усилению, например.

F = 440; // Hz 
tone[t] = A * sin(t/F) + B * sin(t/(2*F)) + C * sin(t/(3*F)); // + etc, perhaps 

, где, возможно,

A = 1.0; 
B = 1.0/2.0; 
C = 1.0/3.0; 

или некоторые такие вещи.

Для фильтра ADSR (посмотрите вверх) вы умножаете генерируемую форму волны на усиление, которое увеличивается от 0 до 1 в течение периода «атаки», который вы выбираете, затем падает во время периода «спада» до некоторого числа вы выбираете (возможно, 0,7), затем опускаетесь до 0 линейно, когда вы «отпускаете» устойчивую ноту.

Для эхо/реверберации вы можете добавить сигнал обратно в себя с некоторой задержкой, например.

D = 4410; // 10 msec at 44.1 kHz., as an example value 
tone[t] += 0.5 * tone[t-D]; 
+0

Да, это полезно. Я уже реализовал его в обработке, и он начинает звучать хорошо. Несколько вещей: 1. Что вы подразумеваете под «некоторыми уменьшающимися весами»? 2. Я слышал, что длительные атаки, фазы выпуска и громкая задержка также могут помочь, но не знаю, с чего начать программно. Любой совет? –

2

Я не могу помочь вам с конкретными примерами кода, но я бы сказал, что что-то похожее на этот звуковой образец ваша может быть сделано с FM (Frequency Modulation) синтез.

Прежде чем вы напишете какой-либо код, вы можете загрузить любое программное обеспечение FM-синтезатора из Интернета (есть много свободно доступных, некоторые из них являются автономными приложениями, некоторые - плагинами VST) и немного экспериментируйте, и если вы можете создайте необходимый звук, напишите соответствующий код. (К тому времени, скорее всего, вы узнаете, какую комбинацию осцилляторов, частоты и т. Д. Вам нужно.)

2

Если вы не экспериментируете в звуковом программировании, вы должны imho взглянуть на звук java, поскольку его очень легко учиться и использовать. Я знаю, что вы отметили C *, но я не знаю, есть ли такой простой API или так.

Создание звука в основном то, что сказал Грюмдриг, вам «просто» нужно комбинировать разные волны таким образом, чтобы вам понравился звук.;-)