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?

[Webinar] Streamline your web hosting managementRegister Today

x
 
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
[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

 
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
All Courses

From novice to tech pro — start learning today.