Todos los archivos son simplemente secuencias de números. Cada byte en un archivo representa un número en el rango [0..255]. Un archivo de texto es una secuencia de números, pero los valores de bytes que componen el archivo tienden a estar limitados al rango [32..126] con algunos otros como el 9, 10, 13. Eso es porque este rango de números también tiene un significado textual según la tabla ASCII:
Un .AMR (Adaptive Multi-Rate audio) es un archivo binario, lo que significa que los datos que contiene no representan texto y probablemente use el rango completo de [0..255]. Si intentaras abrir un archivo así en un editor de texto como el bloc de notas, se vería total y absolutamente incomprensible. Si deseas ver el contenido de un archivo binario, es mejor usar un editor hexadecimal. Verás que tu archivo se verá algo así:
Es, de nuevo, incomprensible, pero al menos puedes ver los datos representados de varias maneras. En el extremo derecho, se muestra cómo se vería el archivo si se abriera en un editor de texto muy bueno. (En el Bloc de notas probablemente se vería peor que esto). Puedes ver muchas letras aleatorias, signos de puntuación y caracteres extraños que no aparecen en la tabla ASCII anterior. Básicamente, eso es lo que tu compilador de C piensa que estás tratando de decir cuando realizas el #incluye del archivo .ARM.
En el panel central puedes ver los bytes representados como números hexadecimales en su lugar. Esta es una manera más significativa de ver un archivo binario. Y más o menos así es como necesita verse tu archivo .AMR antes de que tu compilador de C lo entienda.
Si quisiera compilar ese archivo mostrado en la imagen anterior, mi compilador de C querría ver esto:
xdata char mp3[]={
0x1D, 0x50, 0xAA, 0x37, 0xD5, 0x80, 0x9B, .......
};
Así que lo que necesitas es una herramienta que pueda convertir un archivo binario en el código C donde cada byte del archivo esté escrito en hexadecimal.
Afortunadamente, otras personas han tenido este problema antes y han escrito herramientas para solucionarlo. Podrías probar esta que se llama bin2h, o incluso esta otra, que también se llama bin2h.