Вопрос

Итак, у меня есть что-то вроде:

    void createSinewave( short * array, int duration, int startOffset,
float freq, float amp ) ;
    void createSquarewave( short * array, int duration, int startOffset,
float freq, float amp ) ;

Другие функции "сдвигают" форму волны с некоторой низкой частоты на некоторую высокую частоту и принимают два частотных параметра.

Используя только эти функции, я смог создавать разнообразные звуки..ударный барабан, олдскульный звук лазерного огня и куча вещей, которые звучат как шаги.Мне не удалось синтезировать звук типа малого барабана.

Есть какие-нибудь предложения о том, как его сгенерировать?Какие частоты смешивать и в каких количествах их смешивать?Использовать другие типы формы волны, кроме синусоидальной, квадратной и треугольной?

Отчасти вдохновленный 64 k исполняемый файл Конкурсы.

Это было полезно?

Решение

Барабаны часто синтезируются короткими всплесками шума, например Белый, Розовый или Коричневый шум.

Из них легче всего генерировать белый шум:просто заполните свой массив случайными выборками, независимо выбранными с одинаковой вероятностью.Коричневый шум тоже довольно прост.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top