Ciao a tutti,
vorrei realizzare un karaoke che in qualche modo alla fine dell'esecuzione confronti due tracce audio.
Mi spiego meglio: la base dovrebbe essere un file midi, poi una persona canta e alla fine della canzone l'applicazione dovrebbe confrontare le due tracce e dirmi quanto è stata accurata la persona che ha cantato per esempio restituendo una percentuale di accuratezza.
Qui sotto vi riporto il codice con cui acquisisco due file mp3 e ne stampo il grafico.
codice:
public function MainSuono():void
{
	snd1.load(new URLRequest("record1.mp3"));
	snd2.load(new URLRequest("record2.mp3"));
	snd1.addEventListener(Event.COMPLETE, Caricato);
	snd2.addEventListener(Event.COMPLETE, Caricato);
			
}
public function Caricato(e:Event):void
{
			
	var bArray:ByteArray = new ByteArray();
	var lun:Number = Math.floor((e.target.length / 1000) * 44100);
	e.target.extract(bArray, lun); 
	var step:int = bArray.length / 256;
	var alt:Number = 0;
	bArray.position = 0;
	var vet:Vector.<Number> = new Vector.<Number>();
	for (i = 0; i < 256; i++ )
	{
			vet[i] = bArray.readFloat();
			bArray.position = i * step;
				
	}
	stampaGrafico(vet);
	indice+=400;
}
public function stampaGrafico(v:Vector.<Number>):void
{
	var curva:Sprite = new Sprite();
	addChild(curva);
	curva.graphics.clear();
	curva.graphics.moveTo(4, 200 + indice);
	if (indice == 1)
	{
		curva.graphics.lineStyle(3, 0xCCFFAA);
		curva.name = "Pino";
		arrey.push(v);
	}
	else
	{
		curva.graphics.lineStyle(3, 0x00CCEE);
		curva.name = "Nino";
		arrey.push(v);
	}
	for (i = 0; i < 256; i++ )
	{
		curva.graphics.lineTo(i,(200+indice) - (v[i] * 300));
		curva.graphics.endFill();
	}
	curva.addEventListener(MouseEvent.CLICK, Play);
}
Il mio problema è quindi il confronto delle due tracce, io ho pensando di scorrere il vettore che contiene le tracce e confrontarne i valori, quindi fare un delta tra i valori della prima traccia e quelli della seconda.
Spero di essermi spiegato e che qualcuno riesca ad aiutarmi magari utilizzando gli elementi che ho gia, altrimenti potete suggerirmi qualche tutorial (anche in inglese).
Grazie in anticipo