viernes, 17 de abril de 2015

Primeras impresiones de Unity 5 (III): Editor de sonido

Unity 5 ha traido también nuevos controles de sonido, y la verdad es que hacía falta, una vez más pasamos de algo bastante básico a un control completamente profesional. Visto por encima puede parecer que han metido una mesa de mezclas y ya, pero tiene bastante más profundidad.

Unity 5 Mixer

Las mesas de mezclas son Mixers, nuevos elementos que creamos, y serían el equivalente en sonido al Animator que usamos con Mecanim. Son elementos con su propia ventana de edición. En un Mixer podemos crear lo que serían canales de la mesa de mezclas, que se llaman Groups. En principio es parecido a un canal en una mesa de mezclas, pero con añadidos. Los Groups del Mixer son una jerarquía donde el sonido de los hijos pasa por el canal padre. Es decir si tenemos una jerarquía típica familiar en un Mixer (abuelo, padre, nieto), el group nieto tiene su sonido, que pasará al padre, si el padre tiene reducción del 50%, llegará un 50% del volumen del nieto al abuelo, y si el abuelo tiene otro 50% de reducción el sonido final que escucharemos será un 25% de lo que sonase en el nieto.

Ahora cuando ponemos un AudioSource en algún lado, además del clip a reproducir y otras configuraciones, tenemos que elegir un group de una mesa que será por donde sonará ese sonido. Similar a si el AudioSource fuera un reproductor o un vinilo y lo enchufamos a un canal de la mesa. Con la diferencia de que aquí podemos enchufar todos los AudioSource que queramos al mismo group.

Tenemos además efectos de sonido en tiempo real que podemos añadir en una pila a cada canal. Efectos como reverberación, eco, reducción por tonos, limitadores de pico de volumen, cambio de velocidad, distorsiones... Y siempre el de control de volumen (Attenuation) que es un efecto obligatorio en cada group. Funcionan como una tubería, cada efecto da su salida al de debajo y por lo tanto el orden afecta al resultado.

Hay que tener en cuenta que estos efectos en tiempo real pueden ser exigentes para la CPU, por lo que es recomendable juntar los sonidos y aplicar el efecto solo una vez. Es decir si tenemos una escena en una cueva y queremos que haya eco, es mejor juntar los sonidos de diálogos, fx y demás y aplicar el eco sobre el total que aplicar un eco a cada tipo de sonido.

Para poder hacer esto mejor nos dan los comandos send y recieve. Nos permite poner como un efecto más en la pila un receive para un canal y enviar sonido desde otro(s). Así podríamos tener un canal para el efecto de eco y enviar lo que nos interese hacia él y el efecto se haría solo 1 vez mejorando el rendimiento. También podríamos haber hecho esto aprovechando la jerarquía, hacer todos los groups que necesiten eco hijo del group que tiene el efecto, ¿qué ventajas nos da hacerlo con send y recieve?

Uno es que podemos poner varios send a canales distintos. Esto nos permitiría mandar el sonido de fx al canal que hace eco y también al que hace reverb (suponiendo que tengamos esos efectos separados por algo), y que cada efecto se aplique sobre el sonido original. Si lo hicieramos con jerarquía uno de los efectos se aplicaría sobre el resultado del otro. Y la otra gran ventaja es que podemos elegir el volumen de envío en send. Esto hace que aunque tengamos varios sonidos distintos yendo al mismo efecto no tenemos por qué tener el mismo nivel de volumen en todos. Por ejemplo, imaginemos que queremos reverb en música y fx, si lo hacemos por jerarquía, podemos ajustar el volumen de música, fx y reverb, pero el volumen de reverb será el mismo para música y fx, no podemos ajustar eso. Con send y recieve podemos poner la música al 80% de volumen, y enviar al 50% con send (tendríamos un 40% de reverb en música), y el fx al 100% con un send del 80% (tendríamos un 80% de reverb en fx), y todo eso sin tocar la atenuación del group del reverb. Es muy versátil y eficiente, ajustar volúmenes es una multiplicación más y tenemos mucho control sobre efectos complicado en tiempo real sin mucha sobrecarga de CPU.

Y ya la cosa que me ha encantado son los snapshots, que son copias de la configuración de todos los parámetros de un Mixer. Esto nos permite pasar de una configuración de sonido a otra de forma fácil, podemos ajustar todos los parámetros en el editor (incluso con el juego al play), y guardarlos como un snapshot, y configurar de forma completamente distinta para otro momento u otra zona de juego que tiene sonido diferente y guardarlo como snapshot, y luego en código con una sola línea pasar de una a otra, incluso con transición suave entre ellas.

No hay comentarios :

Publicar un comentario