aspose file tools*
The moose likes Java in General and the fly likes Sounds Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Sounds" Watch "Sounds" New topic
Author

Sounds

colin shuker
Ranch Hand

Joined: Apr 11, 2005
Posts: 744
Hi,

Couldn't find a section for this to go in, so I chose this one.
I play sounds using the following code:


To stop the sound (where AS is the object from above), I do...


This works, but after pressing stop, the sound continues for about another second, before it comes to an end.
The point is, I want to trigger another sound after closing this one, and at the moment, when I stop first sound it continues slightly, but the second sound starts as soon as I press the stop button to close first, so there is a small overlap in the sounds.

I'm not totally sure why this happens, I think it reads in so many bytes at a time, then plays them.

Is there anyway to stop this? I considered using a SwingTimer, put onto 1 second, so the second sound, waits a second, giving no overlap.
But I don't really like this, I would rather stop first sound dead if possible.

Can anyone help? Thanks
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19760
    
  20

You could (perhaps even should*) switch to the Java Media Framework.
This includes a class called Player which can also play media files - not only sounds but some movies as well. To these players you can attach ControllerListeners - with these you can find exactly find out when a piece of music ends. Using this I even wrote a multi-player, a class that can play multiple sounds one after another. You create players using the Manager class.

The only real tricky part is that each piece of music has to be realized first, then prefetched, and only then it can be played.

Check out http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/


* When I load the AudioPlayer class I get a warning it may be removed in the future. You shouldn't use classes from com.sun.*, sun.* and sunw.* packages because these are only there for internal use of the JRE. There is a reason these aren't documented.
[ October 22, 2007: Message edited by: Rob Prime ]

SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
colin shuker
Ranch Hand

Joined: Apr 11, 2005
Posts: 744
Thanks, so the JMF isn't part of suns JDK?

How can I install this package?
Also, I'm building an application that needs to be distributed
to people by download, the JMF would cause a problem wouldn't it?

I basically just want to play wav files in an application, and I'd like to bundle everything into a JAR file, with a couple of external folders for images, do you think JMF could be a problem for other users, if they are not java knowledgable?

Thanks for any help.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19760
    
  20

Distributing JMF with your Java software
Sun Microsystems allows vendors to distribute JMF 2.1.1e with their Java software, as long as their software uses JMF 2.1.1e and provided they follow the terms of the JMF 2.1.1e Binary Code License agreement. This document uses the term "vendors" to refer to licensees, developers, and independent software vendors (ISVs) who license and distribute the JMF with their Java programs.

You should check out that Binary Code License agreement, but it may allow you to put the JMF classes inside your JAR file as well, or link to the JMF JARs from your JAR (using the Class-Path MANIFEST directive).
colin shuker
Ranch Hand

Joined: Apr 11, 2005
Posts: 744
Thanks, is there any simple tutorial I can use to start.
Would you recommendweb page

Any way, I installed JMF2.1.1e, then inside Eclipse, I went to the project on the filesystem, 'Configure Build Path'-> then added external jmf.jar thats inside the lib folder of JMF2.1.1e

Then I tried out a wav file, and it worked.
I just tried an mp3 file, and that worked too, so far so good.

But thinking ahead, is it possible to include this jar file in the jar file for the project, so I can basically give the project to a user who has jdk1.4 or higher, and they can play sounds without having to configure anything?

Thanks very much
[ October 22, 2007: Message edited by: colin shuker ]
colin shuker
Ranch Hand

Joined: Apr 11, 2005
Posts: 744
OK, I exported the whole project including the jmf.jar to a jar on me desktop.
The project.jar file worked fine, and the sound played.
If I uninstall the JMF2.1.1e software, and retry the project.jar, it no longer works,

So for a different user on a pc, would they also be required to install JMF2.1.1e so that the project.jar file can then play the sound?

Thanks
[ October 22, 2007: Message edited by: colin shuker ]
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19760
    
  20

Well they could, but if the license allows it, you can unzip the jmf JAR file, then add its contents and the jmf.properties file to your own JAR file (the properties file goes in the root of the JAR).

It may be possible though that you need some of the other JMF JAR files too - include their contents as well.
colin shuker
Ranch Hand

Joined: Apr 11, 2005
Posts: 744
Thanks,

currently what I do is, grab the jmf.jar file from the lib directory,

Within Eclipse, I add it (as a jar file) to the Build Path of project, along with...
JRE System Library [j2sdk1.4.2_14].

When I jar the project and run it, the sounds play, but uninstalling JMF2.1.1e, and running the project, there is no sound.

I've taken a look at the lib directory of JMF2.1.1e, it contains the following jars:
jmf.jar
customizer.jar
mediaplayer.jar
multiplayer.jar
sound.jar

As well as 3 other files...
jmf.properties
jmf.properties.orig
soundbank.gm

I've tried adding all these jars to the Build Path ,and placing jmf.properties at the root of the project, but if I uninstall JMF2.1.1e, then program doesn't run at all, from eclipse IDE, or from jar file of project.

Perhaps only way is for user to install the JMF2.1.1e
I'm not sure, doesn't seem to be much internet information available on this.

Thanks
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Sounds