0

I was just wondering if it were possible to link a sound to an option selected in a scanner class in java? For example:

import java.util.*;
public class GameTest
{
    public static void main(String[] args)
    {
        Game myGame = new Game();
        Scanner myScanner = new Scanner(System.in);
        int size = 30;      
        boolean done = false;
        do
        {
            System.out.println("1. Add Person");
            System.out.println("2. Show Board");
            System.out.println("3. Show Next Generation");
            System.out.println("4. Clear Board");
            System.out.println("5. Exit");
            String answer = myScanner.nextLine();
            int option = Integer.parseInt(answer);
            if (option==1)
            {
            Blah, blah, blah
             }

if I select option #1 can I link a path to a sound on my C:????
I know I prob need to import something, and extend something.
Thanks,
James

3
Contributors
11
Replies
12
Views
7 Years
Discussion Span
Last Post by jamesonh20
Featured Replies
  • sure you can and folow how to: [CODE] Clip clickClip = AudioSystem.getClip(); /* Create a URL that points to our file */ File f=new File("C:/WINDOWS/Media/CHIMES.wav"); InputStream is=new FileInputStream(f); /* Open our is as an AudioStream */ AudioInputStream ais = AudioSystem.getAudioInputStream(is); /* Put out audio input stream into our clip */ … Read More

  • Yes: [CODE] import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; //AND TROW THOSE EXCEPTIONS import java.io.IOException; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; [/CODE] And throw the exceptions hope it helps. Read More

1

sure you can and folow how to:

Clip clickClip = AudioSystem.getClip();

/* Create a URL that points to our file */
File f=new File("C:/WINDOWS/Media/CHIMES.wav");
InputStream is=new FileInputStream(f);

/* Open our is as an AudioStream */
AudioInputStream ais = AudioSystem.getAudioInputStream(is);

/* Put out audio input stream into our clip */
clickClip.open(ais);

/* Play the clip */
clickClip.start();

Hope it helps.

0

sure you can and folow how to:

Clip clickClip = AudioSystem.getClip();

/* Create a URL that points to our file */
File f=new File("C:/WINDOWS/Media/CHIMES.wav");
InputStream is=new FileInputStream(f);

/* Open our is as an AudioStream */
AudioInputStream ais = AudioSystem.getAudioInputStream(is);

/* Put out audio input stream into our clip */
clickClip.open(ais);

/* Play the clip */
clickClip.start();

Hope it helps.

Thank YOU!! do I need to import anything to make it work?

0

You could also create your own class that mimics the Scanner class's functionality; you'd basically include a constructor that takes a File Object, and you'd implement your own next() methods, etc... in those methods you could call the Scanner methods and also implement your own custom functionality (calling the AudioClip)

1

Yes:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
//AND TROW THOSE EXCEPTIONS
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

And throw the exceptions
hope it helps.

0

So I was able to get the code to work THANK YOU! but when I try to play a 20kb zelda(video game theme sound).wav file it compiles but doesnt play...any thoughts? The system files play fine.

import java.io.*;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
//AND TROW THOSE EXCEPTIONS
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Sound
{
public void playSound()
{
try{
        Clip clickClip = AudioSystem.getClip(); 
 
        /* Create a URL that points to our file */
        File f=new File("C:/Users/caldwell44/Desktop/zelda_07");
        InputStream is=new FileInputStream(f);
        
        /* Open our is as an AudioStream */
        AudioInputStream ais = AudioSystem.getAudioInputStream(is);
        
        /* Put out audio input stream into our clip */
        clickClip.open(ais);
        
        /* Play the clip */
        clickClip.start();

    }
        catch(LineUnavailableException e){}
        catch(FileNotFoundException e){}
        catch(UnsupportedAudioFileException e){}
        catch(java.io.IOException e){}
}

Thanks for all the help guys!
james

0

So I was able to get the code to work THANK YOU! but when I try to play a 20kb zelda(video game theme sound).wav file it compiles but doesnt play...any thoughts? The system files play fine.

import java.io.*;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
//AND TROW THOSE EXCEPTIONS
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Sound
{
public void playSound()
{
try{
        Clip clickClip = AudioSystem.getClip(); 
 
        /* Create a URL that points to our file */
        File f=new File("C:/Users/caldwell44/Desktop/zelda_07");
        InputStream is=new FileInputStream(f);
        
        /* Open our is as an AudioStream */
        AudioInputStream ais = AudioSystem.getAudioInputStream(is);
        
        /* Put out audio input stream into our clip */
        clickClip.open(ais);
        
        /* Play the clip */
        clickClip.start();

    }
        catch(LineUnavailableException e){}
        catch(FileNotFoundException e){}
        catch(UnsupportedAudioFileException e){}
        catch(java.io.IOException e){}
}

Thanks for all the help guys!
james

ANSWERED MY QUESTION! apparently you can only play PCM .wav files! That was 2hr of my life i won't get back LOL!

0

Is there a way to make the scanner wait 5seconds before it executes the terminate code?

done=true;

I am trying to play a short sound but it terminates the program before it can fully play. Im assuming it would be in mill seconds.

0

Hi James;
I got some few questions:
id this constante a file or folder:

"C:/Users/caldwell44/Desktop/zelda_07"

In fact you should receive FileNotFoundException but you do not due to this:

catch(java.io.IOException e){);

You catch the exception without reacting.
try instead that:

catch(java.io.IOException e){System.out.println("IOException");}

and let me now.

hope it helps.

0

actually it works fine the way I have it, uhm when I use this last code you gave me it shows:
"java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at GameTest.main(GameTest.java:27)
"
at the bottom of BlueJ's scanner window while the game is running. Do you know how to pause the the termination command so that I can allow the "game over" screen to play its sound first?

else if(option==5)
            {
                //sound
                mySound.playGameOver();
                //I need to put code here to delay done=true for 5 seconds...
                done=true;
0

The file I was refering to in the "C:/Users/caldwell44/Desktop/zelda_07""C:/Users/caldwell44/Desktop/zelda_07"
was not in PCM .wav format so that is why it didn't play.
I am saving my Game of life program on my school's drive, that's why it looks the way it does. I have put mario .wav files to the different options that the user pics just as an added feature to the game.

0

Well the answer to my question of delaying code is as follows:

else if(option==5)
            {
                 mySound.playGameOver();
                 int t;
                    for(t=0; t<5; t++)
                    {
                        try
                          {
                            Thread.sleep(750);    //pauses done=true for +-750mill sec
                            }catch (InterruptedException ie){}
                    }
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.