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.
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.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); }
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

Rispondi quotando