50 Ways... Programming the ALSA API

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Abstract

Abstract in English

The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA provides an API, an Application Programming Interface, that is an abstraction layer so the programmers don't need to worry with the hardware domain. Using the ALSA API programmers have a lot of functions and procedures related with audio and MIDI, so it is possible to develop faster your applications, or to read, understand and reuse code available in the public domain.

Resum

La Arquitectura Avançada de So de Linux (Advanced Linux Sound Architecture, ALSA) proporciona funcionalitat audio i MIDI al sistema operatiu Linux. ALSA proporciona una API, una Interfície de Programació d'Aplicacions, que és una capa d'abstracció per als programadors de manera que no s'han de preocupar del hardware. Utilitzant l'API d'ALSA, els programadors tenen un munt de funcions i procediments relacionats amb audio i MIDI, de manera que pots desenvolupar ràpidament les teves aplicacions, o bé llegir, entendre i reutilitzar codi disponible en el domini públic.

Desenvolupament

Video

p1. portada
p2. intro
p3. ALSA API
p4. comiat
p5. contraportada

Transcripció català

[p2] Inici

La Arquitectura Avançada de So de Linux (Advanced Linux Sound Architecture, ALSA) proporciona funcionalitat audio i MIDI al sistema operatiu Linux. ALSA proporciona una API, una Interfície de Programació d'Aplicacions, que és una capa d'abstracció per als programadors de manera que no s'han de preocupar del hardware. Utilitzant l'API d'ALSA, els programadors tenen un munt de funcions i procediments relacionats amb audio i MIDI, de manera que pots desenvolupar ràpidament les teves aplicacions, o bé llegir, entendre i reutilitzar codi disponible en el domini públic. Anem a tocar programàticament la nostra cançó, Una Plata d'Enciam, enviant missatges MIDI al sintetitzador utilitzant les funcions de la API d'ALSA.

[p3]

Aquí tenim una aplicació escript en llenguatge C. Anem a programar la API de ALSA i la llibreria libasound:

#include <alsa/asoundlib.h>
...
miniArp_unaplatadenciam <beats per minute> <sequence file> <nom_client>

Veiem l'arxiu una_plata_denciam_voice1.seq. Veiem com la primera nota és un Mi de la 6a octava, i la C significa en aquest cas corxea (quaver). Tenim codificat la durada de la nota i el temps d'espera per a la següent nota.

Volem fer sonar dues veus, i necessitarm fer córrer dues instàncies de l'aplicació. Anem a automatitzar tot el procés amb una manera de fer que és molt típic de Linux. A més, com a novetat, mitjançant un midi router aconseguirem que les dues veus de la canço tinguin instruments diferents, en aquest cas violí i flauta.

Primer de tot compilem les dues aplicacions que utilitzarem:

gcc -o midiroute_split_channel midiroute_split_channel.c -lasound -> és el midi router
gcc -o miniArp_unaplatadenciam miniArp_unaplatadenciam.c -lasound

una_plata_denciam_with_C.sh

#!/bin/bash
xterm -e '/usr/local/bin/fluidsynth -j -m alsa_seq -a jack /home/joan/soundfonts/collections/Casio_VL_1.SF2' &
sleep 2
./miniArp_unaplatadenciam 25 una_plata_denciam_voice1.seq voice1 &
./miniArp_unaplatadenciam 25 una_plata_denciam_voice2.seq voice2 &
./midiroute_split_channel 60 2 3 &

aconnect voice1:0 'MIDI Router':0 &
aconnect voice2:0 'MIDI Router':0 &

aconnect 'MIDI Router':1 'FLUID Synth':0 &
aconnect 'MIDI Router':2 'FLUID Synth':0 &

aconnect voice1:0 FLUID Synth:0 &
aconnect voice2:0 FLUID Synth:0 &

[p4] Comiat

Aquest és el projecte 50 Ways to Play Una Plata d'Enciam, i en propers videos explorarem altres maneres de tocar aquesta cançó.

Transcripció castellà

[p2] Inici

La Arquitectura Avanzada de Sonido de Linux (Advanced Linux Sound Architecture, ALSA) proporciona funcionalidad audio y MIDI al sistema operativo Linux. ALSA proporciona una API, una Interfície de Programación de Aplicaciones, que es una capa de abstracción para los programadores de manera que no se tienen que preocupar del hardware. Utilizando la API de ALSA, los programadores tienen un montón de funciones y procedimientos relacionados con audio y MIDI, de manera que puedes desarrollar rápidamente tus aplicaciones, o bien leer, entender y reutilizar código disponible en el dominio público. Vamos a tocar programáticamente nuestra canción, Una Plata d'Enciam, enviando mensajes MIDI al sintetizador utilitzando las funciones de la API de ALSA.

[p4] Comiat

Este es el proyecto 50 Ways to Play Una Plata d'Enciam, y en los próximos videos exploraremos otras maneras de tocar esta canción.

Transcripció anglès

[p2] Inici

The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA provides an API, an Application Programming Interface, that is an abstraction layer so the programmers don't need to worry with the hardware domain. Using the ALSA API programmers have a lot of functions and procedures related with audio and MIDI, so it is possible to develop faster your applications, or to read, understand and reuse code available in the public domain. We are going to play programatically our song, Una Plata d'Enciam, sending the MIDI messages to the synthesizer using the ALSA API functions.

[p4] Comiat

This is the project 50 Ways to Play Una Plata d'Enciam, and in future videos we are going to explore other ways to play this song.

Notes tècniques

Enllaços


creat per Joan Quintana Compte,

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines