Versión 0.9.7, septiembre de 2003.
Copyright (C) 2002-2003, Pedro Lopez-Cabanillas < plcl@bigfoot.com >
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:
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/
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.
He intentado realizar una traducción lo más exacta posible, sin embargo, debido a diferentes circunstancias, existen pequeñas diferencias.
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.
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).
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".
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. |
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.