Процедурный малый барабан

Так что у меня получилось что-то вроде:

    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 КБ конкурсы.


person bobobobo    schedule 22.02.2010    source источник


Ответы (2)


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

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

person Thomas    schedule 22.02.2010

Процедурный синтез малого барабана.

person plinth    schedule 22.02.2010
comment
И вот немного предыстории: soundonsound.com/sos/mar02/articles/synthsecrets0302 .asp - person Matt Ball; 22.02.2010