Beat_2_featured

en Tutoriales, UE4

UE4 Visualizador de pulso

Con este tutorial vamos a añadir un widget para monitorizar los pulsos que se produzcan en el reproductor que diseñamos para mostrar el espectro de frecuencias. Vamos a mejorar el visualizador añadiendo barras para los valores de la media y un selector de canciones también.

Parte 1: Configurando las rutas del proyecto
Parte 2: Usando la librería
Parte 3: Espectro de Frecuencias
Parte 4: Visualizador de espectro para UE4
Parte 5: Algoritmo detector de pulsos
Parte 6: Visualizador de pulso para UE4


Podemos comenzar añadiendo las llamadas a nuestra clase envoltorio AudioManager. La función que inicializa el detector de pulso va a calcular los limites de los rangos en los que vamos a buscar la presencia de pulso, para ello necesita que la información de la velocidad de muestreo este disponible, por lo tanto deberemos llamarla después de la función PlaySound. La función GetBeat será llamada en el Tick Event después del Update

AudioManager.h

1
2
3
4
5
6
7
public:
	...
	UFUNCTION(BlueprintCallable, Category = Init)
		void InitBeatDetector();		
	...
	UFUNCTION(BlueprintCallable, Category = Access)
		void GetBeat(TArray& frequencyValues, TArray& frequencyAverageValues, bool& isBass, bool& isLowM);

AudioManager.cpp

1
2
3
4
5
6
7
8
9
10
11
void UAudioManager::InitBeatDetector()
{
	return _soundManager->initializeBeatDetector();
}
 
void UAudioManager::GetBeat(TArray<float>& frequencyValues, TArray<float>& frequencyAverageValues, bool& isBass, bool& isLowM)
{
	frequencyValues.Init(0.0, 2);
	frequencyAverageValues.Init(0.0, 2);
	_soundManager->getBeat(frequencyValues.GetData(), frequencyAverageValues.GetData(), isBass, isLowM);
}

Blueprint

Para visualizar el pulso vamos a añadir un widget a nuestro reproductor
content_folder

Beat widget

Este widget aplica una animación en el valor de transparencia de la imagen de fondo, la cual será iniciada en el comienzo del pulso.
UI_Beat_widget
UI_beat_wanim
UI_Beat_flash

El ultimo paso es integra el pulso widget con el reproductor.
UI_Display_beat

La inicialización debe hacerse cada vez que una nueva canción es reproducida para actualizar la variable que contiene la velocidad de muestreo en el AudioManager
UI_Display_Play

Cuando un pulso es detectado necesitamos llamar al evento Flash del pulso widget correspondiente. Hemos añadido un espectro de 2 barras, justo encima de los pulso widgets, para monitorizar la media y el valor actual de los rangos que estamos comprobando, podemos actualizar sus valores en este punto también.
UI_Display_Update_beat

Podemos poner la llamada a GetBeat dentro de la función UpdateVisualizers , después del Update del AudioManager y las llamadas a GetSpectrum_.
UI_Display_Update
UI_player_tickEvent

Ahora ya teneos un reproductor con un visualizador del espectro de frecuencias asi como un monitor que muestra los pulsos en el rango de Graves y Medios-Graves.

youtube_beattracking

Tutorial files:

github

UE4 Project

Download

Download C++ Sources

Download

Download Blueprints


Ayudanos con este blog!

El último año he estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!


Escribe un comentario

Comentario

once − 5 =