MP3Play. Un reproductor de audio en 2 Kb

Revisando después de muchos años la evolución de Sphinx C–, me he encontrado con una de esas joyitas de la programación, que de vez en cuando le sorprenden a uno.

Se trata de MiniMP3 y MP3Play. El primero es un básico reproductor de MP3 que ¡ocupa 2 Kb!. El segundo, y más sorprendente, es también un reproductor de audio, en sólo 4 Kb, soporta listas de reproducción, permitiendo escuchar los formatos MIDI (MID), WAVE (WAV), MPEG Layer 3 (MP3), RMI, AIFF (AIF), AU y SND. Cabe decir, que comprimiendo MP3Play con un compresor de ejecutables, su tamaño final, ronda los 1,5 Kb.

Ambos programas, forman parte de los ejemplos que vienen a demostrar la potencia y eficiencia de C– como lenguaje de propósito general.

Tal como explica su autor, Ron Thomas, el pequeño truco que, que por otro lado no desmerece en absoluto el mérito de ambas aplicaciones, radica en utilizar la biblioteca Msvfw32.dll (incluída en el Windows Media Player), para delegar el trabajo de reproducción.

Sphinx C– es un lenguaje de programación de medio nivel, vendría a ser algo intermedio entre Ensamblador y C/C++, lo que le permite sin duda tener una eficiencia muy cercana al código máquina, al mismo tiempo que mantiene una facilidad de programación al nivel de los lenguajes estructurados de alto nivel.

Descargar MP3Play y su código fuente en C– (9 Kb en formato ZIP).



3 comentarios en “MP3Play. Un reproductor de audio en 2 Kb”

  1. hola guti
    oye puedes explicarme un pokito acerca de los compresores de ejecutables, desventajas y algunas opciones, o indicarme dónde puedo encontrar información acerca del tema?
    gracias de antemano si puedes 🙂

  2. No conocía este lenguaje C–. De todos modos, no pienso que un lenguaje a medio paso entre ensamblador y C/C++ pueda llegar a triunfar (aunque suelo equivocarme con mis predicciones… 🙂 ).Por cierto, he leído que sólo genera ejecutables para Windows, ¿sabes si está disponible para Linux?

  3. amuchamu, un compresor de ejecutables, comprime las imágenes binarias, y le añade un trozo de código para ser descomprimidas (generalmente en memoria) nada más ser lanzado el programa. Las ventajas, pues menor espacio en disco, menor tiempo de transferencia, y mayor dificultad de hackeo.
    Los principales inconvenientes son que en medios de acceso rápido, como discos duros, el proceso de ejecución es más lento (hay que cargar los datos y descomprimirlos); según que implementaciones bajo Windows requieren mayor memoria en su versión comprimida.
    Más información: upx.sourceforge.net.

    Jordi, al igual que tu, no creo que tenga tampoco demasiado futuro algo de este estilo. Los nuevos ensambladores, ya soportan instrucciones de alto nivel como condicionales, estructuras, … así que C– parece fuera de lugar.
    Hace algunos años, cuando apareció C–, C/C++ se consideraba un lenguaje de alto nivel, y por tanto C– era de medio nivel. Hoy en día, casi nadie sabe C/C++, y se le considera un lenguaje de bajo o medio nivel, según donde se mire.
    Lo que se es que generaba ejecutables DOS, y ahora también Windows, creo que Linux no está soportado.

Deja un comentario