ALSAPAS

ALSAPAS

(biblioteca ALSA para Pascal)

Versión 0.9.7, septiembre de 2003.
Copyright (C) 2002-2003, Pedro Lopez-Cabanillas < plcl@bigfoot.com >

This page is available in English

Introducción

Este paquete es una traducción al lenguaje Pascal de los ficheros de cabecera (*.h) de la biblioteca ALSA, versión 0.9.7

ALSA es el acrónimo de "Advanced Linux Sound Architecture" (Arquitectura de sonido avanzada de Linux) que permite usar dispositivos de audio digital y MIDI en sistemas Linux.

Para mas información, consultar http://www.alsa-project.org/

Mediante esta traducción, es posible realizar programas en Pascal que saquen partido de las funcionalidades de ALSA. Los compiladores soportados son:

Descarga

Cómo usarlo

Hasta donde yo conozco, ALSA existe únicamente en Linux. Esto significa que no tiene sentido usar esta unit en programas Delphi para Windows, o en programas Free Pascal para otros sistemas operativos.

Incluir la siguiente cláusula en los fuentes que necesiten utilizar ALSA:

    uses asoundlib;

En la misma cláusula uses, a menudo será necesario incluir también:

    uses Libc; { Kylix 3 y Free Pascal 1.0.10 }

Opcionalmente, puede ser necesario utilizar directivas de compilacion condicional.

    {$IFDEF FPC}
{ código para Free Pascal Compiler }
{$ELSE}
{ código para Borland Kylix }
{$ENDIF}

Para información adicional, consultar el directorio "examples". La documentación del API de la biblioteca ALSA se incluye en la distribución de dicha biblioteca y también está disponible en línea, http://www.alsa-project.org/alsa-doc/alsa-lib/

Compilación e instalación

Este paquete no utiliza GNU/autoconf, sino fpcmake. En la distribución se incluyen los Makefile ya generados, junto con los ficheros Makefile.fpc que pueden ser ajustados a medida. Para volver a generar los Makefile, ejecutar el comando siguiente en cada uno de los directorios de la distribución:

 $ fpcmake  

Para compilar automáticamente la unit, con Free Pascal Compiler:

 $ make  

Para compilar los ejemplos, usando Free Pascal Compiler:

 $ make examples  

Para instalar:

 $ make install 
$ make install_examples

Se puede usar alternativamente el compilador Kylix de Borland, para ello:

 $ source /path_a/kylix3/bin/kylixpath
$ make kylix
$ make kylix_examples

Para mas información sobre fpcmake, make y la sintaxis de los ficheros Makefile.fpc, consultar el documento "prog.pdf" que forma parte de la documentación de Free Pascal.

Diferencias principales con los originales en C

He intentado realizar una traducción lo más exacta posible, sin embargo, debido a diferentes circunstancias, existen pequeñas diferencias.

Macros no traducidas

Excepto en lo que se refiere a las macros de <seqmid .h>, que debido a su importancia se han traducido en su totalidad implementándolas como funciones, el resto de macros declaradas en las cabeceras originales se han omitido, por diversos motivos. Particularmente, no es posible usar ninguna macro del tipo snd_XXXX_alloca. Para asignar memoria y obtener el puntero a una de las estructuras de datos ocultas de la biblioteca, utilizar las funciones de tipo snd_XXXX_malloc / snd_XXXX_free.

Cambios de nombre

En algunos casos se ha tenido que cambiar el nombre de ciertas funciones, debido a la existencia de símbolos duplicados debido a la insensibilidad a mayúsculas y minúsculas del lenguaje Pascal. La correspondencia de dichas funciones es la siguiente:

Cabecera Nombre original (C) Nuevo nombre (Pascal)
control.h 'snd_ctl_nonblock' snd_ctl_set_nonblock
pcm.h 'snd_pcm_nonblock' snd_pcm_set_nonblock
pcm.h 'snd_pcm_format_float' snd_pcm_format_is_float
rawmidi.h 'snd_rawmidi_nonblock' snd_rawmidi_set_nonblock
seq.h 'snd_seq_nonblock' snd_seq_set_nonblock

Por colisión con palabras reservadas de Pascal, se han cambiado los símbolos siguientes:
En la estructura snd_seq_event (seq_event.h / seq_eventh.inc), el campo "type" se ha traducido como "_type" (event type).
En snd_seq_ev_loop (seq_event.h / seq_eventh.inc), el campo "end" se ha traducido como "_end" (loop end in samples).

Cabeceras no traducidas

Los ficheros de cabecera "conv.h" e "iatomic.h" no se han traducido. Sólo se ha traducido una pequeña parte de "global.h".

Programas de ejemplo

Los siguientes programas se incluyen en la distribución, dentro del directorio "examples".

testctl.pas Traducción del programa alsa-lib/test/control.c
testimer.pas Traducción del programa alsa-lib/test/timer.c
testpcm1.pas Salida de un sonido simple mediante el interfaz PCM. Basado en el capítulo 2 del documento "alsa090 howto" de Matthias Nagorni
testpcm2.pas Mini-Sintetizador FM. Muestra el uso combinado del interfaz PCM y el secuenciador MIDI. Traducción del programa "miniFMsynth.c" de "alsa090 howto" de Matthias Nagorni
testraw1.pas Salida de una sola nota, utilizando el interfaz "RawMIDI".
testraw2.pas Lectura y escritura de datos MIDI, usando el interfaz "RawMIDI" de ALSA y el modo de compatibilidad OSS. Traducción del programa alsa-lib/test/rawmidi.c
testseq1.pas Monitor MIDI. Muestra como capturar la entrada del secuenciador MIDI. Basado en el capítulo 4 (seqdemo.c) del documento "alsa090 howto" de Matthias Nagorni.
testseq2.pas Obtiene y muestra la lista de clientes del secuenciador MIDI de ALSA.

Agradecimientos y Licencia

Muchas gracias a todo el equipo de desarrollo de ALSA.

Muchas gracias al Dr. Matthias Nagorni. Varios programas de ejemplo se basan en su tutorial "alsa090 howto", que puede obtenerse en la siguiente dirección http://www.suse.de/~mana/alsa090_howto.html

Muchas gracias a todo el equipo de Free Pascal Compiler.

Copyright (C) 2002-2003, Pedro Lopez-Cabanillas <plcl@bigfoot.com>

Esta biblioteca es software libre; usted puede redistribuirla y/o modificarla bajo los términos de la licencia "GNU Lesser General Public Licence" (LGPL) versión 2.1 o posterior, cuyo texto completo se incluye en el archivo COPYING, y que también puede ser consultada en línea en la siguiente dirección: http://www.fsf.org/copyleft/lesser.html

Hay una traducción (no oficial) al español en http://gugs.sindominio.net/gnu-gpl/lgpl-es.html

EXCLUSIÓN DE GARANTÍA

DEBIDO A QUE LA BIBLIOTECA ESTÁ LICENCIADA LIBRE DE CARGO, NO HAY GARANTÍA PARA LA BIBLIOTECA EN LA EXTENSIÓN PERMITIDA POR LA LEY APLICABLE. EXCEPTO CUANDO SE ESTABLEZCA DE OTRO MODO POR ESCRITO, LOS POSEEDORES DEL DERECHO DE AUTOR Y/O OTRAS PARTES SUMINISTRAN LA BIBLIOTECA "TAL CUAL" SIN GARANTÍA DE NINGUNA CLASE, YA SEA DE FORMA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADA A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. TODO EL RIESGO EN CUANTO A CALIDAD Y EJECUCIÓN DE LA BIBLIOTECA ES SUYO. SI LA BIBLIOTECA RESULTARA ESTAR DEFECTUOSA, USTED ASUME EL COSTE DE TODO EL MANTENIMIENTO, REPARACIÓN O CORRECCIÓN NECESARIA.

BAJO NINGÚN CONCEPTO, A MENOS QUE SEA REQUERIDO POR LA LEY APLICABLE O DE ACUERDO A UN ESCRITO, CUALQUIER POSEEDOR DE DERECHOS DE AUTOR O CUALQUIER OTRA PARTE QUE PUEDA MODIFICAR Y/O REDISTRIBUIR LA BIBLIOTECA COMO SE PERMITE ARRIBA, SERÁ RESPONSABLE CON USTED POR DAÑOS, INCLUYENDO CUALQUIER DAÑO GENERAL, ESPECIAL, ACCIDENTAL O CONSECUENTE ORIGINADO POR EL USO O INCAPACIDAD DE USAR LA BIBLIOTECA (INCLUYENDO PERO NO LIMITANDO, A LAS PÉRDIDAS DE DATOS O A LA PRODUCCIÓN DE DATOS INCORRECTOS, O PÉRDIDAS SUFRIDAS POR USTED O TERCERAS PARTES O UN FALLO DE LA BIBLIOTECA PARA FUNCIONAR CON CUALQUIER OTRO SOFTWARE) INCLUSO SI TAL TITULAR U OTRA PARTE HA SIDO NOTIFICADA DE LA POSIBILIDAD DE TALES DAÑOS.