pe.audio.sys

Previos, filtros activos, DACs, CDs, transportes, vinilo, tratamiento de salas,...
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

pe.audio.sys

Mensaje por rarranzb » Sab Sep 05, 2020 4:29 pm

Buenas,

Hace un par de años estuve intentando hacer funcionar un FIRtro con raspberry y con mucho esfuerzo conseguí casi hacerlo funcionar del todo...
El caso es que sigo interesado en hacer DRC en un sistema 5.1 y he visto que FIRtro se ha hecho adulto y ahora es pe.audio.sys. Llevo unos días tratando de hacerlo andar pero tengo un par de problemas:

Código: Seleccionar todo

(start.py) (i) .state.yml copied to .state.yml.BAK
--------------------- (start.py) killing running before me ---------------------
2807   969 python3 pe.audio.sys/start.py all
--------------------------------------------------------------------------------
(start.py) killing old 'start.py' processes: 969
(start.py) will stop the script 'sound_cards_prepare.py' ...
(start.py) will stop the script 'loudness_monitor.py' ...
(start.py) stopping SERVICE: 'preamp'
(start.py) stopping SERVICE: 'players'
(start.py) STOPPING BRUTEFIR
(start.py) STOPPING JACK LOOPS
(start.py) STOPPING JACKD
(start.py) stopping SERVICE: 'peaudiosys'
(start.py) starting SERVICE: 'peaudiosys'
(start.py) processing drc sets to web/images in background
jackdmp 1.9.12
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2017 Filipe Coelho.
jackdmp 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 server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
audio_reservation_init
Acquire audio card Audio2
creating alsa driver ... hw:CODEC|hw:CODEC|1024|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 16bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 16bit little-endian
ALSA: use 2 periods for playback
(start.py) JACKD STARTED
(jack_loop) running pre_in_loop
(jack_loop) running alsa_loop
(start.py) JACK LOOPS STARTED
(start.py) will start the script 'sound_cards_prepare.py' ...
(start.py) will start the script 'loudness_monitor.py' ...

BruteFIR v1.0m (November 2013)                                (c) Anders Torger

Internal resolution is 32 bit floating point.
Creating 4 FFTW plans of size 32768...finished.
Loading 7 coefficient sets...finished.
JACK I/O: Warning: JACK is not running with SCHED_FIFO or SCHED_RR (realtime).
Realtime priorities are min = 4, usermax = 3, mid = 5 and max = 6.
Warning: no support for clock cycle counter on this platform.
  Timers for benchmarking may be unreliable.
Filters in process 0: 0 2 4 6 
Filters in process 1: 1 3 5 7 
Realtime priority 5 set for callback process (pid 1451)
Realtime priority 3 set for cli process (pid 1459)
Creating inverse inplace FFTW plan of size 16384 using wisdom...(loudness_monitor) spawn PortAudio ports in JACK
finished
Realtime priority 6 set for filter process (pid 1458)
Realtime priority 6 set for filter process (pid 1457)
Audio processing starts now
(core) 3 threads:
  0 MainThread
  1 waits for convolver OFF
  2 waits for convolver ON
Traceback (most recent call last):
  File "pe.audio.sys/start.py", line 446, in <module>
    core.init_audio_settings()
  File "/home/pi/pe.audio.sys/share/services/preamp_mod/core.py", line 716, in init_audio_settings
    preamp.set_level      (   preamp.state["level"]           )
  File "/home/pi/pe.audio.sys/share/services/preamp_mod/core.py", line 1007, in set_level
    return self._validate( candidate )
  File "/home/pi/pe.audio.sys/share/services/preamp_mod/core.py", line 971, in _validate
    eq_mag, eq_pha  = calc_eq( candidate )
  File "/home/pi/pe.audio.sys/share/services/preamp_mod/core.py", line 199, in calc_eq
    + bass_mag + treb_mag
ValueError: operands could not be broadcast together with shapes (67,) (63,)
esto es lo que me dice al tratar de arrancar y ahi se queda. Y la verdad no se que quiere decir... ni si esta bien o mal del todo :oops:

Luego trato de arrancar el servidor web:

Código: Seleccionar todo

node pe.audio.sys/share/www/peasys_node.js
Node.js v10.21.0
Server running at http://localhost:8080/
(node) httpServer TX: application/javascript (/home/pi/pe.audio.sys/share/www/clientside.js)
(node) httpServer TX: text/html (/home/pi/pe.audio.sys/share/www/index.html)


Pero aunque se ve la web, en la barra superior indica que no esta conectado.

Alguna sugerencia?

Muchas gracias!
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Sab Sep 05, 2020 6:56 pm

Hola muy buenas.

Tiene pinta que en tu carpeta pe.audio.sys/share/eq/ hay mezcla de curvas .dat

En el README.md de aquí se detalla:

https://github.com/AudioHumLab/pe.audio ... s/share/eq

Puede parecer un poco lío, pero he preferido ofrecer las dos evoluciones de las curvas de eq general que hay hechas, que difieren en los puntos de frecuencias sobre los que están construidas (could not be broadcast together with shapes (67,) (63,))

Simplificando:

borra todas las *.dat que tengas en pe.audio.sys/share/eq/ y copia ahí solo un juego, por ejemplo:

Código: Seleccionar todo

pe.audio.sys/share/eq $ rm *.dat
pe.audio.sys/share/eq $ cp eq.sample.R20_audiotools/*dat .

Una vez elegido el juego de curvas, debe ser coherente con los puntos de frecuencia definidos en la cabecera del archivo brutefir_config. Para el caso del juego de curvas 'R20_audiotools', la cabecera de brutefir_config debe contener algo así:

Código: Seleccionar todo

...
...
# The eq module provides a filter coeff to render a run-time EQ.
# (i) Bands here must match with the ones at your xxxxfreq.dat file.
"eq" {
    #debug_dump_filter: "/tmp/brutefir-rendered-%d";
    {
    coeff: "c.eq";
    # using audiotools R20 bands
    bands:
    10, 11.2, 12.5, 14, 16, 18, 20, 22.4, 25, 28, 31.5,
    35.5, 40, 45, 50, 56, 63, 71, 80, 90, 100, 112,
    125, 140, 160, 180, 200, 224, 250, 280, 315, 355,
    400, 450, 500, 560, 630, 710, 800, 900, 1000,
    1120, 1250, 1400, 1600, 1800, 2000, 2240, 2500,
    2800, 3150, 3550, 4000, 4500, 5000, 5600, 6300,
    7100, 8000, 9000, 10000, 11200, 12500, 14000, 16000,
    18000, 20000;
    };
};
...
...

tal como la que se proporciona en los archivos de ejemplo de la carpeta pe.audio.sys/loudspeakers

Si consigues arrancar, la página debería conectar.
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

Re: pe.audio.sys

Mensaje por rarranzb » Sab Sep 05, 2020 10:34 pm

Muchas gracias otra vez!!, recuerdo que tuviste mucha paciencia conmigo en el otro intento. Todo bien?

Pues efectivamente, había puesto en eq/ todos los .dat, y ha avanzado hasta aquí:

Código: Seleccionar todo

BruteFIR v1.0m (November 2013)                                (c) Anders Torger

Internal resolution is 32 bit floating point.
Creating 4 FFTW plans of size 32768...finished.
Loading 7 coefficient sets...finished.
JACK I/O: Warning: JACK is not running with SCHED_FIFO or SCHED_RR (realtime).
Realtime priorities are min = 4, usermax = 3, mid = 5 and max = 6.
Warning: no support for clock cycle counter on this platform.
  Timers for benchmarking may be unreliable.
Filters in process 0: 0 2 4 6 
Filters in process 1: 1 3 5 7 
Realtime priority 5 set for callback process (pid 3316)
Realtime priority 3 set for cli process (pid 3323)
Creating inverse inplace FFTW plan of size 16384 using wisdom...(loudness_monitor) spawn PortAudio ports in JACK
finished
Realtime priority 6 set for filter process (pid 3322)
Realtime priority 6 set for filter process (pid 3321)
Audio processing starts now
(core) 3 threads:
  0 MainThread
  1 waits for convolver OFF
  2 waits for convolver ON
(core) 5 threads:
  0 MainThread
  1 waits for convolver OFF
  2 waits for convolver ON
  3 waits for convolver OFF
  4 waits for convolver ON
(core) cannot find jack port "mpd" 
(start.py) processing Brutefir EQ graph to web/images in background
(start.py) starting SERVICE: 'preamp'
(start.py) starting SERVICE: 'players'
Traceback (most recent call last):
  File "/home/pi/pe.audio.sys/share/services/server.py", line 93, in <module>
    MODULE = __import__(service)
  File "/home/pi/pe.audio.sys/share/services/players.py", line 41, in <module>
    from  players_mod.mplayer           import  mplayer_control,            \
  File "/home/pi/pe.audio.sys/share/services/players_mod/mplayer.py", line 70, in <module>
    import cdda
  File "/home/pi/pe.audio.sys/share/services/players_mod/cdda.py", line 35, in <module>
    import discid
ModuleNotFoundError: No module named 'discid'
(core) 3 threads:
  0 MainThread
  1 waits for convolver OFF
  2 waits for convolver ON
(server.py) will run 'preamp' module at localhost:9991 ...


Supongo que no le quedará mucho para arrancar pero estoy perdido.
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Sab Sep 05, 2020 11:01 pm

Muchas denadas ;-) encantado de que estés interesado :-)

Código: Seleccionar todo

ModuleNotFoundError: No module named 'discid'
Parece que el servicio 'players' requiere las librerias/módulos de Python para CD-Audio

https://github.com/AudioHumLab/pe.audio ... r-cd-audio

Le daré un repaso por si no se necesita que no kaske.
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

Re: pe.audio.sys

Mensaje por rarranzb » Sab Sep 05, 2020 11:27 pm

Que gozada que te atienda el que conoce bien el tema!
Ahora se queda aqui:

Código: Seleccionar todo

(core) cannot find jack port "mpd" 
(start.py) processing Brutefir EQ graph to web/images in background
(start.py) starting SERVICE: 'preamp'
(start.py) starting SERVICE: 'players'
(cdda.py) Using default '/dev/cdrom'
(server.py) will run 'players' module at localhost:9992 ...
(lu_meter) restarting measurement
(core) 3 threads:
  0 MainThread
  1 waits for convolver OFF
  2 waits for convolver ON
(server.py) will run 'preamp' module at localhost:9991 ...
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Sab Sep 05, 2020 11:55 pm

Tiene pinta que ya va. Si desde otro terminal le pides cosas debería responder, creo.

(desde otro terminal)
~$ bin/peaudiosys_control status


Hay un detalle que quizás no queda aclarado y es que el proceso 'start.py' se queda vivo y no recuperas la línea de comandos hasta que no acabe.

Para salvar este inconveniente hay dos métodos:

~$ pe.audio.sys/start.py all &

o bien

~$ bin/peaudiosys_restart.sh

El primer método de deja ver en ese terminal lo que va pasando...

El segundo lo deja todo en segundo plano no se ve nada y puedes abandonar el terminal sin que el proceso se acabe
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

Re: pe.audio.sys

Mensaje por rarranzb » Dom Sep 06, 2020 1:40 am

Con: pe.audio.sys/start.py all & no da mas datos, se queda donde antes.
Con: bin/peaudiosys_control status, parece estar funcionando, pero la web no conecta.

Código: Seleccionar todo

bin/peaudiosys_control status
{"balance": 0.0, "bass": 0.0, "convolver_runs": true, "drc_set": "mp_multipV1", "fs": 48000, "input": "mpd", "level": -20.0, "loudness_ref": 6.0, "loudness_track": true, "loudspeaker": "full_range_example", "midside": "off", "muted": false, "peq_set": "none", "polarity": "++", "powersave": false, "solo": "off", "target": "+3.0-1.5_target", "treble": 0.0, "xo_set": "lp"}
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 10:16 am

Pues el sistema de audio parece funcionar :-)

Podrías probar por línea de comando, a ver si la página está siendo servida:

Código: Seleccionar todo

~$ curl localhost:8080
Al meter este comando debería llegar una respuesta chorizo muy largo con el código HTML de la página.


Si no va, puedes comprobar si el archivo javascript de la web está bien configurado para el servidor Node (en teoría lo hace el script de actualización):

Código: Seleccionar todo

~$ less -N pe.audio.sys/share/www/clientside.js
la línea 31 debe ser:

const URL_PREFIX = '/'
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

Re: pe.audio.sys

Mensaje por rarranzb » Dom Sep 06, 2020 2:53 pm

Pues el servidor web me lanza toda la pagina en HTML pero sigue sin conectar...
He confirmado que la configuración de pe.audio.sys/share/www/clientside.js es la correcta.
Lo estoy haciendo todo con el usuario pi no se si sera ese el problema.
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 5:58 pm

puedes probar desde un terminal a ver si responde algo

Código: Seleccionar todo

~ $ curl localhost:8080/?command=get_state
debe responder con el diccionario de estado

Código: Seleccionar todo

~ $ curl localhost:8080/?command=level%200%20add
añade 0 dB al volumen, debe responder 'done'
rarranzb
Mensajes: 16
Registrado: Jue Feb 22, 2018 6:43 pm

Re: pe.audio.sys

Mensaje por rarranzb » Dom Sep 06, 2020 8:02 pm

Pues esto es lo que responde:

Código: Seleccionar todo

pi@raspberrypi:~ $ curl localhost:8080/?command=get_state
{"balance": 0.0, "bass": 0.0, "convolver_runs": true, "drc_set": "mp_multipV1", "fs": 48000, "input": "mpd", "level": -20.0, "loudness_ref": 6.0, "loudness_track": true, "loudspeaker": "full_range_example", "midside": "off", "muted": false, "peq_set": "none", "polarity": "++", "powersave": false, "solo": "off", "target": "+3.0-1.5_target", "treble": 0.0, "xo_set": "lp"}

Código: Seleccionar todo

pi@raspberrypi:~ $ curl localhost:8080/?command=level%200%20add
done
Parece que todo correcto, también he subido el nivel 5db y cuando pregunto por el estado la respuesta corresponde a esa subida.
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 8:19 pm

jo qué raro que no cambie nada... Propongo dos chequeos:

1) Probemos con una orden "bass=1" sin pasar por la web:

$ peaudiosys_control bass 1

debe contestar 'done'

Comprobamos si el ajuste de graves ha tenido efecto:

$ peaudiosys_control get_state

También se debe reflejar en el archivo de estado:

$ cat pe.audio.sys/.state.yml


2) Ahora probamos con una orden "bass=2" como la que llega al clickar un botón de la web:

$ curl localhost:8080/?command=bass%202

y comprobamos como arriba si ha surtido efecto.
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 8:19 pm

Ah ok nos hemos cruzado, pues funciona bien entonces :-)
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 8:22 pm

Ahora queda ver qué pasa con el navegador ese...

Por cierto, he aprovechado para actualizar las carpetas de altavoces de ejemplo que estaban descuidadas.

~ $ sh tmp/download_peaudiosys.sh master

Y luego

~ $ sh tmp/update_peaudiosys.sh master
Avatar de Usuario
Rafax
Mensajes: 1298
Registrado: Mié May 03, 2006 7:29 pm
Ubicación: Madrid

Re: pe.audio.sys

Mensaje por Rafax » Dom Sep 06, 2020 8:27 pm

Recopilando:

Parece que las órdenes al servidor web tienen efecto.

Prueba a limpiar el historial del navegador.

http://IPdelaRaspberry:8080

Si sigue sin conectar, se podría mirar la consola del navegador (herramientas para desarrolladores) a ver si da pistas...

Que el usuario sea pi no es problema, puede funcionar en cualquier /home/xxxxx