SFML 2: Sonidos y música

SFML 2: Sonidos y música
Sin comentarios Facebook Twitter Flipboard E-mail

En esta ocasión vamos a repasarlos conceptos de la biblioteca SFML 2 dedicados al menejo del sonido y de la música. Trataremos las diferencias entre uno y otro y como se manejas desde SFML 2.

Sonidos

Un sonido SFML lo interpreta como algo que "suena" en un determinado momento como un choque, el disparo de un proyectil o unos pasos. Los sonidos funcionan de la misma manera que las texturas y los sprites y las fuentes y los textos. Se carga un recurso en este caso un SoundBuffer y se crea un objeto que los usa un Sound, pueden existir muchos Sound que usen el mismo SoundBuffer a diferente volumen, frecuencia etc.

Música

Lá música al contrario de los sonidos están pensada para sonar a lo largo del tiempo y no como algo puntal, al contrario que los sonidos no se carga en memoria sino que se reproduce a través de stream desde el fichero en la memoria secundaria.

Como siempre lo mejor es ver un ejemplo de uso.

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
int main()
{
// Crea una ventana de 640x480x32 con el título SFML window
sf::RenderWindow window(sf::VideoMode(640, 480, 32), "SFML window");
// Activa la sincronización vertical (60 fps)
window.setVerticalSyncEnabled(true);
// Creamos un SoundBuffer para almacenar un sonio
sf::SoundBuffer buffer;
// Cargamos un archivo en el buffer
if (!buffer.loadFromFile("data/sonido.ogg"))
{
return EXIT_FAILURE;
}
// Creamos un sonido
sf::Sound sonido;
// Le asignamos el buffer cargado
sonido.setBuffer(buffer);
// establecemos el volumen a 80
sonido.setVolume(80);
// Creamos un objeto música
sf::Music musica;
// Abrimos el fichero de música que queremos reproducir
musica.openFromFile("data/musica.ogg");
// Activamos el loop cuando acabe empezará de nuevo
musica.setLoop(true);
// Empezamos a reproducir nuesta música
musica.play();
// Game Loop mientras la ventana esté abierta
while (window.isOpen())
{
// Creamos un objeto evento
sf::Event event;
// Procesamos la pila de eventos
while (window.pollEvent(event))
{
// Si el evento es de tipo Closed cerramos la ventana
if (event.type == sf::Event::Closed)
window.close();
// Si pulsamos la tecla espacio que se reproduzca el sonido
else if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space)
{
sonido.play();
}
}
// Limpiamos la pantalla
window.clear(sf::Color(180, 200, 255));
// Actualizamos la ventana
window.display();
}
return 0;
}
view raw sfml_audio.cpp hosted with ❤ by GitHub

Al ejecutar empezará a sonar la música y al pulsar la barra espaciadora sonará nuestro sonido.

Con esto terminamos el repaso general al SFML 2, en el próximo artículo crearemos el juego del Pong entero para poner en práctica lo visto en estos artículos.

En Genbeta Dev | Artículos anteriores de SFML 2 Más información | Documentación de SFML 2

Comentarios cerrados
Inicio
×

Utilizamos cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información