wenn wir soweit sind, können wir probeweise dieses Veränderte Array einmal abspielen und horchen, wie es klingt...
dann gehts weiter...
(ich habe schon eine Idee)


kleine Optimierung für analyse():

Code:
void analyse(int32_t *waveBuffer)
{
	int32_t maximum = waveBuffer[0];
	int32_t minimum = waveBuffer[0];
	
	int32_t maxpos, minpos;
	
	uint32_t i; // falls man mal aus Versehen 1 zu weit zählt...

	for(i=0; i<SHRT_MAX; ++i)  {
		if(waveBuffer[i] > maximum) {
			maximum = waveBuffer[i];			
			maxpos = i ;  // genaue Zellen-Nummer
		}

		if(waveBuffer[i] < minimum) {
			minimum = waveBuffer[i];			
			minpos = i ;
		}
	}
}
heute abend kann ich selber nicht am Raspi programmieren, du könntest mir aber mal deinen input als zipfile hochladen, dann kann ich morgen mal dran arbeiten.

- - - Aktualisiert - - -

Schneiden wir dann nicht auch diese Teile aus dem Wort raus?
was sind das für Teile, die du meinst ?


und wofür braucht du noch wave und diese Zeilen...?

wave = (uint8_t *) malloc(SHRT_MAX+1);
wave[i] = input[i] & 0x00ff;;