Hola ixMike, gracias por tu interés, estás cerca de dar con la clave, mira te explico un poco mejor ahora que he estado repasando un poco:
buffer recordemos que es un array de bytes, o sea, cada posición, un byte.
EL flujo de datos wav que se va a almacenar en buffer va así, sabiendo que una muestra de un canal ocupa 2bytes:
Cita:
2bytes canal L, 2bytes canal R, 2bytes canal L, 2bytes canal R, ....
|
Por lo tanto en buffer quedará así almacenado:
Cita:
1byte L, 1byte L, 1byte R, 1byte R, 1byte L, 1byte L, 1byte R, 1byte R, ...
|
Ostras, a medida que escribo creo que lo voy entendiendo yo también, ahora viene la instrucción que va dentro del bucle
for, que a mi entender, es de mitad de tamaño porque agrupa en una posición las muestras de buffer i e i+1 de un canal en una posición de pcm, y esto lo hace gracias al desplazamiento de 8 bits (1byte) a la izquierda de la muestra i, que concatena a su derecha la muestra i+1:
Cita:
pcm[i] := buffer[2*i+1] shl 8 or buffer[2*i];
|
Ahora, creo que eso es así, pero no entiendo cómo funciona el operador
or en esta situación de trabajar bit a bit, ¿podrías explicármelo para terminar de entender cómo en una misma instrucción hace lo que he explicado?
