27 abril 2009

allison goldfrapp

archivado en: Música

allisongoldfrappNo se crean Vds. que se me han acabado las chicas-guapas-y-raras-que-hacen-música-de-estética-retrofuturista-que-además-están-jamonas-y-con-las-que-yo-me-casaría. Que sería de esta lista sin Allison Goldfrapp.

Ella es la cantante del dúo llamado, sorprendentemente, Goldfrapp, que ha alcanzado el éxito y el reconocimiento que merece.

Y aunque la chica canta realmente bien, la verdad es que la parte del dúo que más interesante encuentro es Will Gregory, compositor y saxofonista que colaboró con un montón de músicos y grupos como Portishead (que por momentos tiene un sonido bastante similar) antes de formar Goldfrapp en 1999. Y no sólo le encuentro más interesante a él (musicalmente) sino que además, ella cada vez va más en plan soy-supersexy-como-madonna y *gn* no es un rollito con el que servidor de vds. comulgue mucho estética ni personalmente. Pero cómo canta la chica.

La música del dúo es indudablemente electrónica: pero tiene una cualidad orgánica indiscutible y una enorme y original riqueza tímbrica. Por ejemplo, en el tema “Lovely Head” (que pongo más abajo como vídeo) la guitarra/silbido que suena no es tal: es la chica pegando chillidos más o menos afinados y pasados por un filtro de válvulas, además de otros efectos un Korg MS-20 (gracias Xel por la info).

Por otra parte no es la típica formación que hace siempre las mismas canciones hasta que al llegar al quinto disco se acaban las ideas (no, no me refería a Dover pero bueno, si te empeñas…). Goldfrapp evoluciona musicalmente de disco en disco y cada uno que sacan realmente aporta algo o tiene un espíritu distinto con respecto al anterior. Otra cosa es que a mí me gusten más los primeros discos…

… y del primer disco es el vídeo que pongo a continuación. Aquí podemos ver a la señorita Allison luciendo cacha/nalga y haciendo monerías/mohínes varios mientras rompe sillas de plástico. Obviamente no debían tener un duro cuando hicieron el vídeo… pero no os quedéis con la imagen… escuchad, escuchad…


Me sigue gustando más Elaine.

archivado en: Música

digital signature KeySelector

archivado en: Java

A la hora de validar una firma digital XML, encontramos que es necesario pasarle como parámetro a DOMValidateContext un KeySelector. ¿Pero qué es esto? Nada tan especial, en el fondo.

La cuestión es que para establecer la validez de la firma de un XML necesitamos por narices disponer de la clave pública del firmante… que suele venir en el propio XML empotrada de alguna manera. Java no es tan listo como para encontrar por sí mismo las claves dentro del XML que está analizando, con lo que le tenemos que ayudar. Por eso definimos una clase como extensión de KeySelector que le dice al DOMValidateContext dónde tiene que buscar. De todos modos, si no queremos hacerlo, siempre podemos buscar previamente nosotros la clave y pasársela como parámetro. Pero si podemos implementar un KeySelector, mejor.

Otras implementaciones de la misma clase presentes en internet buscan los valores del módulo y exponente de la clave pública en tags específicos del estándar de firma de XML. Esto a veces da problemas. Por ejemplo: aunque módulo y exponente se deben almacenar como ds:cryptobynary (es decir, valor binario codificado como base64) en ocasiones podemos encontrarnos patadas como el valor en ASCII pasado a base64.

Esta implementación (que se debe introducir como clase interna en nuestra clase verificadora) sin embargo busca en primer lugar dentro de una clave ds:X509 los valores de módulo y exponente escondidos dentro del certificado, y sólo si no los encuentra busca en los otros tags interiores de ds:KeyInfo. En teoría esto debería funcionar con cualquier fichero XAdES.

private static class X509KeySelector extends KeySelector {
		/**
		 * Permite al objeto DOMValidateContext (necesario en el proceso de
		 * analizar un XAdES) buscar una clave X509 dentro de un objeto KeyInfo.
		 * En otras implementaciones se busca como tags aparte. En esta, se
		 * intenta extraer del propio certificado presente en el XML ya que
		 * puede estar almacenado como crypto-ASCII en vez de como
		 * crypto-binary. {@inheritDoc}
		 *
		 * @see javax.xml.crypto.KeySelector#select(javax.xml.crypto.dsig.keyinfo
		 *      .KeyInfo, javax.xml.crypto.KeySelector.Purpose,
		 *      javax.xml.crypto.AlgorithmMethod,
		 *      javax.xml.crypto.XMLCryptoContext)
		 */
		@SuppressWarnings("unchecked")
		public KeySelectorResult select(KeyInfo keyInfo,
				KeySelector.Purpose purpose, AlgorithmMethod method,
				XMLCryptoContext context) throws KeySelectorException {
			// ya que los valores de modulus y exponent presentes en xades
			// pueden estar codificados como ASCII+base64, los saco directamente
			// del certificado adjunto
			PublicKey localkey = null;
			X509Certificate lx509 = getCertificadoDesdeKeyInfo(keyInfo);

			if (lx509 == null) {// si no encontró certificado, leemos otros
				// valores de keyInfo
				List list = keyInfo.getContent();
				for (int i = 0; i < list.size(); i++) {
					XMLStructure xmlStructure = (XMLStructure) list.get(i);
					if (xmlStructure instanceof KeyValue) {
						try {
							localkey = ((KeyValue) xmlStructure).getPublicKey();
						} catch (KeyException ke) {
							throw new KeySelectorException(ke);
						}
					}
				}
			} else {// si encontró certificado, preferimos leer de ahí
				localkey = lx509.getPublicKey();
			}

			final PublicKey key = localkey;
			// Asegurarse de que el método es compatible con el
			// algoritmo
			if (algEquals(method.getAlgorithm(), key.getAlgorithm())) {
				return new KeySelectorResult() {
					public Key getKey() {
						return key;
					}
				};
			}
			// si el algoritmo no es compatible...
			throw new KeySelectorException("Clave no encontrada");
		}

		/**
		 * Comprueba si se especifica clave RSA o DSA.
		 *
		 * @param algURI
		 * @param algName
		 * @return true en caso de encontrar cualquiera de los dos algoritmos
		 *         criptográficos especificados en el KeyInfo.
		 */
		static boolean algEquals(String algURI, String algName) {
			if ((algName.equalsIgnoreCase("DSA") && algURI
					.equalsIgnoreCase(SignatureMethod.DSA_SHA1))
					|| (algName.equalsIgnoreCase("RSA") && algURI
							.equalsIgnoreCase(SignatureMethod.RSA_SHA1))) {
				return true;
			} else {
				return false;
			}
		}
	}

	/**
	 * Devuelve el objeto X509certificate contenido dentro del KeyInfo
	 * especificado.
	 *
	 * @param pki
	 *            Instancia de KeyInfo a analizar.
	 * @return El certificado, que puede ser null.
	 */
	@SuppressWarnings("unchecked")
	private static X509Certificate getCertificadoDesdeKeyInfo(KeyInfo pki) {
		X509Data x509data = null;
		X509Certificate x509cert = null;

		// miramos si encontramos objeto x509data
		List klist = pki.getContent();
		for (int i = 0; i < klist.size(); i++) {
			XMLStructure xmlStructure = (XMLStructure) klist.get(i);
			// System.out.println(xmlStructure.getClass());
			if (xmlStructure instanceof X509Data) {
				x509data = (X509Data) xmlStructure;
			}
		}

		// miramos ahora si encontramos un certificado x509
		if (x509data != null) {
			List xlist = x509data.getContent();
			for (int i = 0; i < xlist.size(); i++) {
				Object contenido = (Object) xlist.get(i);
				// System.out.println(contenido.getClass());
				if (contenido instanceof X509Certificate) {
					x509cert = (X509Certificate) contenido;
				}
			}
		}
		return x509cert;
	}
archivado en: Java

24 abril 2009

yvonne lambert

archivado en: Música

Siguiendo con mi peculiar afición a las chicas-guapas-y-raras-que-hacen-música-de-estética-retrofuturista-y-con-las-que-yo-me-casaría, hoy le toca el turno a Yvonne Lambert.


Yvonne, texana de Austin, toca el theremin en el grupo de rock electrónico-psicodélico The Octopus Project.

El theremin, que es el cacharro que se ve en las fotos de arriba, es uno de los primeros instrumentos electrónicos y se toca sin tocarlo: tiene dos antenas, la larga/vertical para el tono y la circular/horizontal para el volumen, y la interacción de las manos y los dedos con las radiofrecuencias que emite se transforman en sonidos audibles que luego se dirigen a un amplificador. Se suele utilizar en bandas sonoras de películas de terror (de hecho Octopus Project ha hecho música para algún corto) y se puede oír en los títulos de crédito de la película Ed Wood. Curiosamente, los mejores thereministas suelen ser mujeres.

Pero ya está bien de rollos; lo mejor es verlo en vivo:

(Me sigue gustando más Elaine).

archivado en: Música

23 abril 2009

elaine walker

archivado en: Música Utopía

Elaine Walker cree en el futuro, en la exploración del cosmos, en la adaptación de la humanidad al espacio, en la expansión galáctica. Elaine Walker es extropianista.

Principios Extrópicos v2.5 (resumidos):
  1. Expansión Ilimitada: búsqueda de inteligencia, sabiduría y eficacia. Eliminación de todas las barreras biológicas, políticas, culturales y psicológicas que se opongan a la auto-actualización y auto-realización.
  2. Auto Transformación: a través de la automejora física, moral e intelectual utilizando la razón, pensamiento crítico, responsabilidad personal y experimentación.
  3. Optimismo Dinámico: pensamiento positivo orientado a la acción racional. Rechazo de la fe ciega y el pesimismo.
  4. Tecnología Inteligente: aplicar la ciencia y la tecnología a la superación creativa de nuestros límites.
  5. Orden Espontáneo: apoyo a los procesos de coordinación de la acción individual descentralizada, favoreciendo tolerancia, planificación a largo plazo y libertad individual.

Elaine Walker se hace ella misma sus propios trajes de astronauta.

Elaine Walker además hace (muy buena) música, tiene su propio grupo y algún que otro buen vídeo, a pesar de su escaso presupuesto, y todo ello siempre en coherencia con las temáticas que acabo de mencionar.

Elaine Walker: Martians


Estoy enamorado de Elaine Walker.

archivado en: Música Utopía

21 abril 2009

color ALV

archivado en: ABAP/IV

Hola sufridos programadores de SAP:

A veces toca colorear las filas o columnas de un listado ALV. Casi todo el mundo tiene su propio template para estas cosas, pero es difícil acordarse de la codificación de los colores o en qué campos concretos se tenían que colocar dentro de la definición. Hoy pegamos repaso y acompañamos además con una bonita macro para no volver a olvidarse jamás. Asumo que ya has hecho alguna y que los nombres de las cosas te suenan familiares.

LA CODIFICACIÓN DE COLOR

Las ALV, y no sé si el resto de lugares de R/3, codifican el color con un código char(4) con la siguiente estructura:

Cxyz

Donde C es siempre “C”, x€[0,7] es el código de color, y es INTENSIFIED, z es INVERSE. Siempre cumpliendo y,z €[0,1] pero sabiendo que cuando y = 1, da igual lo que valga z. En este gráfico horrible podemos ver como se ven:

la magnífica paleta ALV de R/3

observación maliciosa: no sé quien dejó establecido que los colores corporativos siempre son alguna combinación de azules tenues. Obsérvese que en R/3 de 8 (ocho) colores básicos disponibles, 3 (tres) son azules.

COLOR EN LÍNEAS

Para darle color a una línea tenemos que definir un campo char(4) en nuestra tabla interna que contenga, para cada fila, su código de color como el que ya hemos visto. Posteriormente, antes de llamar a la ALV tenemos que especificar cuál el campo de color en la definición de layout. Para eso nada como un ejemplo de código:

data: begin of it_tablita occurs 0,
      caja(1),
      semaforo(1),
      gjahr like bkpf-gjahr,
      blart like bkpf-blart,
      budat like bkpf-budat,
      belnr like bkpf-belnr,
      dmbtr like bseg-dmbtr,
      waers like bkpf-waers,
      COLORCILLO(4),
end of it_tablita.

loop at it_tablita.
      it_tablita_colorcillo = 'C211'. "por ejemplo
      modify it_tablita.
endloop.

*[...continuamos hasta la definición de ALV...]

is_layout-info_fieldname = 'COLORCILLO'. "literales en mayúsculas, SIEMPRE!

COLOR EN COLUMNAS

Es más rápido pues se define en el catálogo de campos, clave emphasize. Por ejemplo:

it_fieldcat-emphasize = 'C600'.

COLOR EN CELDAS

Esto SÍ es un rollo. Tenemos que meter un campo en nuestra tabla interna, como en el caso del color en filas. Pero ahora ese campo contendrá una tabla del tipo lvc_t_scol. Esta tabla debe contener información sobre el campo (o campos) que debe colorear y el color que le (les) corresponde. Y por último, especificarlo en el layout:

*Añadimos la tabla CT como campo de la tabla interna
data: begin of it_tablita occurs 0,
      caja(1),
      semaforo(1),
      gjahr like bkpf-gjahr,
      blart like bkpf-blart,
      budat like bkpf-budat,
      belnr like bkpf-belnr,
      dmbtr like bseg-dmbtr,
      waers like bkpf-waers,
      COLORCILLO(4),
      CT type lvc_t_scol,
end of it_tablita.

*cs es la estructura de la tabla de colores
Data: cs type lvc_s_scol,
*cta es la tabla donde meteremos cs y luego se la pasamos a CT
cta type lvc_t_scol.

*cargamos el valor. suponemos un loop
LOOP AT IT_TABLITA WHERE BLART NE SPACE.
      refresh cta.
      clear cs.
* coloreamos BLART, pero podríamos hacer con los otros
      cs-fname = 'BLART'.
      cs-color-col = 4.
      cs-color-int = 0.
      cs-color-inv = 0.
      cs-nokeycol = 'X'.
      append cs to cta.
      append lines of cta to it_tablita-ct.
      clear cs.
      modify it_tablita transporting ct.
endloop.

*[...continuamos hasta la definición de ALV...]

*lo decimos en el layout
is_layout-coltab_fieldname = 'CT'.

¿Y CÓMO ME ACUERDO?

De todos modos, como soy muy majo, os invito a una macro para no tener que acordarse de los códigos de color. El abap siguiente se explica solo:

DEFINE vc_color.
* MACRO para convertir color humano en código color Cxyz
* creado por voet cranf en 2008, http://cranf.net
* uso: vc_color campo ´texto_en_español´
* en EMPHASIZE o en el campo COLOR usamos char(4)
* con la forma Cxyz, x€[0,7]; y,z€[0,1] / y+z<2
* valores de x:
*            0 COL_BACKGROUND fondo (gris)
*            1 COL_HEADING    azul oscuro
*            2 COL_NORMAL     azul claro
*            3 COL_TOTAL      amarillo
*            4 COL_KEY        azul
*            5 COL_POSITIVE   verde
*            6 COL_NEGATIVE   rojo
*            7 COL_GROUP      naranja
* valores de y: 0 = normal, 1 = intenso
* valores de z: 0 = xy afecta fondo, 1 = x invertido
*          OJO: ls_fieldcat-key = 'X' invalida lo anterior
&1 = 'C000'. "gris fondo por definición
find 'azul' in &2 ignoring case.
if sy-subrc = 0.
&1+1(1) = '4'.
find 'claro' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '2'. endif.
find 'oscuro' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '1'. endif.
endif.
find 'amar' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '3'. endif.
find 'verd' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '5'. endif.
find 'rojo' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '6'. endif.
find 'nara' in &2 ignoring case.
if sy-subrc = 0. &1+1(1) = '7'. endif.
find 'ntens' in &2 ignoring case.
if sy-subrc = 0. &1+2(2) = '10'. endif.
find 'nver' in &2 ignoring case.
if sy-subrc = 0. &1+2(2) = '01'. endif.
END-OF-DEFINITION.

Y he aquí unos ejemplos:

vc_color it_fieldcat-emphasize 'azul oscuro'.

vc_color it_fieldcat-emphasize 'azul claro intenso'.

vc_color it_fieldcat-emphasize 'naranja invertido'.

Si necesitas colores para cualquier otra cosa que no sea R/3, recomiendo *shameless self promotion* color synthAxis

archivado en: ABAP/IV

20 abril 2009

puppini sisters

archivado en: Música

Menudo descubrimiento.

Encontré a estas chicas de casualidad utilizando Spotify, la radio gratuita (de momento) que permite seleccionar canciones individuales para escucharlas. No sé si era su intención inicial, pero a mí me viene de perlas para uno de mis deportes favoritos, que es la caza de versiones.

Pues hete aquí que buscando Wuthering Heights, la mejor canción de la loquísima y genial Kate Bush (sí, loquísima; simplemente mira como baila en el video anterior), apareció, aparte de un montón de basura, una versión realizada por las Puppini Sisters.

the puppini sisters
Estas chicas han formado un grupo imitación de las Andrew Sisters, aquel grupo USA de los años 40 más conocido por nuestras abuelas como Las Hermanas Síster. Sí, ríase, pero conozco gente de mi generación que en vez de Schwarzenegger dice Esguazanaguer.

El peculiar sonido de las Puppini, así como de las Andrew, proviene de un tipo de canto polifónico, en este caso a tres voces, con armonías muy apretadas en las que las cantantes cantan distintas notas pero siempre muy próximas, con lo que se consigue una coloración muy rica y densa.

Sin embargo las Puppini han decidido rodearse de un sonido mucho más jazzero que las originales y, lo que es mejor (o peor), han escogido canciones clásicas, la mayoría de los 80 y los 90, fácilmente reconocibles. No siempre aportan demasiado o acaban de sonar convincentes, especialmente por su manía ocasional de cambiar algunas notas de la melodía original que al oyente atento no le pasan desapercibidas. Pero muchas veces el resultado es magnífico.

En su página, bastante trabajada, se pueden escuchar fragmentos de algunas de sus canciones en muy buena calidad. Yo les dejo aquí con uno de esos vídeos de pegolete de youtube que se utilizan para poner la canción entera y que en este caso es la versión de Wuthering Heights. De fondo se oye un theremin, por cierto. En este otro vídeo se les ve hacer el estribillo de la misma canción en riguroso directo y con no poco cachondeo.

archivado en: Música

19 abril 2009

psicoacústica: HRTF

archivado en: Audio

[Este post es técnico y dirigido a viciosos del audio. Aún así, como el lector promedio de este blog es una persona con inquietudes animo a echarle un vistazo.]

A la hora de situar un sonido en el espacio hay que tener muchos factores en cuenta: volumen, ecualización, los primeros ecos (en lenguaje técnico ER, early reflections), la reverberación… y lo que nuestras orejas hacen con ese sonido. De esto último va este artículo.

La mayor parte de la gente va por la vida, feliz ella, pensando que las orejas no funcionan más que como una especie de embudos que atrapan el sonido y lo concentran en el agujerito del oído. Básicamente, que en caso de perder una oreja las únicas consecuencias serían tener que usar lentillas por narices, un pequeño problema estético a lo van gogh… y que por ese oido oiría un poco más bajo; nada que no se pueda solucionar apoyando una cuchara detrás del oído simulando un pabellón auditivo. Craso error.

Ahora veremos lo que hacen de verdad la orejas.

La cuestión para el técnico de sonido es que cuando se hace una mezcla convencional de audio, aparte de los recursos ya citados (ecualización, ER, reverberación) que afectan sobretodo a la distancia dónde está situada la fuente de sonido, la única opción que tenemos para indicar el ángulo del que viene el sonido es, a primera vista, el panning, o sea: que se oiga más por un altavoz que otro. Si se oye más por el derecho, es que el sonido viene por ahí y se acabó.

Haciendo esto sin utilizar otros recursos da como resultado un sonido bastante plano en el que realmente es fácil distinguir los instrumentos a lo bruto, pero en el que si cerramos los ojos, veremos que el sonido parece venir sólamente de la línea entre altavoces. Y si los altavoces tienen una colocación, ejem, un poco sui generis, entonces conseguimos una especie de sindiós donde cualquier parecido con la realidad es pura coincidencia. Pero asumo que están bien colocados o que el oyente utiliza auriculares.

Ahora bien… ¿qué más factores influyen aparte de la diferencia de volumen entre altavoces?

EL RETRASO DEL SONIDO ENTRE OÍDOS

Quizás el más importante sea el hecho de que entre las orejas existe una distancia algo menor que un palmo. El que haya una cabeza por el medio también influye: pero eso lo dejamos para luego. Siguiendo la regla anglosajona que dice que el sonido viaja 1 pie en 1 milisegundo, eso significa que cuando un sonido nos llega de la derecha, llega al oído derecho ANTES que al izquierdo… y la diferencia, siguiendo un cálculo sencillo, es menor de 1ms ya que la distancia entre oídos es menor que 1 pie.

Aplicando trigonometría y conociendo la velocidad del sonido para deducir los tiempos, sería genial disponer de un filtro digital que permitiera controlar retrasos del orden de microsegundos para poder ajustar co precisión la posición angular de un sonido concreto. La buena noticia para los aficionados a la producción digital de audio es que existe un plugin VST gratuito, el Panature, que permite controlar los retrasos inter-oído con esa precisión. Simplemente probando a añadir este retraso se pueden conseguir resultados espectaculares.

La fórmula es muy sencilla de calcular, mas aún si aproximamos que la distancia al sonido es mayor que la existente entre las orejas:

formularetrasooidos

Tomando angulo=0 para el frente, positivo para los sonidos a la izquierda y negativo para los situados a la derecha (utilizando siempre el sistema internacional) nos dará el resultado en segundos, aunque será mejor expresarlo en microsegundos. Obviamente pueden salir valores negativos: porque el valor es respecto al oído derecho.

Si por ejemplo tomamos un sonido a la derecha, con ángulo = -90º, distancia entre oídos = 15cm y velocidad del sonido = 330m/s obtendremos -321 microsegundos. Eso significa que llegará al oído derecho 321 microsegundos antes que al izquierdo. Para valores positivos, significa que llega primero al oído izquierdo.

Hay que tener en cuenta que el abuso de este recurso es muy utilizado, a veces insconcientemente, cuando para dar mayor espacialidad a las mezclas se retrasa el sonido entre altavoces con valores mayores a 1ms. En ese caso se obtiene un sonido muy abierto pero desgraciadamente irreal. Cuando no me preocupo del verismo en una producción suelo hacerlo con las camas de teclado o cuerdas más distantes para situarlas en cualquier lugar menos con el resto de intrumentos.

EL FILTRADO DE FRECUENCIAS POR LA CABEZA Y LAS OREJAS

Pero la diferencia de tiempos no es el único parámetro que influye. El hecho de que haya una cabeza en medio de las orejas sigue siendo, para muchos, una desgracia. Sin embargo, el lector y yo, orgullosos de tener cabeza, lo aprovechamos a nuestro favor.

Si un sonido llega de la derecha, llega prácticamente directo al agujero del oído de ese mismo lado. Menos de 1ms más tarde llegará al otro oído PERO… tras rodear la cabeza. En este caso al oído izquierdo le llegan muchos menos agudos que al derecho. La diferencia en la ecualización entre los sonidos que percibe cada oído también aporta información al cerebro.

Y si la cabeza tiene esa influencia, el papel de las orejas como tales es fun-da-men-tal. Todos los repliegues raros que tenemos en las orejas funcionan como filtros notch (o sea que eliminan bandas concretas) cuya eficacia y parámetros dependen del ángulo en el que llega el sonido: y no sólo el ángulo izquierda-derecha (azimut); también el de arriba-abajo (elevación).

Llegados a este punto invito al lector a que chasquée los dedos mientras los mueve de un lado a otro de la cabeza. Hay una diferencia, sutil pero apreciable, en el chasquido mientras la mano se mueve. Si cerramos los ojos, percibiremos muy claramente la situación espacial del chasquido. Si los abrimos y nos concentramos (nos tapamos un oído), nos daremos cuenta de que en realidad lo que más cambia es la ecualización del sonido, aunque de una manera terriblemente difícil de concretar.

Arriba y abajo también funciona: se aprecia claramente que si se pone la mano más arriba de la cabeza el sonido se percibe algo más agudo que si se pone a la altura del pecho. Este es un viejo truco utilizado durante décadas por los grandes mezcladores para elevar o bajar físicamente un instrumento, por cierto.

Y ESTO CÓMO SE APLICA

A principios de los 80 un zoquete genial, Hugo Zuccarelli, inventó una técnica de grabación que llamó holophonics. Esta técnica, que básicamente no es muy distinta a la grabación binaural con maniquíes, consiste en la colocación de dos micrófonos en una cabeza de maniquí con orejas. De este modo es el propio maniquí el que hace el trabajo de filtrar los sonidos que le llegan facilitando el trabajo del montador de audio.

Los resultados son espectaculares. Pero ojo, para que esta técnica funcione correctamente es necesario oir las grabaciones con buenos auriculares. Los altavoces tienden a interferirse mútuamente estropeando bastante la sensación. Esta interferencia se puede compensar bastante, de todos modos, mediante el uso de filtros digitales siempre que los altavoces estén bien colocados.

Antes de seguir: Lo de zoquete lo digo porque el tal Zuccarelli insistía/insiste en que el efecto era debido a que los humanos emitimos rayos acústicos por las orejas que interfieren con el sonido percibido. Sin comentarios.

HÁGALO VD. MISMO

Ahora, si no tenemos un sofisticado equipo con maniquí ¿a qué podemos recurrir en nuestras mezclas para simular lo que nos hacen las orejas?.

Para ello existen las funciones HRTF (Head Related Transfer Function). Son funciones matemáticas que recibiendo 2 canales de audio y parámetros de distancia, ángulos de azimut y elevación pueden imitar el trabajo de nuestras orejas. En algunos casos incluso calcula efecto doppler. Obviamente son un invento relativamente reciente que proviene del análisis de grabaciones binaurales; como las del maniquí que hablé hace un momento.

Existen varias HRTF desarrolladas y son empleadas por diversos sistemas de audio y plugins. Quizás las más famosas sean las elaboradas a principios de los 90 en el MIT con el maniquí llamado KEMAR (Knowles Electronic Manikin for Acoustic Research).

A la hora de la verdad, si somos de los que nos gusta experimentar, podemos usar los siguientes plugins HRTF de software (hay más, pero estos son los que más conozco) en cualquier programa de edición de onda que los admita.

  • prosoniq ambisone. De pago, algo cutrongo, sin automatización y entrada mono. Aun así, bastante efectivo en resultados. Controla azimut, velocidad de giro, elevación y permite seleccionar calidad y el peculiar modo wide field.
  • mda roundpan. Muy similar al anterior, pero en feo. También con entrada mono. Sólamente tiene elevación y velocidad de giro, pero controlable de modo mucho más preciso que con el ambisone. Además, a diferencia de este, es automatizable.
  • wavearts panorama. Mucho más sofisticado y caro, admite entrada estéro y permite, aunque no me gusta mucho ni el cómo ni el interfaz, calcular también ER y reverberación. Estos conceptos los dejaré para otro artículo.

Personalmente tengo costumbre de utilizar estos conocimientos de psicoacústica en mis mezclas. Por ejemplo, en mi tema Eos Chasma uso y abuso del filtro mda roundpan, desde las campanitas del principio hasta las camas que están durante todo el tema girando alrededor a distintas velocidades. Obviamente se detecta mejor con cascos.

Por último: no todo el mundo tiene las mismas orerjas y no todo el mundo percibe igual las mismas funciones HRTF. Aquí se puede escuchar el mismo sonido moviéndose alrededor de la cabeza utilizando multitud de HRTFs distintos.

archivado en: Audio
índice   cranf.net   wordnadapress
12