PDF de programación - Configurar Gnu/Linux para producción musical

Imágen de pdf Configurar Gnu/Linux para producción musical

Configurar Gnu/Linux para producción musicalgráfica de visualizaciones

Publicado el 30 de Marzo del 2018
458 visualizaciones desde el 30 de Marzo del 2018
244,8 KB
9 paginas
Creado hace 14a (21/09/2009)
Configurar Gnu/Linux para producción

musical

Cualquier distribución de Gnu-Linux puede configurarse para trabajar con
audio en tiempo real (con “tiempo real” me refiero a acceder a los procesos
relacionados con el audio sin latencia o tiempo de retardo), en Microsoft
Windows se precisa de controladores especiales para aprovechar el proceso
DSP de las placas de sonido profesionales, estos driver se denominan ASIO
(Audio Stream Input/Output). En Gnu/Linux existe la ventaja de que no se
precisan drivers ni controladores especiales sino que el sistema se configura
para este propósito, desde el corazón mismo que se denomina kernel,
permitiendo así mayor control y rendimiento y no dependiendo de que los
fabricantes de las placas de sonido, nos provean un driver ASIO.
Voy a tratar de hacer un resumen de como configurar un sistema GNU/Linux
para trabajar con audio, basándome en las distribuciones más conocidas,
igualmente existen distribuciones armadas para esto, pero siempre es bueno
saber como se hace.
1-En distribuciones que derivan de Debian como Ubuntu, GNU/Linux Mint,
etc; el kenel real time lo encontramos en los repositorios oficiales de software,
así que abriendo una terminal o consola y escribiendo:
sudo aptitude install linux-image-2.6.XX.X-rt
(El comando sudo es para poder acceder a los permisos de administrador y
hacer cambios de sistema)
En Debian o distribuciones más seguras con el comando su, nos solicita
directamente la contraseña de administrador, y podemos operar con estos
permisos, una vez introducida la clave.
También se puede instalar utilizando el gestor de paquetes visual que tenga la
distribución GNU-Linux, por ejemplo el Gestor de paquetes Synaptic.
2-Luego lo más importante es editar el archivo /etc/security/limits.conf (para
lo que se puede usar como superusuario el editor de textos gedit, nano,
mcedit o cualquier otro disponible), otra vez en la terminal escribimos:
sudo gedit /etc/security/limits.conf y agregamos al final estas líneas:

@audio - rtprio
@audio - nice
@audio - memlock

99
-10
4000000

Guardamos el archivo y reiniciamos la máquina.


Explicación de lo anterior: El valor rtprio es la máxima prioridad con la
que un usuario del grupo audio puede ejecutar una tarea. El valor
memlock es la máxima cantidad de memoria que un miembro del
grupo audio puede bloquear para una tarea siendo ejecutada en
tiempo real. Debería ser inferior a la máxima cantidad de memoria
física; siendo una recomendación común establecerla a la mitad
exacta. El valor nice es el mínimo con el que una tarea puede ser
ejecutada; se trata de la predisposición de una tarea a liberar tiempo
de CPU.

Luego podemos instalar  y configurar jack  y qjack: 
sudo aptitude install qjack jackd
#y luego configurar correctamente jack, ejecutando qjackctl y activando en
setup (o configuración) estas opciones:
tiempo real (activado)
no bloquear memoria (activado)
modo tolerante (activado)
forzar 16bit (activado si querés trabajar en 16 bits)

#y agregás los valores:
Prioridad=70
Cuadros/Períodos=128 (con esto conseguís 5.8 ms de latencia podes
usar 256 también si querés liberar más el cpu consiguiendo 11.4 ms de
latencia -recomendado en pcs mas antiguas-)
Frecuencia de muestreo=44100
Períodos/buffer=2
Máximos puertos=128
Límite de tiempo= 5000 (ms)
Interface= la placa que uses o default
Suavizado=ninguno
Audio=duplex
Dispositivo de entrada=(default)
Dispositivo de salida=(default)
canales=0
latencias=0
Algunos ejemplos de Software Libre Musical:
Ardour: El clon Pro Tools, super rápido-estable y muy profesional
Rosegarden: Secuencer Midi-Audio.
NtEd:Editor de Partituras.
Qsynth: Sampler de Sound Fonts.
Hydrogen: Máquina de ritmos
Audacity: Editor de audio multipista.
ZynAddSubFX: Sinte virtual, con varios tipos de síntesis.
Qjackctl: Interface gráfica para jackd (servidor de audio en tiempo real)

conecta todo que te nombro y lo gestiona.
Plugins Caps y Tap: Muy buenos plugins LADPSA para usar con cualquier
secuencer o editor.
Lmms: Clon de Fruity Loops.
Seq24: Secuenciador midi, basado en loops.
Establecer prioridades RT, o sea aprovechar el
kernel real time:
En esta parte de la explicación me “baso” en el artículo de Florian Paul
Schmidt (muy completo el que quiera lo puede buscar en la web) pero
agregando todo lo que yo pude experimentar.
El paso final es establecer unas cuantas prioridades de tareas. El parche para
tiempo real debería haber creado varias tareas IRQ, así como una tarea
hrtimer. Pueden visualizarse con el comando:
# ps -e
nos muestra lo siguiente (solo copio las tareas que nos pueden llegar a
interesar para audio ya que son muchas, para ahorrar espacio):

PID

TTY TIME

CMD

1

2

3

4

6

12

53

295

296

303

?

?

?

?

?

?

?

?

?

?

00:00:01

init

00:00:00

kthreadd

00:00:00

migration/0

00:00:00

posixcputmr/0

00:01:11

sirq-timer/0

00:00:00

sirq-hrtimer/0

00:00:00

IRQ-9

00:00:25

IRQ-12

00:00:00

IRQ-1

00:00:00

IRQ-8

616

628

645

665

692

752

753

1435

1493

1872

2480

2483

?

?

?

?

?

?

?

?

?

?

?

?

00:00:00

IRQ-16

00:00:00

IRQ-19

00:00:00

IRQ-18

00:00:00

IRQ-23

00:00:00

IRQ-6

00:00:02

IRQ-14

00:00:05

IRQ-15

00:00:00

IRQ-7

00:01:14

IRQ-17

00:00:08

IRQ-20

00:00:00

IRQ-4

00:00:00

IRQ-3

Nos interesan las tareas: sirq-timer/0, sirq-hrtimer/0 y la IRQ de nuestra placa
de sonido que tenemos que ubicar cual es (ya voy a explicar como ubicarla).
En un sistema core dual debe haber dos de cada tarea, una por cada CPU. Yo
no pude comprobarlo porque no tengo core dual.
Vamos a tomar nota del PID de cada una: 6 (sirq-timer) y 12 (sirq-hrtimer).
Luego vamos a buscar el pid de la tarea IRQ en la que reside la tarjeta de
sonido. (En el caso de que la tarjeta de sonido sea usb, correr jackcontrol con
esta tarjeta, y en una consola ver con el comando “top” que dirección IRQ
levanta).
Vemos la salida de:
# cat /proc/interrupts

debería revelar esto:

CPU0

200

IO-APIC-edge

14890

IO-APIC-edge

timer

i8042

2

1

7

0

2

0

IO-APIC-edge

IO-APIC-edge

IO-APIC-edge

floppy

IO-APIC-edge

parport0

IO-APIC-edge

rtc0

IO-APIC-fasteoi

acpi

529675

IO-APIC-edge

i8042

88412

IO-APIC-edge

587044

IO-APIC-edge

ide0

ide1

0

IO-APIC-fasteoi

uhci_hcd:usb1

0:

1:

3:

4:

6:

7:

8:

9:

12:

14:

15:

16:

17:

1685387 IO-APIC-fasteoi ICE1712

18:

19:

20:

23:

0

0

IO-APIC-fasteoi

uhci_hcd:usb3

IO-APIC-fasteoi

uhci_hcd:usb2

19611

IO-APIC-fasteoi

eth0

229710

IO-APIC-fasteoi

ehci_hcd:usb4

NMI: 0

Non-maskable
interrupts

LOC: 7295599 Local timer

interrupts

0 Rescheduling

interrupts

function call
interrupts

TLB shootdowns

Thermal event
interrupts

Spurious
interrupts

RES:

CAL: 0

TLB: 0

TRM: 0

SPU: 0

ERR: 0

MIS: 0

Entonces según esta información:
17: 1660453 IO-APIC-fasteoi ICE1712
el IRQ-17 es donde está mi placa de sonido (en mi caso me doy cuenta porque
ICE1712 es el chipset de las m-audio, que es mi placa)
Para obtener el PID, uso de nuevo el comando:
# ps -e
si se fijan al principio del documento (cuando mostré el resultado de #ps -e)
era el PID 1493
Ahora vamos a utilizar el comando chrt para establecer prioridades real time.
En Debian, este comando forma parte del paquete schedutils. No importa el
orden en el que se establecen las prioridades.
Establecemos nuevas prioridades para cada tarea:
En mi caso:
# chrt -f -p 99 6
# chrt -f -p 99 12
# chrt -f -p 99 1493
Esto debe establecer una prioridad de tiempo real a las tareas identificadas
como 6, 12 y 1493. Una prioridad tan alta como 99 podría no ser en realidad

necesaria e incluso un tanto insegura.
Hay que probar con valores (por lo menos de 50 a 99) hasta encontrar los
adecuados.
Luego y usamos el comando:
# top
para ver si cambiaron las prioridades (antes ejecuté jackd para poner en uso
la placa de sonido para que aparezca IRQ-17 entre los procesos) me devuelve:

PID USER PR NI VIRT RES SHR S %

CPU

TIME+ COMMAND

%
MEM

2747 gabriel 20 0

22588 2052 1716 S 11.6 0.1

0:02.91 jackd

2718 gabriel 20 0

37700 13m 9.9m S 11.3 0.9

0:09.77 gnome-

terminal

2741 gabriel 20 0

44080 11m 9.8m S 10.0 0.8

0:02.98 qjackctl

2577 root

20 0

97.8m 11m 4788 S 6.6

0.8

0:07.85 Xorg

root

1
493

R
T

-5 0

0

0

S 3.3 0.0

2713 gabriel 20 0

30472 11m 7524 S 1.7

295

root

-5
1

-5 0

0

0

S 0.7

2711 gabriel 20 0

20560 10m 7168 S 0.7

2739 gabriel 20 0

2428 1136 900 R 0.3

1

2

3

4

root

root

root

root

20 0

2132 748 652 S 0.0

15 -5 0

RT -5 0

RT -5 0

0

0

0

0

0

0

S 0.0

S 0.0

S 0.0

0.7

0.0

0.7

0.1

0.0

0.0

0.0

0.0

0:01.1
9

IRQ-17

0:01.77 pcmanfm

0:00.70 IRQ-12

0:04.87 lxpanel

0:00.41 top

0:01.38 init

0:00.00 kthreadd

0:00.00 migration/0

0:00.00 posixcputm

r/0

5

6

7

8

root

root

root

root

-5 0

-5 0

-5 0

-5 0

-5
1

R
T

-5
1

-5
1

0

0

0

0

en este caso no aparece la línea:

12

root RT -5 0

0

0

0

0

0

0

S 0.0

0.0

0:00.00 sirq-high/0

S 0.0 0.0

0:00.3
3

sirq-
timer/0

S 0.0

0.0

0:00.00 sirq-net-tx/0

S 0.0

0.0

0:00.00 sirq-net-

rx/0

S0.0 0.0 0:00.01 sirq-

hrtimer/
0

pero se debe a que top esta en movimiento todo el tiempo (pero les aseguro
que está).
Como pueden ver en la sección PR se puede ver la prioridad RT a la que están
corriendo las tareas sirq-timer/0, sirq-hrtimer/0 y IRQ-17.
En realidad todo lo que hicimos hasta ahora sirve para probar el
funcionamiento de las prioridades. Estas prioridades serán restablecidas
después de cada reinicio, así que deberá crearse un script de inicio sencillo,
para recuperarlas.
Dado que los pids de sirq-timer/0 y sirq-hrtimer/0 no van a cambiar, pero el
pid de la placa de sonido sí, vamos a usar "pgrep" para que busque la tarea
IRQ-17, a continuación describo como tiene que ser el contenido del s
  • Links de descarga
http://lwp-l.com/pdf10026

Comentarios de: Configurar Gnu/Linux para producción musical (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad