Mist, der blöde Editor hat mich rausgeschmissen...
nein, ich will das Original behalten, zur Sicherheit, deshalb zusätzlicher wavbuffer.
max-Wert und Minwert htte ich grade gepostet, wurde aber von dem blöden editor gelöscht weil mich das Forum ausgeloggt hat. Abrer das kannst du selber.... 
- - - Aktualisiert - - -
hierfür eine Funktion mit Rückgabewert anlegen:
Code:
maximum = wavbuffer[0];
int32_t maxpos;
for (i = 1; i < size; i++)
{
if (wavbuffer[i] > maximum)
{
maximum = wavbuffer[i];
maxpos= i+1;
}
}
Minimum analog
- - - Aktualisiert - - -
wir müssten für Vorspann und Nachspann wissen, ob wirklich immer einer existiert, oder ob alles der komplette aufgenommene Sound ist.
Nur wenn künftig überall Vor-oder Nachspann vorkommen, kann man das also analysieren und verwenden
- - - Aktualisiert - - -
wenn wir aufpassen, dass unsere Kommandos immer kürzer sind als die etwa 3 sec., kann man die Dynamik der letzten 100 Zellen verwenden (~10 ms):
minr = minimum der letzten 100 zellen (optimiert: ebenfalls zu heftige Spikes nach unten rausschneiden)
maxr = maximum der letzten 100 zellen (optimiert: ebenfalls zu heftige Spikes nach oben rausschneiden)
baseline = arithmet. Mittel der letzten 100 zellen (baseline)
bias = min(baseline-minr, maxr-baseline); // <=== Bandbreite um Mittelwert
- - - Aktualisiert - - -
wenn wir dann die Ober- und Untergrenzen des Grundrauschens kennen, können wir das bias abschneiden:
Code:
for(int i=0; i<SHRT_MAX; ++i) {
if( (wavbuffer[i]>baseline ) && (wavbuffer[i]< baseline + bias)) wavbuffer[i] = baseline ; // kleine Schwankung => auf Baseline
else
if( (wavbuffer[i]<baseline ) && (wavbuffer[i]> baseline - bias)) wavbuffer[i] = baseline ; // kleine Schwankung => auf Baseline
oh mann, wenn wir doch nur IMMER codetags im Editor hätten....!
(ich hoffe, ich habe mich jetzt nicht verkalkuliert mit dem "Entrauschen"...)
Lesezeichen