2014-10-01

Grabar datos en un cassette de audio

La gente normal tiene lectores de DVD o BD en sus ordenadores pero volvamos atrás en el tiempo para recordar una época en la que reinaban los 8 bits y lo analógico. A lo largo de este post voy a explicar cómo he conseguido conectar un radio-cassette a mi estación de trabajo para hacer los backups más geeks del siglo XXI.

A finales de los años 70 y principios de los 80 era habitual que los ordenadores vinieran equipados con reproductores de cassette ya que eran más baratos que las disqueteras. Los míticos Sinclair ZX Spectrum, Atari 800, Commodore 64 e incluso el Apple II llevaban este tipo de almacenamiento magnético que hoy se sigue usando en copias de seguridad de los grandes mainframes porque siguen siendo muy baratos, duraderos y su almacenamiento actual va hasta unos asombrosos 184TB.

Pero lo que me propongo hacer es revivir esa tecnología al más puro estilo geek. Los antiguos lectores de cassettes para ordenadores estaban diseñados a tal efecto y contaban con entrada y salida de datos, así como de los controladores necesarios para que la grabación y lectura se produjera de forma más o menos transparente (y lentísima) para el usuario pero adaptar esta tecnología al siglo XXI requiere hacer alguna chapucilla. Lo primero que necesitamos es un radio-cassette con entrada de audio para micrófono y salida para auriculares, además de los oportunos cables jack de 3.5mm para conectarlo al ordenador. Como controlador, voy a usar un programa llamado minimodem que sirve originariamente para emular módems de pulsaciones y transferir datos entre dos ordenadores conectados por un cable de audio. El problema de este programa es que está diseñado para la comunicación y solo transfiere strings de texto pero vamos a hacer algún apaño con redireccionamiento y pipes de Bash para poder almacenar datos en nuestros cassettes.

Después de conectar el ordenador al radio-cassette, vamos a comprobar que la calidad de grabación es suficiente para que los datos no se corrompan. Además, podríamos ajustar la velocidad de grabación si nos hiciera falta. Yo voy a fijarla en 300Bd ya que este era el estándar en los años 80 pero se podría intentar aumentar a 1200Bd para conseguir cuatro veces más almacenamiento.
Instalamos minimodem
sudo apt-add-repository ppa:kamalmostafa/minimodem
sudo apt update
sudo apt install minimodem
Yo he elegido transferir un texto desde un archivo que he preparado para la ocasión, hamlet.txt. Para ello utilizamos un input del shell pero antes de ejecutarlo hay que pulsar el botón de Rec del radio-cassette. Obviamente no hay forma de automatizar este proceso.
< hamlet.txt minimodem -t 300
Rebobinamos el cassette y lo reproducimos después de ejecutar el comando de grabación
minimodem -r 300 -q > hamlet1.txt
Utilizamos la opción -q para no leer las señales CARRIER/NOCARRIER y comparamos el archivo que ha ido y vuelto del cassette con el original para comprobar si está corrupto.
cmp -l hamlet.txt hamlet1.txt
Si nuestra configuración supera la prueba satisfactoriamente, estaremos en disposición de transmitir datos. Como no podía ser de otro modo, voy a intentar guardar en el cassette una copia de los quinquiluñes, juego del que ya hemos hablado hasta la saciedad. No voy a explicar como clonarlo y compilarlo porque eso ya lo hice en el post sobre mi router-consola. Lo importante es saber que tengo un binario en mi carpeta personal llamado qq.
< qq minimodem -t 300
Y nos armamos de paciencia... la transmisión tardó más de 10 minutos y otro tanto cada vez que queramos leer el archivo. La espera valió la pena porque al final todo salió bien y una copia de los quinquiluñes permanecerá para siempre en una cassette de José Luis Perales.

Seguro que a alguno le quedan las ganas de replicar este experimento pero sin el engorro de los cassettes. Ya sea por esto o porque queréis saber a qué suenan los quinquiluñes a 300Bd, os dejo una copia digitalizada.