How to play a sound in the shell ?

I have a very simple program running in the shell made in C++.

I want this program to be able to play a sound when I prees "s". how and what class should I include ?

cin >> option;
if(option=="s")
   //play the .wav or what ever format I can play in the shell....


Thank you.
digi_mindAsked:
Who is Participating?
 
stefan73Connect With a Mentor Commented:
#include <iostream>
#include <stdlib.h>
using namespace std;
main()
{
   system("start /usr/share/sounds/email.wav");
}
0
 
stefan73Commented:
Hi digi_mind,
The simplest way is

system("start your_wav.wav");

...this will be like a doubleclick on the wav in Explorer.

Cheers,
Stefan
0
 
digi_mindAuthor Commented:
Do I need to include some class to use "system" ? because so far I have a file called email.wav, but it is not working... have a look:

#include <iostream>
using namespace std;
main()
{
   system("start /usr/share/sounds/email.wav");
}
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
g0rathCommented:
For simple sounds...as in speaker beeps...

int main( int argc, char **argv )
{
      int i;

      for  (i=1; i < 5; i++)
              putchar(7);

      return 0;
}

for real audio as in .wav files or .mp3 files you need a library already built...
check out this one...writting in C++
http://osalp.sourceforge.net/

or use a cheater method...

fork() off a new process and call an already made audio program, and then when the child exists contil in your program....

#include <signal.h>
#include <iostream>
#define __USE_XOPEN 1
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
using namespace std;

int main( void )
{
   pid_t pid;
   int status, died;

   switch(pid=fork())
   {
       case -1: cout << "can't fork\n";
      exit(-1);
       case 0 : cout << "   I'm the child of PID " << getppid() << ".\n";
      cout << "   My PID is " <<  getpid() << endl;
      sleep(2);
      exit(3);
       default: cout << "I'm the parent.\n";
      cout << "My PID is " <<  getpid() << endl;
      // kill the child in 50% of runs
      if (pid & 1)
         kill(pid,SIGKILL);
      died= wait(&status);
      if(WIFEXITED(status))
         cout << "The child, pid=" << pid << ", has returned " << WEXITSTATUS(status) << endl;
      else
         cout << "The child process was sent a " << WTERMSIG(status) << " signal\n";
  }
   return 0;
}
0
 
g0rathCommented:
use the man pages there are your friend

man system

NAME
       system - execute a shell command

SYNOPSIS
       #include  <stdlib.h>

       int  system  (const  char  *  string);

it bascially does what I showed you above.....
0
 
stefan73Commented:
digi_mind,
Errm... Wrong implication - you don't need Windows to play .wav

use "apropos sound" to get the appropriate tool. I only have Solaris here :-/

Stefan
0
 
Karl Heinz KremerCommented:
If you have ALSA (and who doesn't these days :-) you can use the aplay command:

aplay /path/to/your/file.wav

0
 
Karl Heinz KremerCommented:
... and you would put this command into the system() function, or use the fork() example from above.
0
 
g0rathCommented:
or if mp3s then everyone should have mpg123
0
 
digi_mindAuthor Commented:
let me tell you all something... I never said windows. I said linux... no problem the code is so simple:

System("play music.wav");

Can I get my points refunded ?
0
 
g0rathCommented:
every one of these examples is for linux....by windows they were meaning a window manager? like gnome? etc....

the system() call was a suggestion from stefan73 by which you didn't know about it, hence your next question...and then you got the it correct but I would venture to guess that means that stefan73 deserves the points....every linux distro has different default progs installed so hence all the various system() suggestions

just my .6 cents
0
 
digi_mindAuthor Commented:
Yes, Stefan73 will get the points. Agree with your help. Thank you
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.