El complemento Audio Modulation proporciona un control dinámico sobre los parámetros de audio de coma flotante, como el volumen y el tono, desde los sistemas Component y Blueprint.
El complemento Audio Modulation está desactivado por defecto. Para habilitarlo, sigue estos pasos:
Selecciona Editar > Complementos para abrir el panel Complementos.
Usa la barra de búsqueda para encontrar el complemento.
Habilita la casilla de verificación correspondiente.
Reinicia Unreal Editor.
Tipos de recurso
Hay cinco tipos de recursos distintos que proporcionan la funcionalidad de Audio Modulation.
| Tipo de recurso | Descripción |
|---|---|
Parámetros que proporcionan contexto sobre cómo se normaliza, se muestra y se mezcla un valor de modulación con otros valores. | |
Conectores que hacen referencia a un parámetro de modulación. | |
Moduladores que pueden aplicar varios valores de bus de control a la vez. | |
Conectores y moduladores híbridos que reasignan varios valores del bus de control a un único valor de salida. | |
Conectores y moduladores híbridos que generan valores a lo largo del tiempo. |
Puedes usarlos para crear la base de tu canalización de modulación antes de conectarla a un destino de modulación de punto final.
Para crear un recurso de Audio Modulation, sigue estos pasos:
En el explorador de contenido, haz clic en el botón Añadir.
En Audio > Modulación, selecciona el tipo de recurso que quieras.
Parámetros de modulación
Los parámetros de modulación proporcionan contexto sobre cómo se normaliza, se muestra y se mezcla un valor de modulación con otros valores.
Cada parámetro de modulación tiene las siguientes propiedades básicas (además de otras dependiendo de la clase):
Valor predeterminado del parámetro: el valor de modulación predeterminado. Esta función actúa como un valor de derivación que debe configurarse para que no se produzca ningún cambio en una entrada cuando un modulador que hace referencia a este parámetro se mezcle con otro. Matemáticamente, el valor debería seleccionarse de modo que la función de mezcla se reduzca a una función de identidad cuando se establezca como entrada.
Nombre en pantalla de la unidad: la unidad que se mostrará en las referencias de Unreal Editor. Esta información es solo para fines de desarrollo, ya que se elimina de las compilaciones empaquetadas.
Hay varias clases de parámetros de modulación integradas que admiten una variedad de casos de uso, como la mezcla de volumen y la manipulación de frecuencia.
El complemento Audio Modulation incluye recursos de parámetros de modulación ya preparados para los parámetros más comunes, como el volumen y el tono.
Para verlos en el explorador de contenido, sigue estos pasos:
Haz clic en el botón Ajustes.
Activa Mostrar contenido del motor y Mostrar contenido de los complementos.
Ve a All/Engine/Plugins/Audio Modulation Content.
Acerca de los valores de modulación
Los valores de modulación se transforman entre dos espacios de valores:
Unitario: valor en unidades asociadas al parámetro de modulación. Por ejemplo, los decibelios (dB) para un parámetro de modulación de volumen. Los valores unitarios se asignan a valores normalizados.
Normalizado: valor entre un rango normalizado de 0.0 a 1.0 para un pase y una mezcla uniformes.
Los valores de modulación se mezclan cuando varios moduladores se vinculan a un único destino de modulación. La forma en que se combinan depende del parámetro de modulación asociado. Aquí tienes algunos ejemplos de cómo algunos de los tipos de parámetros de modulación integrados gestionan la mezcla:
Volumen: las reducciones de volumen se suman. Por ejemplo, si dos buses de control tienen valores de -6 dB y -12 dB respectivamente, el volumen del destino de modulación se establecerá en -18 dB.
Frecuencia del filtro de paso alto: se selecciona el valor máximo. Por ejemplo, si dos buses de control tienen valores de 1000 Hz y 500 Hz respectivamente, la frecuencia del filtro de paso alto del destino de modulación se establece en 1000 Hz.
Frecuencia del filtro de paso bajo: se selecciona el valor mínimo. Por ejemplo, si dos buses de control tienen valores de 1000 Hz y 500 Hz respectivamente, la frecuencia del filtro de paso bajo del destino de modulación se establece en 500 Hz.
Cómo crear clases de parámetros de modulación personalizadas
Puedes crear tu propia clase de parámetro de modulación heredando de la clase base USoundModulationParameter e implementando las siguientes funciones:
GetMixFunction: se espera que devuelva una función que mezcle un valor de entrada y un valor de salida.
GetUnitConversionFunction: se espera que devuelva una función que transforme un valor al espacio de unidades.
GetNormalizedConversionFunction: se espera que devuelva una función que transforme un valor al espacio normalizado.
Para obtener más información, consulta la referencia de la API de C++ para Audio Modulation.
Buses de control
Los buses de control son conectores que hacen referencia a un parámetro de modulación. Pueden ser:
Utilizados por mezclas de bus de control y generadores de modulación para modular.
Referenciados y reasignados por parches de parámetros.
Por lo general, es una buena idea crear un bus de control para cada categoría de sonido que quieras modular. La categoría puede ser general, como efectos de sonido (CB_SFX), o específica, como sonidos de ataque (CB_Attacks). En este ejemplo, el sonido de un golpe de espada podría tener ambos buses de control en su canalización de modulación.
Propiedades del bus de control
| Propiedad | Descripción |
|---|---|
Omitir | Si está habilitado, el bus de control envía el valor predeterminado del parámetro a cualquier destino de modulación conectado. El bus de control permanece activo en cualquier caso. |
Parámetro | El parámetro de modulación que se va a usar. El valor predeterminado del parámetro de modulación especificado se usa como valor predeterminado para este bus de control. |
Anular dirección | Si está habilitado, puedes cambiar la propiedad Dirección. |
Dirección | El nombre de referencia interno (usado por algunas funciones de Blueprint). Por defecto, es el nombre del recurso, pero se puede cambiar activando Anular dirección. |
Generadores | Una matriz de generadores de modulación que accionan el bus algorítmicamente. |
Mezclas de bus de control
Las mezclas de bus de control son moduladores que te ayudan a:
Influir en varios valores del bus de control a la vez.
Modular con buses de control compartidos con otras mezclas de bus de control.
Usar perfiles de mezcla para probar y ajustar el audio en tiempo real.
Propiedades de mezcla de bus de control
| Propiedad | Descripción |
|---|---|
Activar mezcla | [Botón] Activa la mezcla en el índice del perfil indicado en todos los mundos activos. |
Desactivar todas las mezclas | [Botón] Desactiva todas las mezclas en todos los mundos activos. |
Desactivar mezcla | [Botón] Desactiva la mezcla en el índice del perfil indicado en todos los mundos activos. |
Cargar mezcla desde el perfil | [Botón] Carga la mezcla en el índice del perfil indicado. De este modo, se sobrescribirán los ajustes que tengas en la mezcla. Los perfiles de mezcla se cargan desde archivos |
Guardar mezcla en el perfil | [Botón] Guarda la mezcla en el índice del perfil indicado. Esto sobrescribe cualquier configuración presente en el índice. Los perfiles de mezcla se guardan en archivos |
Mezcla en solitario | [Botón] Desactiva las demás mezclas y activa la mezcla en el índice del perfil indicado en todos los mundos activos. Solo para pruebas en el editor. |
Índice del perfil | El índice (entero) del perfil de mezcla seleccionado mediante los botones del perfil de mezcla. Cada perfil de mezcla tiene una matriz de etapas de mezcla que determinan cómo se modulan los destinos de modulación asociados. |
Etapas de mezcla | Una matriz de referencias del bus de control y la información de mezcla asociada. |
Etapas de mezcla > Bus | El bus de control a través del cual se envía el valor. |
Etapas de mezcla > Valor | El valor que se va a enviar a través del bus de control. Puedes establecer el valor en unidades o el valor normalizado directamente. |
Etapas de mezcla > Tiempo de ataque | La duración (en segundos) para pasar del valor predeterminado del parámetro de modulación al valor indicado cuando se activa la mezcla. |
Etapas de mezcla > Tiempo de relajación | La duración (en segundos) para pasar del valor indicado al valor predeterminado del parámetro de modulación cuando se desactiva la mezcla. |
Duración | Cuando se establece en un valor igual o superior a 0, la mezcla iniciará un cronómetro al activarse. Cuando el temporizador alcance el valor de duración establecido, la mezcla se desactivará automáticamente. |
Volver a activar al activarse | Controla el comportamiento cuando se activa una mezcla que ya se ha activado. Cuando se desactiva, no ocurre nada, excepto que se reinicia el temporizador de duración. Cuando se activa, la mezcla devuelve todas las etapas a sus valores predeterminados y se activa, permitiendo que los ataques vuelvan a producirse. Se comporta de forma similar a la reactivación de una envolvente. |
Los botones de perfil de mezcla que se encuentran en el panel Detalles Detalles de mezcla de bus de control son útiles para ajustar y probar la mezcla en Reproducir en el editor (PIE) en tiempo real. Sin embargo, la implementación final del control de mezcla debe realizarse en Blueprint.
Se han actualizado las propiedades de las mezclas de bus de control, y algunas funciones relacionadas con estas tienen entradas para las nuevas variables Duración y Volver a activar al activarse:
Parches de parámetros
Los parches de parámetros son conectores y moduladores híbridos que resultan útiles principalmente de dos maneras:
Transforman uno o más valores del bus de control en un único valor de salida.
Puedes usarlos para personalizar las curvas de valores del bus de control, lo que resulta útil para reasignar valores y crear distintos efectos de fundido.
Asignar un parche de parámetros con varios buses de control a un destino de modulación es funcionalmente similar a configurar cada uno de esos buses de control al destino de modulación de forma individual.
Propiedades del parche de parámetros
| Propiedad | Descripción |
|---|---|
Omitir | Si está habilitado, el parche envía el valor predeterminado del parámetro a cualquier destino de modulación conectado. El parche de parámetros permanece activo en cualquier caso. |
Parámetro | El parámetro de modulación que determina cómo se mezclan los buses de control (en las entradas). |
Entradas | Una matriz de referencias de bus de control e información de transformación asociada. La salida de cada una de estas entradas se mezcla usando la función de mezcla del parche de parámetros de modulación. Si no hay buses de control en la matriz, el parche envía el valor predeterminado del parámetro a los destinos de modulación conectados. |
Entradas > Muestrear y mantener | Si está habilitado, almacena el valor del bus de control cuando se inicializa el parche de parámetros y lo mantiene durante toda la vida útil del parche. |
Entradas > Tipo de curva | La curva que se aplicará al reasignar los valores normalizados del bus de control [0.0 - 1.0]. Las opciones incluyen:
|
Entradas > Bus | El bus de control de entrada. |
Generadores de modulación
Los generadores de modulación son conectores y moduladores híbridos que generan valores a lo largo del tiempo. Puedes modularlos ajustando las propiedades del bus de control o del destino de modulación.
El complemento incluye implementaciones para los siguientes tipos:
Oscilador de baja frecuencia (LFO): genera valores basados en las oscilaciones de un tipo de onda determinado, como sinusoidal o cuadrada.
Seguidor de envolvente: genera valores basados en la amplitud de un bus de audio determinado.
Envolvente AD: genera valores basados en una envolvente de ataque y decaimiento determinada.
Cómo crear generadores de modulación personalizados
Puedes crear tus propios generadores de modulación con las plantillas de generación de código proporcionadas para la clase USoundModulationGenerator, que genera el código modelo necesario para crear y registrar un generador.
Para crear una clase USoundModulationGenerator, sigue estos pasos:
Selecciona Herramientas > Nueva clase de C++.
Selecciona Todas las clases en la ventana Elegir clase padre.
Selecciona SoundModulatorGenerator en SoundModulatorBase.
Debes implementar las siguientes funciones:
GetValue: se espera que devuelva un valor almacenado en caché, normalizado y sin unidades, comprendido entre 0.0 y 1.0. El valor se proporciona a los destinos de modulación en escucha.Update: se espera que implementes el cálculo del valor almacenado en caché del siguiente fotograma.
Opcionalmente, puedes implementar las siguientes funciones:
IsBypassed: se espera que devuelva un valor booleano en función de si el valor del generador debe incluirse en los cálculos del destino. Por defecto, reenvía el valor de la propiedadUSoundModulationGenerator Bypassgenerada al motor de audio de Unreal Engine.GetDebugValues: se espera que proporciones una matriz de cadenas por instancia del generador que se mostrará en tiempo de ejecución usando la familia de comandos de depuraciónau.Debug.SoundModulatorsen compilaciones no publicadas.GetDebugCategories: se espera que proporciones una matriz estática de nombres de campos correspondientes a los valores proporcionados por estos valores de instancia.
Para obtener más información, consulta la referencia de la API de C++ para Audio Modulation.
Destinos de modulación
Un destino de modulación es un punto final asociado a un objeto de audio que proporciona un valor flotante base (en las unidades indicadas) para que los recursos de Audio Modulation lo modulen.
Los siguientes objetos tienen destinos de modulación:
SoundWaves
Fuentes de MetaSound
Componentes de audio
Componentes de sintetizador
Clases de sonido
Submezclas
Efectos originales (solo BitCrusher y Chorus)
Puedes encontrar los destinos de modulación de cada objeto de audio compatible en su panel Detalles, en Modulación. Cada objeto muestra los tipos de destinos de modulación compatibles que determinan qué propiedad, como el volumen o el tono, se modula.
Para usar un destino de modulación, debes activar la casilla de verificación Modular asociada y, a continuación, añadir el conector que desees (bus de control, generador de modulación o parche de parámetros) a la matriz.
Opciones de enrutamiento del destino de modulación
Algunos destinos de modulación, como los de los componentes de audio, ofrecen opciones de enrutamiento basadas en la herencia. Un objeto hijo puede heredar el enrutamiento de la modulación de un objeto padre. En concreto, los componentes de audio pueden heredar elementos del recurso de sonido asociado, y los sonidos pueden heredar de la clase de sonido asociada.
| Opción de enrutamiento | Descripción |
|---|---|
Deshabilitar | Desactiva el enrutamiento de modulación. |
Heredar | Hereda el enrutamiento de modulación del objeto padre. Esta opción es la predeterminada, ya que las clases de sonido son el lugar más habitual para configurar la modulación. |
Anular | Anula el enrutamiento de la modulación del objeto padre con la configuración especificada. |
Union | Usa el enrutamiento de modulación heredado del objeto padre y la configuración indicada. Si ambos conjuntos contienen el mismo modulador, solo se calcula una vez. |
Integración con MetaSounds
El complemento Audio Modulation cuenta con los siguientes nodos de MetaSound:
Get Modulator Value: devuelve el valor del modulador indicado, ya sea normalizado o expresado en espacio unitario.
Mix Modulators: devuelve un valor de parámetro mixto entre dos moduladores específicos, ya sea normalizado o en espacio unitario.
Para obtener más información sobre el sistema de MetaSound, consulta la documentación al respecto.
Audio Modulation y simultaneidad
Hay una CVAR disponible que permite que la modulación de volumen de las fuentes afecte a la opción Detener el más silencioso en Simultaneidad. Se denomina:
au.Concurrency.IncludeVolumeModulation
Para acceder al menú, haz doble clic en el recurso Simultaneidad, en la pestaña Simultaneidad, debajo de Regla de resolución.
Cuando se establece en 0, la modulación de volumen no se incluye en la evaluación de la simultaneidad.
Cuando se establece en 1, se incluye la modulación de volumen para los sonidos individuales, pero no para los sonidos en bucle.
Cuando se establece en 2, se incluye la modulación de volumen para todos los sonidos.
Resumen de la API de Blueprint
Con Blueprint, puedes crear y controlar tu canalización de modulación de forma dinámica y usarla para controlar otros sistemas, como la jugabilidad o los efectos visuales.
La mayoría de las funciones de Blueprint relacionadas con Audio Modulation se encuentran en Audio > Modulación. Consulta la siguiente tabla para obtener una descripción general de las funciones.
| Función | Variantes | Descripción |
|---|---|---|
Activar… | Mezcla de bus de control | Activa el objeto proporcionado. |
Borrar… | Todos los valores de mezcla del bus de control global, Valor de mezcla del bus de control global, Modulador | Restablece/desvincula los parámetros del bus proporcionados a sus valores predeterminados. |
Crear… | Generador de envolventes AD, Bus de control, Mezcla de bus de control, Etapa de mezcla de bus de control, Generador de seguidores de envolvente, Generador LFO, Destino del modulador, Destino de modulación | Crea un objeto con los valores predeterminados proporcionados. Para el destino de modulación, los buses de control y los generadores cuentan sus destinos, por lo que este objeto se convierte en una de las referencias. Los buses de control y los generadores solo están activos si el recuento de referencias es mayor que 0. |
Desactivar… | Todas las mezclas de bus de control, Mezcla de bus de control | Desactiva el objeto proporcionado. |
Obtener modulador | N/D | Obtiene el modulador del destino de modulación indicado. |
Get Modulator Value | N/D | Obtiene el valor normalizado del modulador indicado. |
Obtener moduladores del destino | N/D | Obtiene la lista de moduladores que se aplican actualmente a un destino de modulación. |
Obtener valor del modulador observado | N/D | Obtiene el valor del modulador observado del objeto de destino de modulación indicado. |
Está activa la mezcla de bus de control | N/D | Comprueba si la mezcla de bus de control indicada está activa. |
Cargar mezcla de bus de control desde el perfil | N/D | Carga la mezcla de bus de control de un perfil en la definición de mezcla de UObject, deserializada desde un archivo |
Guardar mezcla de bus de control en el perfil | N/D | Guarda una mezcla de bus de control en un perfil serializado en un archivo |
Establecer… | Mezcla de bus de control, Mezcla de bus de control mediante filtro, Valor de mezcla del bus de control global, Modulador observado | Establece las propiedades del objeto proporcionado. Con Set Control Bus Mix By Filter, puedes usar un filtrado de direcciones estilo OSC. |
Actualizar… | Mezcla de bus de control, Modulador | Confirma las actualizaciones del objeto proporcionado en el subproceso de audio. |
Añadir enrutamiento de modulación | N/D | Añade el conjunto de moduladores indicado al componente de audio. Esto realiza una unión lógica, por lo que no se añadirán moduladores duplicados. Para sobrescribir por completo la configuración existente, utiliza Establecer enrutamiento de modulación. |
Eliminar enrutamiento de modulación | N/D | Elimina el conjunto de moduladores indicado del componente de audio. Esto realiza una resta lógica de los conjuntos, por lo que los moduladores que no estén en el conjunto especificado permanecerán. |
También hay funciones útiles fuera del grupo Audio > Modulación. En concreto, las funciones Obtener moduladores y Establecer enrutamiento de modulación proporcionan sobrecargas para el componente de audio y el componente de sintetizador, y se pueden utilziar para obtener o establecer los destinos de modulación de un componente.
Para obtener más información, consulta la referencia de la API de Blueprint para Audio Modulation.
Acerca de los UObjects y los proxies
Cuando se trabaja con componentes y recursos de Audio Modulation, normalmente se editan los valores de UObject. Sin embargo, Audio Modulation no utiliza directamente UObjects para el procesamiento por dos motivos.
Los UObjects se ejecutan en el subproceso de juego.
Los UObjects pueden ser eliminados por el recolector de basura en momentos que escapan al control del sistema de modulación de audio.
Como resultado, los valores establecidos en UObjects se envían a los objetos del sistema de modulación de audio en el subproceso de renderizado de audio. Es importante recordar esto porque algunas funciones de Blueprint editan el UObject, y otras modifican el objeto proxy en el sistema de modulación de audio.
Cuando una función solo modifica el valor de UObject, es necesario llamar a una función de Blueprint Update para enviar esos cambios al proxy. Además, si se llama a una función que no modifica el valor de UObject y luego a una función para actualizar el proxy, el valor de UObject sobrescribirá el proxy.
Aunque Audio Modulation se ejecuta en el subproceso de renderizado de audio, lo hace a una tasa de bloqueo en lugar de a una tasa de muestreo.