• 0

[JAVA] Sound


Question

Hi guys,

Below is a code that i use to play sound

bf = new BufferedInputStream(KeySchedulingScreen.class.getResourceAsStream(filename));

ais = AudioSystem.getAudioInputStream(bf);

AudioFormat format = ais.getFormat();

if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED)

{

format = new AudioFormat(

AudioFormat.Encoding.PCM_SIGNED,

format.getSampleRate(),

format.getSampleSizeInBits()*2,

format.getChannels(),

format.getFrameSize()*2,

format.getFrameRate(),

true); // big endian

ais = AudioSystem.getAudioInputStream(format, ais);

}

// Create the clip

DataLine.Info info = new DataLine.Info(

Clip.class, ais.getFormat(), ((int)ais.getFrameLength()*format.getFrameSize()));

Clip clip = (Clip) AudioSystem.getLine(info);

// This method does not return until the audio file is completely loaded

clip.open(ais);

// Start playing

clip.start();

This code works fine on windows. But when i try on my mac. It gave me an exception.

java.lang.IllegalArgumentException: No line matching interface Clip supporting format PCM_SIGNED 44100.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian, and buffers of 9838592 to 9838592 bytes is supported.

The line in bold is the line that is throwing that error.

Any idea how to solve ?

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Unfortunately (and somebody correct me if I'm wrong), but I read somewhere that JavaSound is completely implemented for Mac OSX. This doesn't do well for the cross-platform ideals of Java. The options are:

Quicktime

CoreAudio

Native bindings to CoreAudio in Java.

Sorry I couldn't be much help

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/#findComment-589701086
Share on other sites

  • 0

Sun seem to think that JavaSound is a core API and should be completely cross-platform. They even use it as the demo app in the following x-platform tutorial http://java.sun.com/developer/technicalArt...aLP/JavaToMac3/

Do you get the same error regardless of what (kind of) file you try to play, or is it just one (type of) file?

+Antaris: Is there a typo in your post?

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/#findComment-589701840
Share on other sites

  • 0
AudioStream as = new AudioStream(myClass.class.getResourceAsStream("Sound/cow.wav"));

AudioPlayer.player.start(as);

The above code works for both MAC and Windows. But when compiled, it gave me warnings.

sun.audio.AudioStream is Sun proprietary API and may be removed in a future release

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/#findComment-589704212
Share on other sites

  • 0

Hmn.. kjordan, i was previously using JMF but i could not access resources in my jar file using JMF.

mPlayer = Manager.createPlayer(myClass.class.getResource("Sound/cow.wav"));

mPlayer.start();

The above code works if my SOUND folder with cow.wav in it is at the root folder. But if i package the Sound folder in a jar and correctly pointing it, i get a exception saying cannot find a player for that stream

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/#findComment-589709850
Share on other sites

  • 0
The above code works if my SOUND folder with cow.wav in it is at the root folder. But if i package the Sound folder in a jar and correctly pointing it, i get a exception saying cannot find a player for that stream

Folder and file names seem to be case sensitive when getting resources from a jar.

Link to comment
https://www.neowin.net/forum/topic/662026-java-sound/#findComment-589713536
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.