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