Jconv y su frontend Conviction

monon
#1 por monon el 09/11/2009
Bueno chicos supongo que todos por estos lares sabeis lo que es jconv
así que no voy a explicar lo que es.
Lo que si voy a contaros es que alguien ( yo ) estoá desarrollando en python un frontend
para usarlo comodamente "OutOfBox".
Conviction se llama y en esta, su versión 1.0 , es bastante parco, austero y limitado, pero todo se andará.
Lo podeis descargar desde aqui:
https://sourceforge.net/projects/conviction/
Por ahora cumple su función más basica que es cear dos convoluciones (L y R) en modo "read".
A las cuales podeis cambiar el "gain" y el "delay".

Ya sé que existe guitarix que que añade un (tambien) limitado frontend para jconv. Pero me gustaría desarrollar algo explicitamente dedicado a jconv y que pueda aprovechar todas sus opciones.

Ahora viene la patada... Busco locos!! que sepan programar en C o C++ para poder usar toda la potencia de las bibliotecas de sndfile y de jack y cear algo más que decente para poder gestionar todas las opciones que ofrecen
jconv y jack.

Por ejemplo, aunque ya esta pensado el añadir las opciones de autoconexión a puertos de jack y añadirle un bypass en la proxima versión (la 1.2), no estaría de más poder añadirle gain en tiempo real para lo cual se necesita un cliente jack lo cual no tengo ni pu(ñetera)ta idea de hacer, pues solo se hacer chapuzas en python, y sus librerias standard no son lo mejor para manipular audio ( lo mio me ha costado ya hacer que funcione).

Probadlo y ya me direis... Y a los locos, espero que os enrroleis en esta locura. Gracias.
Subir
OFERTASVer todas
  • -26%
    AKAI MPC Key 61
    1.290 €
    Ver oferta
  • -8%
    Behringer X Air XR18
    645 €
    Ver oferta
  • -21%
    Zoom H4n Pro Black
    158 €
    Ver oferta
catorze
#2 por catorze el 09/11/2009
Olé! mira que esperaba que alguien se hechara al rollo, me encantaria saber programar, lo siento...
Pero yo tambien animo a los locos y locas de la programación que será seguro una herramienta buenisima!
voy enseguida a instalarlo!
Salud y suerte!
14
Subir
catorze
#3 por catorze el 09/11/2009
Hola, seguro que soy yo que no me entero de la pelicula...pero que quiere decir OutOfBox? Solo me imagino que es algo que se ejecuta fuera de qualquier aplicación
Tiene que ver en que solo instaladolo no me funcione?
Esto es lo que me sale:

$ conviction.py
Traceback (most recent call last):
File "/usr/bin/conviction.py", line 645, in
base = Conviction()
File "/usr/bin/conviction.py", line 315, in __init__
self.btnExecute = gtk.ToggleButton("\nRun " + self.JconvLabel + "\n", False)
RuntimeError: more argument specifiers than keyword list entries (remaining format:'):GtkToggleButton.__init__')

Salut!
14
Subir
monon
#4 por monon el 10/11/2009
Realemente no se a que se refiere el mensaje que te dá.
Y ya me lo he encontrado varias veces con otros scripts.
El caso es que Python 2.6 (el cual es seguramente el que tienes instalado)
a cambiado el numero de argumentos que hay que dar para crear un boton.
Solucion:
Otra opcion es abrir el script de las fuentes con un editor y cambiar
la siguiente linea ( la 315)
[code] self.btnExecute = gtk.ToggleButton("\nRun " + self.JconvLabel + "\n", False)[/code]
por
[code] self.btnExecute = gtk.ToggleButton("\nRun " + self.JconvLabel + "\n")[/code]

Eliminado ", False" ( coma espacio "False")

Vuelve a instalar y ejecutalo.
Suerte

La proxima version estará corregida. Lo prometo.
Subir
Pablo_F
#5 por Pablo_F el 10/11/2009
¡Hola monon! ¡Estoy probando tu programa!
Me ha dado el mismo error que a catorze. Se ha arreglado siguiendo tus instrucciones.
Me gusta el front-end, y el icono también, mucho.
Lo pruebo con los IR's de Fons Andriensen, bajados del sitio de jconv.

Ahora las pegas:

Lanzo jack con:

/usr/bin/jackd -R -P70 -dalsa -dhw:1 -r48000 -p256 -n3

Casos:

1

pablo@ministudio:~$ conviction.py
Cambiando de manera temporal el formato de audio

greathall.wav
Maximo 500428288
dB -12.7
Total Frames 112561
Channels 2
SampleRate 48000
Runing jconv_greathall
Unable to open '/home/pablo/conv-reverb//greathall-32.wav'

De hecho, el nombre del archivo es greathall.wav, no greathall-32.wav,
por eso no lo encuentra ¿Y por qué lo intenta convertir si ya está a 48.000 Hz?

sndfile-info:
Version : libsndfile-1.0.20

========================================
File : greathall.wav
Length : 675434
RIFF : 675426
WAVE
fmt : 40
Format : 0xFFFE => WAVE_FORMAT_EXTENSIBLE
Channels : 2
Sample Rate : 48000
Block Align : 6
Bit Width : 24
Bytes/sec : 288000
Valid Bits : 24
Channel Mask : 0x0
Subformat
esf_field1 : 0x1
esf_field2 : 0x721
esf_field3 : 0x11D3
esf_field4 : 0x86 0x44 0xC8 0xC1 0xCA 0x0 0x0 0x0
format : pcm (Ambisonic B)
data : 675366
End

----------------------------------------
Sample Rate : 48000
Frames : 112561
Channels : 2
Format : 0x00130003
Sections : 1
Seekable : TRUE
Duration : 00:00:02.345
Signal Max : 1.9548e+06 (-12.65 dB)


2

pablo@ministudio:~$ conviction.py

chapel.wav
Maximo 6649
dB -13.9
Total Frames 62528
Channels 2
SampleRate 48000
Runing jconv_chapel

¡Perfecto! Lo conecto a través de jack y todo va bien. Tiene dos entradas y dos salidas.

pablo@ministudio:~/conv-reverb$ sndfile-info chapel.wav

Version : libsndfile-1.0.20

========================================
File : chapel.wav
Length : 250156
RIFF : 250148
WAVE
fmt : 16
Format : 0x1 => WAVE_FORMAT_PCM
Channels : 2
Sample Rate : 48000
Block Align : 4
Bit Width : 16
Bytes/sec : 192000
data : 250112
End

----------------------------------------
Sample Rate : 48000
Frames : 62528
Channels : 2
Format : 0x00010002
Sections : 1
Seekable : TRUE
Duration : 00:00:01.302
Signal Max : 6649 (-13.85 dB)
________________________________________

Con otros IR que están a 48.000 Hz me pasa igual que con el greathall del caso 1; los intenta convertir pero jack ya está a 48.000 Hz y luego busca un archivo inexistente.

La diferencia que hay con el chapel.wav es que el chapel.wav original de Fons estaba a 44100 y guitarix me lo convertió a 48.000 z. Entonces hago la prueba de otro que esté a 44100 Hz, y convirtiéndolo con guitarix a 48.000 y, lo mismo, funciona!

3

En cambio si hago, la prueba de cargar uno que esté a 44100 Hz a conviction, ni siquiera me lo trata de convertir y me da esta salida:

pablo@ministudio:~/conv-reverb$ conviction.py
Traceback (most recent call last):
File "/usr/bin/conviction.py", line 412, in f_load_files
self.f_audio_info()
File "/usr/bin/conviction.py", line 450, in f_audio_info
if self.dialogWindow :
AttributeError: Conviction instance has no attribute 'dialogWindow'
Runing jconv_EYCv2R44
^CTraceback (most recent call last):
File "/usr/bin/conviction.py", line 646, in
base.main()
File "/usr/bin/conviction.py", line 629, in main
gtk.main()

Pero lo puedo conectar a través de jack y al menos suena.

Conclusiones: Con jack a 48.000 Hz: Si cargo un IR de 48.000 Hz no funciona. Si cargo un IR de 44100 Hz no lo convierte. Si cargo un IR a 48.000 Hz que previamente estaba a 44100 Hz y fue convertido por guitarix (¿libsamplerate?) sí funciona.

Otras observaciones:

Estaría bien poder elegir el número de entradas. Y si hay dos entradas, poder elegir distintos impulsos para cada entrada. De hecho, estaría bien que fuera tan flexible como el archivo de configuración de jconv, donde puedes elegir varias cosas, incluido el tamaño de la partición (¿del periodo?) que no tiene por qué coincidir con el de jack. Ahora creo que toma el mismo que pones en jack, no?

Detalles:

En los mensajes que ve el usuario final mezclas inglés con castellano. Los mensajes y los readmes están mejor en inglés, y luego se pueden poner readme_es e INSTALL_es, pero el inglés es el lenguaje de programación universal. Entonces luego podrías usar gettext para taducirlo a otros idiomas (aunque serán muy pocos mensajes). gtklick podría ser una referencia. Está programado en python y es traducible.

No está licenciado. Creo que deberías darle algún tipo de licencia, ya que es tu obra. GPL por favor ;)

Ánimo, yo creo que es una gran idea que has tenido. Yo puedo probarlo y ayudarte con las traducciones y comentar detalles, pero con el código poca cosa. Me divierte leer el código, pero no lo entiendo :P . De hecho he tratado de arreglar el bug descrito arriba pero como siempre, no he sido capaz. Programar no es para mí.

Y bueno, gracias por compartir. He estado divirtiéndome un rato y sí, ha funcionado out of the box con algunos IR!
Saludos, Pablo.
Subir
catorze
#6 por catorze el 10/11/2009
Gracias monon! ahora anda perfectamente, para la 1.4 se podrá guardar la configuración? seria posible que la conexión que sale en jack tuviera un nombre generico como jconv? lo digo para meterlo en el patchbay de jack y no tener que conectar manualmente, me apunto a lo de Pablo_F, me mola tambien el icono, mu lograo ;)
Salut y animo!
14
Subir
monon
#7 por monon el 11/11/2009
Gracias "conejillos de indias"...
Me pongo a arreglar esos pequeños bugs
alguno de ellos es debido a limitaciones con alguna libreria estandar y otros por la impaciencia y no haber seguido un modo de prueba y error con todas las opciones.

Pero os prometo arreglarlo en breve.
Subir
monon
#8 por monon el 19/11/2009
Hola Pablo_F
El bug que hay al convertir los archivos aa otro samplerate es por que no le pongo /tmp
como path para encontrar el archivo una vez convertido.
No voy ha arreglarlo porque ya estos en una nuevissssima version. La 1.6 de momento beta
Estoy tardando un poquito porque como vereis estoy intentado hacerlo lo mas configurable posible.
Espero poder subirlo a mediados de la semana que viene (25 o 26 de Noviembre)
No creo que incluya en esta versión las opciones de "Guardar y Cargar" ( ho sento catroze) :( cofiguraciones de jconv, pero ya os prometo nuevas mejoras ( a parte de correcciones de bugs, claro está) ;)

Os haré saber a través de este hilo
Salud y alegría
Subir
Pablo_F
#9 por Pablo_F el 20/11/2009
¡¡Gracias!!
Subir
monon
#10 por monon el 20/11/2009
Esparando que la velocidad y la calidad no sean incompatibles y adelantandome
a lo anunciado ya he corregido los numerosos bugs y añadido todad las caracteristicas
que me ha sido posible para esta version la tan reclamada 1.6 (las 1.2,1.3, etc... se quedaron por el camino)
https://sourceforge.net/projects/conviction/

Algunas cosillas para puntualizar.
1.-
Los nombres de entradas y salidas y el nombre del cliente de jack son editables
haciendo doble click sobre ellos.Tambien lo es el max lenght
2.-
Otra cosa... si lanzais un nuevo cliente de jack y no os aparece para escoger en las
conexiones solo teneis que ocultar y volver a mostar con el boton, cargar un muevo
impulso o crear/borrar copias.

Para la proxima, mas! Supongo que guardar y recuperar configs y poder elegir
los nombres automaticos ( en vez de solo "input.N" y "output.N")
Subir
catorze
#11 por catorze el 20/11/2009
monon escribió:

Para la proxima, mas! Supongo que guardar y recuperar configs y poder elegir
los nombres automaticos ( en vez de solo "input.N" y "output.N")


Eso eso!!
Te queremos! :oops:
Subir
igny
#12 por igny el 23/11/2009
Saludos monon, tengo arranado el programa y no aparece nada en jack. Puede que sea porque tengo via fireware con el focusrite y no via alsa?

Saludos
Subir
monon
#13 por monon el 24/11/2009
Hola Igny.
Supongo que en tu koala habrás instalado tu jack-jconv ¿No?
De hecho se necesita lo siguiente:
jackd
jack-jconv (así se llama en ubuntu, pues ya existe un jconv que no tiene nada que ver)
snfile-programs
y python 2.6 (con pygtk y demas. Lo cual es má que provable que ya esté instalado)
Una vez elegida la IR, una de las reverbs de jconv p.e.
http://www.kokkinizita.net/linuxaudio/downloads/jconv-reverbs.tar.bz2
ajustas parametros y ejecutas con el botón "Run Jconv"
No se si los demás han tenido problemas para hacer correr esta ultiama versión (1.6)

De todos modos es extraño lo que me has comentado en el MP de los permisos
En principio el archivo conviction.py tiene permisos 755 por defecto.
Si los demás teneis problemas con la ejecucion por estar restringida la ejecucion
comunicadmelo y corregiré el make file.
Subir
Pablo_F
#14 por Pablo_F el 24/11/2009
Hola monon, en mi caso también viene sin permiso de ejecución para "others". Y después de hacerlo ejecutable, no me funciona. Mira esto:

pablo@ministudio:~$ conviction.py
bash: /usr/bin/conviction.py: Permiso denegado
pablo@ministudio:~$ ls -l /usr/bin/conviction.py
-rwxr-xr-- 1 root root 52526 2009-11-24 21:57 /usr/bin/conviction.py
pablo@ministudio:~$ sudo chmod o+x /usr/bin/conviction.py
pablo@ministudio:~$ conviction.py
Traceback (most recent call last):
File "/usr/bin/conviction.py", line 1484, in
BASE = conviction()
File "/usr/bin/conviction.py", line 264, in __init__
self.f_create_convs()
File "/usr/bin/conviction.py", line 351, in f_create_convs
self.f_jack_pid()
File "/usr/bin/conviction.py", line 291, in f_jack_pid
self.f_jack_params()
File "/usr/bin/conviction.py", line 323, in f_jack_params
self.f_jack_ports()
File "/usr/bin/conviction.py", line 339, in f_jack_ports
(JackPort,JackIO,JackType) = jt.split(",",2)
ValueError: need more than 1 value to unpack

fyi:
pablo@ministudio:~$ jackd --version
jackdmp 1.9.3

Otra cosa, ¿No sería más correcto que copiara el ejecutable a /usr/local/bin? Entiendo que es una instalación "local"

Saludos, Pablo
Subir
igny
#15 por igny el 24/11/2009
Saludos monon, està instalado en el sobremesa. Allí trabajo con ubuntu studio 8.04.1. El koala anda con un portàtil en espera de ser probado más a fondo y entonces pasarlo al sobremesa. De momento me cuesta abandonar mi 8.04.1.

Te sigo informando

Saludos y gracias por todo
Subir
Nuevo post

Regístrate o para poder postear en este hilo