102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
// Headers
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
#include <SFML/Audio.hpp>
 | 
						|
#include <iostream>
 | 
						|
#include <string>
 | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
/// Play a sound
 | 
						|
///
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
void playSound()
 | 
						|
{
 | 
						|
    // Load a sound buffer from a wav file
 | 
						|
    sf::SoundBuffer buffer;
 | 
						|
    if (!buffer.loadFromFile("resources/canary.wav"))
 | 
						|
        return;
 | 
						|
 | 
						|
    // Display sound informations
 | 
						|
    std::cout << "canary.wav:" << std::endl;
 | 
						|
    std::cout << " " << buffer.getDuration().asSeconds() << " seconds"       << std::endl;
 | 
						|
    std::cout << " " << buffer.getSampleRate()           << " samples / sec" << std::endl;
 | 
						|
    std::cout << " " << buffer.getChannelCount()         << " channels"      << std::endl;
 | 
						|
 | 
						|
    // Create a sound instance and play it
 | 
						|
    sf::Sound sound(buffer);
 | 
						|
    sound.play();
 | 
						|
 | 
						|
    // Loop while the sound is playing
 | 
						|
    while (sound.getStatus() == sf::Sound::Playing)
 | 
						|
    {
 | 
						|
        // Leave some CPU time for other processes
 | 
						|
        sf::sleep(sf::milliseconds(100));
 | 
						|
 | 
						|
        // Display the playing position
 | 
						|
        std::cout << "\rPlaying... " << sound.getPlayingOffset().asSeconds() << " sec        ";
 | 
						|
        std::cout << std::flush;
 | 
						|
    }
 | 
						|
    std::cout << std::endl << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
/// Play a music
 | 
						|
///
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
void playMusic(const std::string& filename)
 | 
						|
{
 | 
						|
    // Load an ogg music file
 | 
						|
    sf::Music music;
 | 
						|
    if (!music.openFromFile("resources/" + filename))
 | 
						|
        return;
 | 
						|
 | 
						|
    // Display music informations
 | 
						|
    std::cout << filename << ":" << std::endl;
 | 
						|
    std::cout << " " << music.getDuration().asSeconds() << " seconds"       << std::endl;
 | 
						|
    std::cout << " " << music.getSampleRate()           << " samples / sec" << std::endl;
 | 
						|
    std::cout << " " << music.getChannelCount()         << " channels"      << std::endl;
 | 
						|
 | 
						|
    // Play it
 | 
						|
    music.play();
 | 
						|
 | 
						|
    // Loop while the music is playing
 | 
						|
    while (music.getStatus() == sf::Music::Playing)
 | 
						|
    {
 | 
						|
        // Leave some CPU time for other processes
 | 
						|
        sf::sleep(sf::milliseconds(100));
 | 
						|
 | 
						|
        // Display the playing position
 | 
						|
        std::cout << "\rPlaying... " << music.getPlayingOffset().asSeconds() << " sec        ";
 | 
						|
        std::cout << std::flush;
 | 
						|
    }
 | 
						|
    std::cout << std::endl << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
/// Entry point of application
 | 
						|
///
 | 
						|
/// \return Application exit code
 | 
						|
///
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
int main()
 | 
						|
{
 | 
						|
    // Play a sound
 | 
						|
    playSound();
 | 
						|
 | 
						|
    // Play music from an ogg file
 | 
						|
    playMusic("orchestral.ogg");
 | 
						|
 | 
						|
    // Play music from a flac file
 | 
						|
    playMusic("ding.flac");
 | 
						|
 | 
						|
    // Wait until the user presses 'enter' key
 | 
						|
    std::cout << "Press enter to exit..." << std::endl;
 | 
						|
    std::cin.ignore(10000, '\n');
 | 
						|
 | 
						|
    return EXIT_SUCCESS;
 | 
						|
}
 |