Я создаю VST для проекта, и пытаюсь создать генератор, создающий пилообразные, импульсные, синусоидальные и треугольные формы волн. Я искал повсюду и не могу найти что-то полезное (для меня), в основном потому, что я изо всех сил пытаюсь это понять.
пока у меня есть …
for (i=0;i<KWaveSize;i++)
{
sawtooth[i] = (float)(-1. + (2. * ((double)i / (double)kWaveSize)));
pulse[i] = (i < wh) ? -1.f : 1.f;
sine [i] (float)sin(twoPi * ((float)i /kWaveSize));
triangle[i] = ....
}
Я просто борюсь за то, как создать правильную форму волны, используя это.
Я пытался сделать:
triangle[i] = (float)(1 -((twoPi / KWaveSize) * i));
это было обоснованное предположение, основанное на книге, за которой я следовал, но оно искажало звук.
Если бы кто-нибудь сделал что-то подобное, что могло бы помочь, или указал бы мне на учебник для новичков по синтезу звука для всего, что касается генерации волновых таблиц и т. Д., Это было бы очень полезно.
Благодарю.
Вам нужна волна, которая меняет направление — она становится положительной от 0 до kWaveSize/2
и отрицательный оттуда kWaveSize
,
triangle[i] = i < kWaveSize/2 ? -1.0 + 2.0 * i / (kWaveSize*0.5) : 1.0 - 2.0 * i / (kWaveSize*0.5);
Других решений пока нет …