Ayuda más que urgente

11/01/2006 - 18:30 por Daniel Kurman | Informe spam
Señores. Tengo un problema desde hace varios días y no lo puedo resolver y
ya estoy con los tiempos acotados.

El siguiente codigo debería tomar el buffer proveniente de un wave y
dividirlo en distintos samples, según el sample rate y pasar cada uno a una
matriz x[] de tipo float (o byte). Creo que estoy utilizando mal el
ReadInt16, he intentado con el ReadBytes, pero tampoco.

int Samples = m_RecBuffer.Length / format.nBlockAlign;
BinaryReader From = new BinaryReader(new MemoryStream(m_RecBuffer, 0,
m_RecBuffer.Length));
float[] x = new float[Samples];
for (int i = 0; i < Samples; i++)
{
x[i] = From.ReadInt16() / (float)SAMPLE_RATE;
}


Le pido por favor a quien sepa sobre el tema, me responda lo antes que
pueda, dado que no encuentro la salida y ya no me quedan tiempos.

Muchas gracias por adelantado.
 

Leer las respuestas

#1 A.Poblacion
11/01/2006 - 19:37 | Informe spam
"Daniel Kurman" wrote in message
news:%
[...] Creo que estoy utilizando mal el
ReadInt16, he intentado con el ReadBytes, pero tampoco.



El código tiene buen aspecto. Cuando dices que no funciona, ¿qué
síntomas te da? Si lo que te ocurre es que el array de floats recibe valores
incorrectos, se me ocurre una posible causa: El ReadInt16 espera encontrarse
los valores en formato "little endian" (es decir, primero el byte con los
bits menos significativos). Si el búfer que trae los datos los tiene en
formato "big endian", entonces tendrás que leerlos como bytes y procesarlos
en el orden contrario (el primero*256+el segundo, en lugar de al revés -
¿has probado de las dos formas?)

Preguntas similares