Piano VST de calidad para Linux

  • 1
#1 por Jórunn Viöar del Valle el 12/12/2009
Hola a todos.

Me pregunto si conocéis algún piano VST o de alguna tecnología equivalente que pueda emplearse en Linux. Yo lo que desearía sería poder obtener el sonido de un piano de calidad (que suene bien, una cosa tipo Ivory o Galaxy o algo parecido) tocando un teclado conectado al ordenador via MIDI, teniendo en el ordenador alguna distribución de linux.

¿Esto es posible? En caso afirmativo, ¿cómo podría hacerlo?

Gracias.
Subir
#2 por Pablo_F el 12/12/2009
Hola,

Que yo sepa, Pianoteq tiene muy buena fama entre pianistas y tiene una versión nativa para Linux que se ejecuta como un programa stand-alone. No hace falta ningún host de VST. Se conecta a jack como cualquier otra aplicación. La versión demo presenta 5 puertos de salida de audio y un puerto de entrada de ALSA MIDI al que podrás conectar tu teclado.

Se descarga desde su página oficial, pianoteq.com. Simplemente lo descomprimes en cualquier derectorio dentro de tu /home y lanzas el ejecutable con dos clicks. Cualquier distribución de Linux te va a servir. Yo lo he probado en ubuntu que es la que uso pero va a funcionar en cualquiera. Eso sí, te recomiendo que lances primero jack con la opción realtime, y luego pianoteq.

También hay otras posibilidades. Si sabes de alguna buena librería de samples para gigastudio, la haces sonar a través de linuxsampler. O una soundfont que puedes hacer sonar con fluidsynth o timidity.

Más aún. Si sabes de algún piano VST para Windows es muy problable que sea compatible con wine y con los VST-host disponibles en linux, pero antes asegúrate con la demo.

Saludos, Pablo
Subir
#3 por Jórunn Viöar del Valle el 14/12/2009
Muchas gracias por tu respuesta, Pablo.

Estaría interesado en averiguar como puedo ejecutar un VST como Ivory en el sistema operativo Ubuntu. ¿Podría ayudarme alguien?

A fecha de hoy todavía no he conseguido hacer funcionar el jack de tal manera que pueda realizar grabaciones MIDI. ¿Alguien me podría ayudar a hacer funcionar Jack? Los mensajes que me aparecen en JACK Audio connection kit son:

13:37:19.565 Script de inicio...
13:37:19.567 artsshell -q terminate
sh: artsshell: not found
13:37:19.970 El script de inicio finalizó con estado 32512.
13:37:19.971 JACK está iniciándose...
13:37:19.972 /usr/bin/jackd -R -dalsa -r44100 -p1024 -n3 -D -Chw:1 -Phw:1 -i1 -Xraw
13:37:19.993 JACK se inició con PID=3519.
no message buffer overruns
jackd 0.116.1
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with System V SHM support.
cannot use real-time scheduling (FIFO at priority 10) [for thread -1217157440, from thread -1217157440] (1: Operation not permitted)
cannot create engine
13:37:20.027 JACK ha sido detenido satisfactoriamente.
13:37:20.028 Script de post - apagado...
13:37:20.028 killall jackd
jackd: proceso no encontrado
13:37:20.441 El script de post - apagado finalizó con estado 256.
13:37:22.114 No puede conectarse al servidor JACK como cliente. - La operación global falló. - No puede conectarse al servidor. Por favor revise la ventana de mensajes para mas información.
Subir
#4 por Pablo_F el 14/12/2009
Hola,

Vamos por partes. Esta línea:

cannot use real-time scheduling (FIFO at priority 10) [for thread -1217157440, from thread -1217157440] (1: Operation not permitted)

Indica que estás lanzando jack con la opción -R (realtime) pero el usuario no tiene el privilegio de usar "real-time scheduling". Ya se ha respondido varias veces cómo solucionar ese problema. Una vez más:

Comprobaciones:
Haz en terminal:

groups
ulimit -l (esto es una L minúscula)
ulimit -r

El primero te tendría que decir que tú usuario perteneces, entre otros, al grupo audio (grupo al que vas a dar estos privilegios)
El segundo te dice cual es la máxima cantidad de memoria que puedes bloquear como usuario (o algo parecido). Jack quiere tener la posibilidad de bloquear memoria, si no, se va a quejar. Supongo que te saldrá 64, que es insuficiente para jack. jack.org recomienda el valor 'unlimited'.
El tercero te dice cual es la máxima prioridad de realtime que puede tomar jack. Lo máximo y lo que se suele recomendar es que sea 99.
Pero como eso no lo tienes así ahora mismo, tienes que hacer esto:

1. Añadirte al grupo audio con el comando:
sudo adduser tunombredeusuario audio

2. Editar el archivo /etc/security/limits.conf (por ejemplo con:)
gksudo gedit /etc/security/limits.conf

y 3. Añadir al final de este archivo las líneas:
# Prioridad de realtime y memlock, necesario para jack en realtime (esto es un comentario para recordatorio. pon lo que te parezca mejor siempre que vaya detrás de una almohadilla)
@audio - rtprio 99
@audio - memlock unlimited

y 4 (se me olvidaba). Reiniciar.

Ahora abre otra vez la terminal y comprueba con los comandos de arriba (usa flecha arriba para repetir comandos introducidos últimamente) que estás en el grupo audio y sobre todo que 'ulimit -l' da 'unlimited' y 'ulimit -r' da 99.

Ya puedes lanzar jack con la opción realtime, que es lo recomendado. Los parámetros de configuración idóneos son diferentes para cada sistema hardware-software pero en general, vete a los parámetros por defecto.

Para empezar:
Driver MIDI: Ninguno (De momento. No es que te quedes sin MIDI, con esto haces que sea ALSA el manejador de MIDI, en lugar de JACK. Pero JACK manejará siempre el audio).
En la columna de la derecha del setup pon todo default, excepto la interfaz que la eliges con la flechita a la derecha.
Periodos por buffer depende de tu tarjeta de audio, lo normal es 2 pero algunas tarjetas integradas y USB van mejor con 3. El resto de settings que has puesto no están mal, aunque pueden no ser los idóneos para tí. A menos cuadros por periodo baja la latencia pero también la estabilidad.

Ahora unas preguntas:

¿Qué versión tienes de ubuntu?
¿Puedes dar las salidas de los siguientes comandos?
uname -r
lspci | grep -i audio
cat /proc/asound/cards
cat /proc/asound/modules

Es para saber qué kernel estás usando y qué tarjeta de audio tienes, para poder orientarte mejor.

Ahora si quieres como ejercicio, si consigues hacer funcionar jack...
Pianoteq lo tienes probando en dos minutos. Descargas la versión para Linux que te corresponda, lo descomprimes con botón derecho, entras a su carpeta, doble click en el ejecutable de Pianoteq (esperas un poquito...). En el menú file vas a audio/midi setup y en la pestaña 'Devices' eliges Jack como 'Audio device type'. Le das al play de la demo y ya está sonando. Ahora fíjate que aparece al menos un Input MIDI en la pestaña ALSA (que significa ALSA midi. MIDI significa Jack MIDI). A ese input le puedes enchufar tu teclado MIDI.

Con un piano VST será similar sólo que necesitas un vst host. Mira el hilo de blackstallion, él estaba teniendo problemas y al final lo ha conseguido de una forma bastante sencilla.

Saludos, Pablo
Subir
#5 por Jórunn Viöar del Valle el 14/12/2009
Hola Pablo:

Muchas gracias por tu ayuda. He hecho todo lo que dices que hay que hacer y he conseguido incluir mi usuario en el grupo audio. También he conseguido que ulimit -l devuelva unlimited y que ulimit -r devuelva 99.

No obstante sigo sin poder hacer funcionar a jack.

Mi sistema operativo es Ubuntu 9.10 y uso una tarjeta de sonido Steinberg MI4.

uname -r me devuelve 2.6.31-16-generic

lspci | grep -i audio no me devuelve nada

cat /proc/asound/cards devuelve
1 [MI4 ]: USB-Audio - MI4
Steinberg MI4 at usb-0000:00:1d.1-2, full speed

cat /proc/asound/modules devuelve
1 snd_usb_audio

Ahora, cuando intento iniciar jack con los parámetros que té me has dado, me aparece el siguiente mensaje:

22:38:22.317 Script de inicio...
22:38:22.318 artsshell -q terminate
sh: artsshell: not found
22:38:22.721 El script de inicio finalizó con estado 32512.
22:38:22.722 JACK está iniciándose...
22:38:22.722 /usr/bin/jackd -R -dalsa -dhw:1 -r44100 -p1024 -n2
22:38:22.725 JACK se inició con PID=2332.
no message buffer overruns
jackd 0.116.1
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with System V SHM support.
loading driver ..
apparent rate = 44100
creating alsa driver ... hw:1|hw:1|1024|2|44100|0|0|nomon|swmeter|-|32bit
control device hw:1
configuring for 44100Hz, period = 1024 frames (23.2 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 24bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 24bit little-endian
ALSA: use 2 periods for playback
ALSA: could not start playback (Broken pipe)
DRIVER NT: could not start driver
cannot start driver
22:38:23.395 JACK ha sido detenido satisfactoriamente.
22:38:23.397 Script de post - apagado...
22:38:23.398 killall jackd
jackd: proceso no encontrado
22:38:23.811 El script de post - apagado finalizó con estado 256.
22:38:24.893 No puede conectarse al servidor JACK como cliente. - La operación global falló. - No puede conectarse al servidor. Por favor revise la ventana de mensajes para mas información.

Dice que no puede iniciar el driver... ¿cual puede ser el motivo? ¿como puedo solucionarlo? Gracias.
Subir
#6 por Pablo_F el 15/12/2009
Uy, esa tarjeta no parece soportada. sin embargo, en el otro hilo comentas que te suena sin jack.

A ver si con un poco de suerte damos con ello. Yo probaría, en este orden, diferentes combinaciones de:

Interfaz: hw:1,0 / hw:1 (ó hw:0 / hw:0,0. La que indique la flecha como USB)
48.000 / 44100 Hz
3 / 2 periodos por buffer
Audio: Sólo captura / Sólo reproducción / Duplex

Pero estoy intentando adivinar. La verdad que no te puedo decir nada seguro. A ver si hay suerte.

Saludos, Pablo
Subir
#7 por Jórunn Viöar del Valle el 15/12/2009
Muchas gracias por tu ayuda, Pablo.

Ya he conseguido hacer funcionar Jack. Lo he conseguido hacer funcionar con Interfaz marcando la opción de "h:0,1 USB", audio en "solo reproducción". La frecuencia de muestreo funciona bien tanto a 44100 como a 48000 Hz y los periodos/buffer funcionan bien tanto a 2 como a 3. ¿Qué son los periodos/buffer? ¿Como me recomiendas configurarlo?

Ahora que ya me funciona Jack, me gustaría saber como puedo hacer para conectar mi teclado midi a la tarjeta USB y reproducir sonidos con algún tipo de sintetizador de software o algo así. El paso siguiente sería hacer funcionar un plugin VST como Ivory en Linux (le daré un vistazo con detenimiento al hilo de blackstallion6). En Conexiones, en la pestaña de ALSA me aparece en puertos de salida y en puertos de entrada lo mismo, es decir, 14: Midi Through. La verdad no sé muy bien qué significa eso de los puertos de salida y de entrada y todo eso... te agradecería si pudieras explicarlo o darme algún link hacia alguna fuente que lo explique.

He notado que después de hacer alguna conexión al azar (sin saber ni siquiera lo que hago) al darle al botón "desconectar todo" Jack se me queda completamente colgado y ni siquiera puedo forzar el cierre con el monitor del sistema de ubuntu.

Muchas gracias por tu ayuda, Pablo. Desde luego, si consigo hacer funcionar esto, me voy a poner una bandera con un pinguino encima del escritorio de mi habitación.

Saludos.
Subir
#8 por Pablo_F el 15/12/2009
Parece que se confirma que esa tarjeta no está bien soportada. A ver hasta dónde puede llegar. Sólo reproducción significa eso... que no tienes puertos de captura de audio. Si va bien con 2 periodos por buffer, déjalo en 2.

Si te interesa una latencia menor tienes que bajar el valor de cuadros por periodo, manteniendo el resto de parámetros y quedarte con el valor más bajo con el cual no te aparezcan xruns (números rojos). Se puede admitir un xrun al lanzar una aplicación cliente de jack o si son muy esporádicos.

Parece claro que ALSA no soporta los puertos MIDI de esa tarjeta. Hay varias cosas que puedes hacer, depende de lo que necesites. ¿Qué teclado MIDI tienes? ¿Tiene sólo conectores de 5 pines? Es que hay teclados MIDI con salida a USB. SI fuera así y es class compliant (plug and play), al conectarlo te aparecerá en la pestaña ALSA (ALSA midi) como "puerto de salida / cliente leíble". Eso lo puedes conectar a un puerto de entrada, que bien puede ser un sintetizador software como qsynth, Linuxsampler, la entrada MIDI de un instrumento VST, la entrada MIDI de pianoteq... Si tu teclado MIDI no tiene salida a USB puedes adquirir un adaptador MIDI a USB que sea class compliant. Hay unos cuantos, por ejemplo, m-audio MIDISPORT1X1, Yamaha UX16, E-MU Xmidi 1x1... van a funcionar plug and play.

Como sintetizador software para empezar, tienes qsynth (estará en synaptic). Le tienes que cargar una soundfont (archivo .sf2). Su puerto de entrada MIDI aparecerá en la pestaña ALSA y sus puertos de salida de audio, en la pestaña audio, que verás conectados (y si no, conéctalos) a los "system:playback", que representan las salidas analógicas de tu tarjeta.

Por ejemplo, aquí tengo un teclado m-audio keyrig49 conectado a fluidsynth (qsynth es una GUI para fluidsynth). Además se ven dos tarjetas de audio con puertos MIDI en las dos columnas y timidity (otro sintetizador para Linux que la verdad que no me interesa y voy a desinstalar). Con esto, toco el teclado y suena con el instrumento que elija en qsynth en el canal que sea.

http://imagebin.org/75581

Si Jack Control se te queda colgado mátalo desde terminal (o desde ALT+F2) con 'killall qjackctl". Yo también suelo usar 'htop' F3 (buscar) qjackctl, F9 (matar) + Enter. 'htop' sirve para más cosas, claro. Si esto te ocurre más veces, habría que investigar las causas, porque no es normal.

Usa google, te he dado unas cuantas palabras clave. Lo más fácil para empezar es qsynth con una soundfont decente. Si tienes algún problema , coméntalo, y vete preparando la banderita. Eso sí, la próxima vez que compres una tajeta de audio, consulta en este foro y en internet (alsa, ffado...) que hay muchas que no valen o que no funcionan del todo bien.

Saludos, Pablo
Subir
#9 por Jórunn Viöar del Valle el 15/12/2009
Hola Pablo:

Ya he conseguido controlar Qsynth con mi teclado CP33 conectado al ordenador con un USB-USB. También he conseguido reproducir y grabar eventos MIDI con Rosegarden. MUCHAS GRACIAS!!!!. Ahora mismo tengo una latencia de 43ms aproximadamente. ¿Qué puedo hacer para reducir la latencia? ¿Qué ventajas tendría emplear la tarjeta de audio de mi placa base (es audio de realtek)? ¿tendría más o menos latencia que con la Steinberg MI4? A la hora de emplear plugins VST como Ivory ¿con cúal iría mejor? ¿con la integrada en la placa base o con la Steinberg MI4?

Muchas gracias por tu ayuda.

Saludos.
Subir
#10 por Pablo_F el 16/12/2009
Hola,

Muy bien, me alegro que ya funcione. Para bajar la latencia tienes que disminuir el valor de cuadros por periodo en el setup de jack. Ya te dije antes que, en principio, a menor tamaño del periodo, mayor probabilidad de que aparezcan xruns.

Se pueden hacer más ajustes para optimizar el sistema y que sea más estable a latencias bajas, como por ejemplo, probar con el kernel linux-rt (lo encontrarás en synaptic y si lo instalas te aparecerá como opción de arranque en GRUB). También ayudará que conectes la tarjeta a un puerto usb que no comparta nº de IRQ con otros dispositivos.

Puedes comprobarlo con

$cat /proc/interrupts

y con

$lsusb

Esto no es una ciencia exacta y depende de cada ordenador, pero habrá algunos puertos más favorables que otros para conectar tu tarjeta USB.

De la recomendación que me pides, no te puedo decir gran cosa. De la integrada no puedes esperar maravillas y de la Steinberg supongo que tampoco, pero como siempre, todo depende de tu exigencia. Además, creo que hay muy poca gente en el mundo que use esa tarjeta con el driver snd_usb_audio de ALSA. Así que tú eres ahora el que tiene que descubrirlo y si es posible, informar a ver qué tal te va.

Saludos, Pablo.
Subir
#11 por chemisferio el 17/12/2009
Hola, no sé si te servirá pero para Linuxsampler hay un SoundFont gratuito de piano muy bueno, el Maestro Concert Grand v2: http://www.linuxsampler.org/instruments.html.
Es el que uso yo y suena muy bien, con cada nota muestreada a 5 fuerzas de pulsación distintas; el único problema es, bueno, que sólo tiene un sonido de piano, pero si te mola (es un Yamaha de cola, yo prefiero los pianos alemanes de pared de toda la vida, pero a este precio y libremente accesible tampoco vas a encontrar algo personalizado), pues realmente está muy bien sampleado y se puede usar en una producción seria.
Saludos.
Subir
#12 por Jórunn Viöar del Valle el 18/12/2009
Gracias chemisferio y pablo:

La soundfont que me has dicho tiene buena pinta y luego he encontrado además otra que también tiene buena pinta (a falta de realizar las pruebas pertinentes). Está aquí: http://sonart.cc/shop/product_info.php?products_id=210

He estado intentando instalar LinuxSampler pero la verdad es que ando algo perdido. He ejecutado qsampler y me daba un error como que no se había podido crear el canal 0 o algo así.

La verdad es que voy algo perdido. ¿Alguien me puede explicar como reproducir archivos .gig usando mi teclado? La parte de jack ya la tengo clara, ahora la duda la tengo con LinuxSampler, ¿conocéis alguna fuente que lo explique bien?

Gracias a todos. Saludos.
Subir
#13 por Pablo_F el 19/12/2009
Alguien escribió:
¿conocéis alguna fuente que lo explique


www.semicorchux.blogspot.com

Saludos, Pablo
Subir
#14 por amando el 24/12/2009
Muy interesante este hilo, ya que yo también soy aficionado al los sonidos de piano, a mí lo que me complico un poco, fue el servidor pulse-audio pero con alsa me funciona bien, tanto el audio, como el midi, en el laptop y el sobremesa, estoy bastante contento con Ubuntu
Subir
#15 por monon el 18/01/2010
DEjo aqui un enlace mas a un sitio con soundfonts.
http://soundfonts.homemusician.net/
En concreto JVC1080 nice piano parece que suena bien.
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo