Sorry for the bad code and English,
So I was testing out SFML Audio and I was trying to make an audio player, but It crashes while I tried to run it,
So basically it was supposed to play an audio file and play it. Also, there's another thing I'm having an issue with that is if the audio is paused it rewinds itself as though it has been stopped
No arguments were given in and it didn't print anything either it just crashed.
#include <windows.h>
#include <iostream>
#include <SFML/Audio.hpp>
#include <string>
#include <thread>
sf::Music audio_player;
bool looping = false;
/*
*
* audio_state = 2 // Playing
* audio_state = 1 // Paused
* audio_state = 0 // Stopped
*
*/
bool audio_playable() // Checks if the audio is either paused or stopped
{
if(audio_player.getStatus() == 0 ||
audio_player.getStatus() == 1 )
return true;
else return false;
}
void loop()
{
looping = true;
while(1)
{
if(GetKeyState('P') & 0x8000 && audio_player.getStatus() == 2)
{
audio_player.pause();
std::cout << "Paused\n";
}
if(GetKeyState('S') & 0x8000 && audio_player.getStatus() == 2)
{
audio_player.stop();
std::cout << "Stoped\n";
}
if(GetKeyState('L') & 0x8000 && audio_playable() )
{
audio_player.play();
std::cout << "Started\n";
}
if(GetKeyState(VK_ESCAPE) & 0x8000)
{
looping = false;
}
}
}
int main(int argc, char* argv[])
{
std::string file_name = ""; //Initialize the file location
if(argc < 1) // If there are no arguments like the file location ask for the file location
{
std::cout << "File Location: ";
std::cin >> file_name;
if(file_name == "")
{
std::cout << "File Location cannot be null" << std::endl;
main(argc, argv);
}
}
if(file_name == "")file_name = argv[1];
audio_player.openFromFile(file_name);
audio_player.play();
std::thread pauseFunc(loop); // new thread for the pause play function
while(looping)
{
}
return 0;
}