AudioHumLab / FIRtro

An active loudspeaker xover and eq DIY system, it includes drc and a preamp with a calibrated & loudness iso 226:2003 volume control
GNU General Public License v3.0
6 stars 0 forks source link

volumen al cambiar de entrada #34

Open Rsantct opened 7 years ago

Rsantct commented 7 years ago

@amiguelez Otra cosa por si interesa implementar. Un volumen máximo también para el cambio de fuentes. Por ejemplo estoy escuchando una pelicula (volumen del firtro próximo a 0dB), y se me ocurre poner algo de musica cambiando a mpd, y no me acuerdo de bajar el volumen...el resto ya os lo imagináis.

Rsantct commented 7 years ago

Aunque ya disponemos de un offset de gain en cada fuente declarada en audio/inputs, este nuevo mecanismo puede ayudar a evitar sustos debidos a que el programa musical de la nueva fuente tenga un nivel sonoro muy alto, como pasa por ejemplo con la música muy comprimida en según que emisoras de radio.

Me parece muy interesante, si queremos disponer de una protección opcional en este sentido. Se podría incluir una opción al efecto en audio/config, por ejemplo max_level_on_change_input = True/False

amiguelez commented 7 years ago

Yo creo que podría ser interesante, y es fácil de implementar. Solo que en vez de True o False, podría ser el valor en dB máximo permitido Otra cosa que habia pensado a mayores, para automatizar el tema de cine, es poder asignar un nivel fijo (opcional) por fuente, en el fichero inputs. De esta forma, al hacer el cambio, primero se comprueba el nivel de acuerdo a la variable max_level_on_change_input. Después una vez cambiada la fuente, se aplicaría el offset si esta especificado. Y si hay algún valor fijo en dB para la fuente, este tomaría prioridad.

De esta forma, imaginad que en la entrada para cine especifico un valor fijo a esa entrada de 0dB. Estoy escuchando musica por la entrada mpd a -20dB (por poner algo). Cambio a la entrada de cine para ver una película, y automáticamente se pone a 0dB. Una vez acabada, paso a mpd para escuchar musica y el volumen bajaría al valor definido max_level_on_change_input

Mas o menos esto es lo que hago ahora con un módulo que hice para controlar a través del RS232 el previo Rotel que controla el volumen de las 6 vias. Pero quizás en cuanto monte el FIRtro2 me lo cargue y haga todo directamente desde el FIRtro, por eso estaba pensando en implantar algo similar, ya que resulta muy util. Bueno, ahí lo dejo....

El 18 de septiembre de 2017, 10:03, Rsantct notifications@github.com escribió:

Aunque ya disponemos de un offset de gain en cada fuente declarada en audio/inputs, este nuevo mecanismo puede ayudar a evitar sustos debidos a que el programa musical de la nueva fuente tenga un nivel sonoro muy alto, como pasa por ejemplo con la música muy comprimida en según que emisoras de radio.

Me parece muy interesante, si queremos disponer de una protección opcional en este sentido. Se podría incluir una opción al efecto en audio/config, por ejemplo max_level_on_change_input = True/False

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330152240, or mute the thread https://github.com/notifications/unsubscribe-auth/AIgVFbqLtd5XUrtre0e2s64jPEFVZir2ks5sjiPogaJpZM4PaiuC .

rripio commented 7 years ago

Me parece bien lo que comentas, Alberto, pero creo que _max_level_on_changeinput debería ser boolean y especificar el valor aajustar por entrada en inputs. Por otro lado, me parece que los offsets se deberían aplicar siempre. Y me queda una duda, ¿el valor máximo sería level o gain? Si es gain se ponen por encima de todos los ajustes de nivel... no sé. Si es level variará efectivamente al calibrar el sistema... Pienso en voz alta, pero creo que lo coherente es manejar siempre level, como medida "humana" del volumen. Gain es un problema de la máquina, y allá se las componga.

rripio commented 7 years ago

He editado el comentario anterior.

rripio commented 7 years ago

Creo que mi propuesta es exactamente la tuya, al releer. Me había parecido que proponías un max_level_on_change_input numérica, como máximo para todas las entradas, pero veo que no.

Rsantct commented 7 years ago

Pienso en voz alta, pero creo que lo coherente es manejar siempre level, como medida "humana" del volumen. Gain es un problema de la máquina, y allá se las componga.

+1 ;-)

Rsantct commented 7 years ago

A ver si lo entiendo. Sería poner un volumen por defecto opcional configurable en cada input. Se podría denominar def_max_level y se interpretará como 'máximo volumen humano' al cambiar a esa entrada.

Si está definido se hace caso, si no lo está se deja el volumen actual. Así sobra la opción genérica booleana max_level_on_change_input.

Por ejemplo:

[analog]
in_ports:       system:capture_1 system:capture_2
fs:             44100
clock:          card
gain:           0.0
def_max_level:  
xo:             lp
lirc_event: 
resampled:      no

[analog_pelis]
in_ports:       system:capture_1 system:capture_2
fs:             44100
clock:          card
gain:           +20.0
def_max_level:  -10.0
xo:             mp
lirc_event: 
resampled:      no

[mpd]
in_ports:       mpd_jack:out_0 mpd_jack:out_1
fs:         
clock:          card
gain:           0.0
def_max_level:  -15.0
xo:             lp
lirc_event:     "0000000000001799 0 Music Hauppauge_350"
resampled:      no
Rsantct commented 7 years ago

No obstante, habría que separar dos conceptos:

Por tanto, si lo que aquí buscamos es una protección al cambiar desde una fuente 'de señal debil' como por ejemplo son las pelis, a otra de señal regular como MPD o CD, creo que bastaría con disponer de una opción genérica max_level_on_change_input=XX dB. Pero el papel principal lo desempeña el ajuste gain en cada entrada.

Es decir si estoy escuchando pelis en plan sala de cine y no quiero oir las palomitas (volumen en sala alto por ejemplo 0 dB 'SPLref') y entonces cambio a MPD, los ajustes gain de cada input ya se ocupan de que MPD suene al mismo volumen (alto) que tenía. Ahora si que podría entrar en funcionamiento un limitador genérico opcional max_level_on_change_input=XX, que básicamene limitaría que al cambiar de entrada se continúe teniendo un volumen excesivo.

¿Qué os parece?

amiguelez commented 7 years ago

mmm, no, no es exactamente asi. No seria un def_max_level sino un def_level. ME explico. Si se tiene un 5.1, el volumen en el FIRtro de los frontales hay que establecerlo a un volumen fijo de referencia, para que quede equilibrado con el resto de canales. A partir de aqui, el volumen se cambia en el ampli AV, no en el FIRtro.

Por ejemplo, mi sistema está calibrado con el FIRtro a -6dB (por tener algo de headroom para tonos y loudness). Con este volumen la señal suena al mismo nivel en todos los altavoces. Entonces cundo quiero poner una peli, yo pongo la entrada de cine. El FIRtro se pone automaticamente a -6dB y desconecta todas las otras entradas. Y a partir de aqui regulo el volumen en el AV. Asi va todo en automatico.

Peeero, si ahora cambio de fuente, tengo una protección similar al max_level_on_change_input especificado en dB. Como -6dB esta muy por encima, primero me ajusta la ganancia, y luego me cambia la entrada a ese valor. A partir de aquí ajusto como quiero el volumen, ya en el FIRtro. Si no tuviese esto, y cambiase sin ajustar el nivel antes, me cargo algo fijo.

De esta forma es seguro cambiar de entradas entre cine y el resto. Todo ese tinglado lo tengo montado con comandos al ROTEL, pero creo que seria interesante implantarlo oficialmente en el funcionamiento, mi idea es eliminar el Rotel. Pero bueno, también puedo personalizarlos yo para mi si no se ve interesante.

El 18 de septiembre de 2017, 20:48, Rsantct notifications@github.com escribió:

No obstante, habría que separar dos conceptos:

-

'gain' es el offset de ganancia en cada input, es como un trimmer físico en cada entrada. Esto sirve para compensar una entrada con un material sonoro con un nivel de referencia distinto del que está calibrado en FIRtro (CD Audio vs Films).

'level' es el volumen referido a un cierto 'SPLref', el nivel de referencia de escucha en sala.

Por tanto, si lo que aquí buscamos es una protección al cambiar desde una fuente 'de señal debil' como por ejemplo son las pelis, a otra de señal regular como MPD o CD, creo que bastaría con disponer de una opción genérica max_level_on_change_input=XX dB. Pero el papel principal lo desempeña el ajuste gain en cada entrada.

Es decir si estoy escuchando pelis en plan sala de cine y no quiero oir las palomitas (volumen en sala alto por ejemplo 0 dB 'SPLref') y entonces cambio a MPD, los ajustes gain de cada input ya se ocupan de que MPD suene al mismo volumen (alto) que tenía. Ahora si que podría entrar en funcionamiento un limitador genérico opcional max_level_on_change_input=XX, que básicamene limitaría que al cambiar de entrada se continúe teniendo un volumen excesivo.

¿Qué os parece?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330318949, or mute the thread https://github.com/notifications/unsubscribe-auth/AIgVFSSafcq3gItaCOymlA54YgxMvhKzks5sjrrtgaJpZM4PaiuC .

rripio commented 7 years ago

@amiguelez , me gusta el planteamiento de nivel fijo de cambio. @Rsantct , me gusta mucho que sea un único valor. Tienes razón, el ajuste por entrada ya lo hace el offset de cada una. Solo disiento en que sí que dejaría un boolean para desconectar o no todo ese tinglado. A veces comparo fuentes con niveles calibrados, y me gusta poder cambiar rápido sin cambios de volumen. En todo caso el boolean haría que aunque estuviera definido el valor único de _def_level_onchange pasara de él o no.

rripio commented 7 years ago

Especialmente comparo monitor de cassette con la fuente a grabar. Si hay un límite de seguridad se me chafa el invento.

Rsantct commented 7 years ago

Especialmente comparo monitor de cassette con la fuente a grabar. Si hay un límite de seguridad se me chafa el invento.

Creo que no habría problemo, el posible límite sería en el pote de volumen no en la fuente.

Rsantct commented 7 years ago

Creo que la combinación de las dos opciones daría un buen resultado. Por ejemplo:

¿Qué os parece?

amiguelez commented 7 years ago

Exacto, esa sería la idea. Y totalmente opcional, como comentas. Si se dejan en blanco no se tiene en cuenta y todo funciona como hasta ahora.

Enviado desde algún lugar

El 19 sept 2017, a las 10:28, Rsantct notifications@github.com escribió:

Se me ocurre que el boolean, por simplificar opciones, puede ser presindible, quedando implícito: la lógica interna entiende False si la opción genérica se deja en blanco. Esto sería para el limitador único común def_level_on_change_input de audio/config

Otra cosa es lo que pide Alberto que creo que ya lo entiendo (I hope so), se trata de un nivel preferido para cierta entrada al seleccionarla: def_level opcional en cada entrada de audio/inputs. Creo que la combinación de las dos opciones daría un buen resultado. Por ejemplo:

Se puede indicar un def_level solo en la entrada de pelis para nivelarlo con los otros altavoces (o para lo que nos apetezca), el resto de entradas no nos molestamos en rellenar esta opción (la dejamos en blanco).

Luego tenemos la genérica que nos servirá para limitar volúmenes de escucha excesivos al cambiar de entrada.

¿Qué os parece?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

Rsantct commented 7 years ago

ok, a ver que opina Roberto

Se me ocurre que la input con ese "volumen requerido pareado con otros altavoces ajenos a FIRtro" podría llamarse [5.1_paired] o algo así, jeje

rripio commented 7 years ago

El 19 de septiembre de 2017, 10:28, Rsantct notifications@github.com escribió:

Especialmente comparo monitor de cassette con la fuente a grabar. Si hay un límite de seguridad se me chafa el invento.

Creo que no habría problemo, el posible límite sería en el pote de volumen no en la fuente.

No lo entiendo, ¿me cambia el volumen, ¿no?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330467530, or mute the thread https://github.com/notifications/unsubscribe-auth/AGkTEe42zIb9QWAX724hwkII78CFOfaZks5sj3sQgaJpZM4PaiuC .

-- Roberto Ripio

rripio commented 7 years ago

El 19 de septiembre de 2017, 10:28, Rsantct notifications@github.com escribió:

Se me ocurre que el boolean, por simplificar opciones, puede ser presindible, quedando implícito: la lógica interna entiende False si la opción genérica se deja en blanco. Esto sería para el limitador único común def_level_on_change_input de audio/config

No, si eso ya lo entiendo. Lo que pido es el boolean para cambiar a voluntad el funcionamiento. Con reset para uso normal, sin reset cuando monitorizo grabaciones.

Creo que la combinación de las dos opciones daría un buen resultado. Por ejemplo:

-

Se puede indicar un def_level solo en la entrada de pelis para nivelarlo con los otros altavoces (o para lo que nos apetezca), el resto de entradas no nos molestamos en rellenar esta opción (la dejamos en blanco).

Luego tenemos la genérica que nos servirá para limitar volúmenes de escucha excesivos al cambiar de entrada.

¿Qué os parece?

Lo que no entiendo es que haya un genérico y uno especifico por entradas. O lo uno o lo otro, ¿no? Si es específico por entradas es cierto que el boolean está de más. Pero que quede claro: no me gusta lo del limitador, creo que me daría todo tipo de disgustos por poco predecible. Si se hace un reset de volumen, pues se hace a un nivel fijo, ¿no?

No sé, por favor, una sinopsis de lo que se plantea, porque ya no sé si estamos hablando de lo mismo.

You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330467605, or mute the thread https://github.com/notifications/unsubscribe-auth/AGkTEbaXZaw6Nwqat_5k4rIa3JDrvzE1ks5sj3shgaJpZM4PaiuC .

-- Roberto Ripio

amiguelez commented 7 years ago

Son cosas distintas. Pongamos un ejemplo:

Yo para las entradas mpd y cd no quiero un volumen fijo por fuente. Cuando cambie quiero mantener el volumen actual. Entonces no quiero especificar un volumen fijo por entrada.

Sin embargo, quiero una entrada analogica especifica a unos dB determinados. Porque es un sistema multicanal y el filtro debe estar calibrado con el resto de canales. Y además debe ser fijo, ya que es el ampli de AV el que cambia el volumen de todos, incluido los que procesa el FIRtro a través de la señal RCA de los frontales que éste procesa.

Hasta aqui no necesitamos el generico, con la variable por fuente arreglamos. Pero imagínate la siguiente situación. Estoy escuchando una peli en multicanal, con la entrada analógica próxima a los 0dB (lo cual no quiere decir que la este escuchando alta, ya que recordemos que aqui el volumen lo marca el ampli de AV). Ahora cambio a mpd, y me olvido de bajar el volumen. La he cagado :-)

Por eso, si tenemos una variable genérica donde podamos especificar un valor "seguro" entre cambios de fuentes lo tenemos arreglado. Si estamos por debajo, el volumen se mantiene entre fuentes. Si esta por encima (caso anterior) primero se baja a un nivel seguro, y luego se cambia. Cada uno que establezca cual es su valor seguro en dB. Y si no se pone nada, pues este check se omite.

El 19 de septiembre de 2017, 19:31, Roberto Ripio notifications@github.com escribió:

El 19 de septiembre de 2017, 10:28, Rsantct notifications@github.com escribió:

Se me ocurre que el boolean, por simplificar opciones, puede ser presindible, quedando implícito: la lógica interna entiende False si la opción genérica se deja en blanco. Esto sería para el limitador único común def_level_on_change_input de audio/config

No, si eso ya lo entiendo. Lo que pido es el boolean para cambiar a voluntad el funcionamiento. Con reset para uso normal, sin reset cuando monitorizo grabaciones.

Creo que la combinación de las dos opciones daría un buen resultado. Por ejemplo:

-

Se puede indicar un def_level solo en la entrada de pelis para nivelarlo con los otros altavoces (o para lo que nos apetezca), el resto de entradas no nos molestamos en rellenar esta opción (la dejamos en blanco).

Luego tenemos la genérica que nos servirá para limitar volúmenes de escucha excesivos al cambiar de entrada.

¿Qué os parece?

Lo que no entiendo es que haya un genérico y uno especifico por entradas. O lo uno o lo otro, ¿no? Si es específico por entradas es cierto que el boolean está de más. Pero que quede claro: no me gusta lo del limitador, creo que me daría todo tipo de disgustos por poco predecible. Si se hace un reset de volumen, pues se hace a un nivel fijo, ¿no?

No sé, por favor, una sinopsis de lo que se plantea, porque ya no sé si estamos hablando de lo mismo.

You are receiving this because you commented. Reply to this email directly, view it on GitHub <https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330467605 , or mute the thread https://github.com/notifications/unsubscribe-auth/AGkTEbaXZaw6Nwqat_ 5k4rIa3JDrvzE1ks5sj3shgaJpZM4PaiuC .

-- Roberto Ripio

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330613504, or mute the thread https://github.com/notifications/unsubscribe-auth/AIgVFRZS_1cx9a765qCASdh5aCltqmytks5sj_pTgaJpZM4PaiuC .

Rsantct commented 7 years ago

Especialmente comparo monitor de cassette con la fuente a grabar. Si hay un límite de seguridad se me chafa el invento.

Creo que no habría problemo, el posible límite sería en el pote de volumen no en la fuente.

No lo entiendo, ¿me cambia el volumen, ¿no?

Oops, pues si, sorry.

Rsantct commented 7 years ago

Intentado resumir, serían dos cosas:

  1. Poder definir un volumen por defecto en cada una de las entradas (audio/inputs), caso muy especial el de Alberto pero es interesante disponer de ello.

  2. Un limitador genérico XX dB y opcional (en audio/config) que actuaría preventivamente al cambiar de entrada.

Para el punto 2 creo que Roberto pides también un boolean para inhibir ese tope de XX dBs. Lo que propongo es que si XX se deja en blanco, ya queda desactivado, es por tener una opción menos que rellenar. Pero ahora que insistes, puede que tener el boolean por separado sea más intuitivo para configurar este comportamiento.

¿Sería asi?

rripio commented 7 years ago

Creo que ya lo he entendido :-)

Bueno, tiene sentido. El limitador no me gustaba por poco predecible, pero lo puedo quitar, OK. Y es mejor que un volumen fijo de cambio porque eso podría dar sustos de noche p.ej. al cambiar de fuente (si se está oyendo bajito).

Me he convencido 0:-)

En cuanto al boolean. Cambiar de comportamiento con un simple switch es más fácil. Debería estar en un comando del server (ejem...) para evitar reiniciar. No es imprescindible esto, pero es elegante. Si es un follón se pasa de ello y ya está.

El 19 de septiembre de 2017, 21:27, Rsantct notifications@github.com escribió:

Intentado resumir, serían dos cosas:

1.

Poder definir un volumen por defecto en cada una de las entradas (audio/inputs), caso muy especial el de Alberto pero es interesante disponer de ello. 2.

Un limitador genérico XX dB y opcional (en audio/config) que actuaría preventivamente al cambiar de entrada.

Para el punto 2 creo que Roberto pides también un boolean para inhibir ese tope de XX dBs. Lo que propongo es que si XX se deja en blanco, ya queda desactivado, es por tener una opción menos que rellenar. Pero ahora que insistes, puede que tener el boolean por separado sea más intuitivo para configurar este comportamiento.

¿Sería asi?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/AudioHumLab/FIRtro/issues/34#issuecomment-330647936, or mute the thread https://github.com/notifications/unsubscribe-auth/AGkTETltb5RFfamB7ntsLOZJQZvk2nL4ks5skBWlgaJpZM4PaiuC .

-- Roberto Ripio

Rsantct commented 7 years ago

En cuanto al boolean. Cambiar de comportamiento con un simple switch es más fácil. Debería estar en un comando del server (ejem...) para evitar reiniciar. No es imprescindible esto, pero es elegante

genial idea