программно создать звук пэда - PullRequest
3 голосов
/ 31 июля 2010

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

Пэд - это своего рода электронный звук, похожий на "гудение".Что-то вроде this .

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

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

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

Ответы [ 4 ]

5 голосов
/ 31 июля 2010

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

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

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

РЕДАКТИРОВАТЬ:Под «некоторыми (уменьшающимися) весами» я имел в виду добавление обертонов, умноженных на некоторое усиление, например,

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];
4 голосов
/ 31 июля 2010

Есть объяснение синтеза пэдов:

http://zynaddsubfx.sourceforge.net/doc/PADsynth/PADsynth.htm

2 голосов
/ 31 июля 2010

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

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

2 голосов
/ 31 июля 2010

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

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

...