2017-11-06 9 views
0

Ich verwende ein Puffer-Array namens Raw mit der Größe meiner Samplerate, so dass ich in 1 Sekunde eines Sounds laden kann.Erstellen eines Sägezahn- "Wave" mit einer Funktion in C++

Ich habe versucht, eine Sägezahn- "Welle" mit einer dieser Methoden zu erstellen, aber ich höre keine Ausgabe. Erste Methode:

void createSaw() { 
    for (unsigned i = 0; i < SAMPLES; i++) { 
     raw[i] = ((int)x % amplitude) - amplitude/2; 
     x += increment; 
    } 
} 

Zweite Methode:

unsigned n = 0; 
sf::Int16 value = 0; 

void createSaw2() { 
    for (unsigned i = 0; i < SAMPLES; i++) { 
     while (n < amplitude) { 
      value += (1/(2 * n + 1)) * sin(-2 * n * x); 
      n++; 
     } 
     n = 0; 
     raw[i] = value; 
     x += increment; 
    } 
} 

Was mache ich falsch? Sollte irgendetwas davon funktionieren?

Antwort

5

Das Ergebnis 1/(2 * n + 1) ist 0 (1 für n=0), weil Sie Integer-Berechnungen verwenden. Ihr sin() wird mit 0 multipliziert.

+0

in Ordnung, ich fand eine Lösung für die erste Methode. – Steakie

Verwandte Themen