diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/AudioFilePlayer.java | 96 | ||||
| -rw-r--r-- | src/sound/AudioFilePlayer.java | 197 | ||||
| -rw-r--r-- | src/sound/ShortAudioPlayer.java | 103 | 
3 files changed, 300 insertions, 96 deletions
diff --git a/src/main/AudioFilePlayer.java b/src/main/AudioFilePlayer.java deleted file mode 100644 index c3b9728..0000000 --- a/src/main/AudioFilePlayer.java +++ /dev/null @@ -1,96 +0,0 @@ -package main; -//Java program to play audio files. imports file scanning and various  -//methods from the java audio class in order to do so. -import java.io.File; -import java.io.IOException; -  -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Clip; -import javax.sound.sampled.DataLine; -import javax.sound.sampled.LineEvent; -import javax.sound.sampled.LineListener; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.UnsupportedAudioFileException; - -public class AudioFilePlayer implements LineListener -{ -    //indicates whether the playback completes or not -    boolean playCompleted; -    Clip audioClip; -     -    public void play(String audioFilePath) -    { -        File audioFile = new File(audioFilePath); -         -        try -        { -            //creates an audioInput object using the file we -            //declared earlier -            AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile); -             -            //gets the format of the audioStream object -            AudioFormat format = audioStream.getFormat(); -             -            DataLine.Info info = new DataLine.Info(Clip.class, format); -             -            audioClip = (Clip) AudioSystem.getLine(info); -  -            audioClip.addLineListener(this); -  -            audioClip.open(audioStream); -              -            audioClip.start(); -              -            while (!playCompleted)  -            { -                // wait for the playback to complete -                try  -                { -                    Thread.sleep(1000); -                }  -                catch (InterruptedException ex)  -                { -                    ex.printStackTrace(); -                } -            }     -            audioClip.close(); //stops the audio clip   -        } -        catch (UnsupportedAudioFileException ex)  -        { -            System.out.println("The specified audio file is not supported."); -            ex.printStackTrace(); -        } -        catch (LineUnavailableException ex)  -        { -            System.out.println("Audio line for playing back is unavailable."); -            ex.printStackTrace(); -        }  -        catch (IOException ex)  -        { -            System.out.println("Error playing the audio file."); -            ex.printStackTrace(); -        } -    } -     -     -    /** -     * Listens to the START and STOP events of the audio line. -     */ -    @Override -    public void update(LineEvent event)  -    { -        LineEvent.Type type = event.getType(); -          -        if (type == LineEvent.Type.START)  -        { -            System.out.println("Playback started.");         -        }  -        else if (type == LineEvent.Type.STOP)  -        { -            playCompleted = true; -            System.out.println("Playback completed."); -        } -    }    -} diff --git a/src/sound/AudioFilePlayer.java b/src/sound/AudioFilePlayer.java new file mode 100644 index 0000000..06f728b --- /dev/null +++ b/src/sound/AudioFilePlayer.java @@ -0,0 +1,197 @@ +/*Name:	 + *Date: + *Period: + *Teacher: + *Description: + */ +package sound; +//Java program to play audio files. imports file scanning and various  +//methods from the java audio class in order to do so. +import java.io.File; +import java.io.IOException; +import java.util.Scanner; +   +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class AudioFilePlayer  +{ +   +    // to store current position +    Long currentFrame; +    Clip clip; +       +    // current status of clip +    String status; +       +    AudioInputStream audioInputStream; +    static String filePath; +   +    // constructor to initialize streams and clip +    public AudioFilePlayer() throws UnsupportedAudioFileException, +    IOException, LineUnavailableException  +    { +        // create AudioInputStream object +        audioInputStream =  +                AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile()); +           +        // create clip reference +        clip = AudioSystem.getClip(); +           +        // open audioInputStream to the clip +        clip.open(audioInputStream); +           +        clip.loop(Clip.LOOP_CONTINUOUSLY); +    } +   +    public static void main(String[] args)  +    { +        try  +        { +            filePath = "GH3Intro.wav"; +            AudioFilePlayer audioPlayer = new AudioFilePlayer(); +               +            audioPlayer.play(); +            Scanner sc = new Scanner(System.in); +               +            while (true) //until the thread closes, ask the user what they want to do with the audio file +            { +                System.out.println("1. pause"); +                System.out.println("2. resume"); +                System.out.println("3. restart"); +                System.out.println("4. stop"); +                System.out.println("5. Jump to specific time"); +                int c = sc.nextInt(); +                audioPlayer.gotoChoice(c); +                if (c == 4) +                break; +            } +            sc.close(); +        }  +           +        catch (Exception ex)  +        { +            System.out.println("Error with playing sound."); +            ex.printStackTrace(); +           +          } +    } +       +    // Work as the user enters his choice +       +    private void gotoChoice(int c)throws IOException, LineUnavailableException, UnsupportedAudioFileException  +    { +        //reads the users input and chooses what to do based on said input +        switch (c)  +        { +            case 1: +                pause(); +                break; +            case 2: +                resumeAudio(); +                break; +            case 3: +                restart(); +                break; +            case 4: +                stop(); +                break; +            case 5: +                System.out.println("Enter time (" + 0 +  +                ", " + clip.getMicrosecondLength() + ")"); +                Scanner sc = new Scanner(System.in); +                long c1 = sc.nextLong(); +                jump(c1); +                break; +       +        } +       +    } +       +    // Method to play the audio +    public void play()  +    { +        //start the clip +        clip.start(); +           +        status = "play"; +    } +       +    // Method to pause the audio +    public void pause()  +    { +        if (status.equals("paused"))  +        { +            System.out.println("audio is already paused"); +            return; +        } +        this.currentFrame = this.clip.getMicrosecondPosition(); +        clip.stop(); +        status = "paused"; +    } +       +    // Method to resume the audio +    public void resumeAudio() throws UnsupportedAudioFileException, +                                IOException, LineUnavailableException  +    { +        if (status.equals("play"))  +        { +            System.out.println("Audio is already "+ +            "being played"); +            return; +        } +        clip.close(); +        resetAudioStream(); +        clip.setMicrosecondPosition(currentFrame); +        this.play(); +    } +       +    // Method to restart the audio +    public void restart() throws IOException, LineUnavailableException, +                                            UnsupportedAudioFileException  +    { +        clip.stop(); +        clip.close(); +        resetAudioStream(); +        currentFrame = 0L; +        clip.setMicrosecondPosition(0); +        this.play(); +    } +       +    // Method to stop the audio +    public void stop() throws UnsupportedAudioFileException, +    IOException, LineUnavailableException  +    { +        currentFrame = 0L; +        clip.stop(); +        clip.close(); +    } +       +    // Method to jump over a specific part +    public void jump(long c) throws UnsupportedAudioFileException, IOException, +                                                        LineUnavailableException  +    { +        if (c > 0 && c < clip.getMicrosecondLength())  +        { +            clip.stop(); +            clip.close(); +            resetAudioStream(); +            currentFrame = c; +            clip.setMicrosecondPosition(c); +            this.play(); +        } +    } +       +    // Method to reset audio stream +    public void resetAudioStream() throws UnsupportedAudioFileException, IOException, LineUnavailableException  +    { +        audioInputStream = AudioSystem.getAudioInputStream( +        new File(filePath).getAbsoluteFile()); +        clip.open(audioInputStream); +        clip.loop(Clip.LOOP_CONTINUOUSLY); +    } +   +}
\ No newline at end of file diff --git a/src/sound/ShortAudioPlayer.java b/src/sound/ShortAudioPlayer.java new file mode 100644 index 0000000..ed3417b --- /dev/null +++ b/src/sound/ShortAudioPlayer.java @@ -0,0 +1,103 @@ +/*Name:	 + *Date: + *Period: + *Teacher: + *Description: + */ +package sound; + +  //Java program to play audio files. imports file scanning and various  +  //methods from the java audio class in order to do so. +  import java.io.File; +  import java.io.IOException; +    +  import javax.sound.sampled.AudioFormat; +  import javax.sound.sampled.AudioInputStream; +  import javax.sound.sampled.AudioSystem; +  import javax.sound.sampled.Clip; +  import javax.sound.sampled.DataLine; +  import javax.sound.sampled.LineEvent; +  import javax.sound.sampled.LineListener; +  import javax.sound.sampled.LineUnavailableException; +  import javax.sound.sampled.UnsupportedAudioFileException; + +  public class ShortAudioPlayer implements LineListener +  { +      //indicates whether the playback completes or not +      boolean playCompleted; +      Clip audioClip; +       +      public void play(String audioFilePath) +      { +          File audioFile = new File(audioFilePath); +           +          try +          { +              //creates an audioInput object using the file we +              //declared earlier +              AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile); +               +              //gets the format of the audioStream object +              AudioFormat format = audioStream.getFormat(); +               +              DataLine.Info info = new DataLine.Info(Clip.class, format); +               +              audioClip = (Clip) AudioSystem.getLine(info); +    +              audioClip.addLineListener(this); +    +              audioClip.open(audioStream); +                +              audioClip.start(); +                +              while (!playCompleted)  +              { +                  // wait for the playback to complete +                  try  +                  { +                      Thread.sleep(1000); +                  }  +                  catch (InterruptedException ex)  +                  { +                      ex.printStackTrace(); +                  } +              }     +              audioClip.close(); //stops the audio clip   +          } +          catch (UnsupportedAudioFileException ex)  +          { +              System.out.println("The specified audio file is not supported."); +              ex.printStackTrace(); +          } +          catch (LineUnavailableException ex)  +          { +              System.out.println("Audio line for playing back is unavailable."); +              ex.printStackTrace(); +          }  +          catch (IOException ex)  +          { +              System.out.println("Error playing the audio file."); +              ex.printStackTrace(); +          } +      } +       +       +      /** +       * Listens to the START and STOP events of the audio line. +       */ +      @Override +      public void update(LineEvent event)  +      { +          LineEvent.Type type = event.getType(); +            +          if (type == LineEvent.Type.START)  +          { +              System.out.println("Playback started.");         +          }  +          else if (type == LineEvent.Type.STOP)  +          { +              playCompleted = true; +              System.out.println("Playback completed."); +          } +      }    +  }  | 
