C/Visual C - Conversion de datos (char, int...)

 
Vista:

Conversion de datos (char, int...)

Publicado por edu (2 intervenciones) el 06/05/2002 20:50:17
Tengo un programa que graba del micro. Como cojo 8 bits por muestra, leo del buffer con un *char.
Creoq ue el formato de la muestra de 8 bits es de 127=0, 0=-127 y 255=+127.
Mi pregunta es como tengo que hacer para pasar de este formato a int. Si lopuedo hacer directamente.Por ejemplo, si quiero sumar el valor de todas las muestras:
char *buffer;
int suma;
for(...){
suma=suma+*buffer;
buffer++;
}
Es correcto? Es que lo hago asi y cuando no hay sonido, me sale que el valor medio de las muestras es 127. (cuando supongo deberia ser cero).
Tambien ocurre una cosa que no entiendo. Cuando hablo fuerte por el micro, calculo el valor medio de las muestras y me sale cero, auqnue luego he imprimido el valor del buffer y veo que no todas las muestras son cero, por lo que no deberia dar ese resultado.
Que ocurre?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Conversion de datos (char, int...)

Publicado por chuidiang (677 intervenciones) el 06/05/2002 22:06:44
Antes de nada, para asegurar que no hay problemas, yo lo leería con un unsigned char.

La cuenta que haces es correcta, pero para tener el verdadero valor medio, deberías restar 127 por cada muestra, ya que el 0 es para la muestra=127.
suma = suma + *buffer - 127;

El valor medio que te sale cuando no hay sonido es 127, que si te fijas, correspondería al cero.

No he probado nunca con el micro, pero imagino que da igual si hay sonido o no, el valor medio siempre debería salir cero. Ten en cuenta que estará "vibrando" más o menos fuerte, pero siempre alrededor del cero.

Si hablas fuerte, puede que satures el micro. En ese caso los valores de muestras que te da no tienen por qué tener mucho sentido y es perfectamente posible que el valor medio te salga en uno de los extremos.

Espero haberte servido de algo

Se bueno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar