Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (602)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  (Slick2D) not enough sound channels  (Read 1084 times)
0 Members and 1 Guest are viewing this topic.
Offline DrewLols

Senior Devvie


Medals: 3
Projects: 1


Noob going through metamorphosis...


« Posted 2012-08-21 23:59:40 »

Apparently, Slick2D's sound class dynamically allocated sounds to channels.  When a channel is not available, the sound is not played.  The problem is, in a few cases, when I play one sound and then quickly try to play another sound, the second sound occasionally doesn't play.  I'm guessing that for whatever reason, there wasn't a channel to allocate the second sound to.  Is there any way to guarantee that sounds will play when using the Slick2D library?

Did you know that 90% of statistics are wrong?
Offline davedes
« Reply #1 - Posted 2012-08-22 00:19:17 »

How many sound sources is Slick initialized with on your system? It should print in the log. Slick tries to initialize 64 by default (which should be enough -- that many sounds simultaneously will probably sound like garbage, anyways).

I wonder if there is a bug in your code or in Slick's audio classes that is causing them to stop. It's unlikely that all your sources are playing at the exact same time, unless your system severely limits the max number of sources.

If you really do find that your game/application demands more simultaneous sounds, you pretty much have three options:

1. Request more sources -- you can set the max sources in Slick and re-init. This is likely the worst solution, since most computers max out at 64 or 32 sources, and you can't really expect your average user's sound card to do any better than that.

2. Mix all sources in software -- you are limited only by how much data you can mix without latency. This requires a fair amount of knowledge, although maybe TinySound (which is a software mixer) will be a good starting point.

3. Manage your sources based on priority, distance, and other attributes. For example, a speech dialog will not be interrupted by a subtle bird chirping in the distance (and the user won't notice if a gunshot interrupts a subtle bird chirp).

A while back (when I was first learning OpenAL) I wrote a simple extension for Slick which does just this. You specify what "layer" a sound would be (for e.g. SPEECH_LAYER, AMBIENT_LAYER, EFFECTS_LAYER) so that less important sounds will never cut off more important sounds. There is also some other controls (e.g. distance from player) that can affect a sound's priority. It was never really completed, and pretty messy compared to how I would do things these days.
Soundly - Sound Manager for Slick

Personally (if you actually need this feature) I'd recommend rolling your own audio manager -- it will teach you a lot about OpenAL and start getting you more comfortable with audio programming. Only, I wouldn't use Slick or its decoders as a base... Tongue

Offline DrewLols

Senior Devvie


Medals: 3
Projects: 1


Noob going through metamorphosis...


« Reply #2 - Posted 2012-08-22 00:45:10 »

Yeah, have exactly zero experience with openal.  Anyway, I found where the problem is.  I set it up so a particular sound won't play unless it is not already playing.  For instance, I would write:

if(!smashSound.playing())
    smashSound.play();

Problem is, whenever ANY sound plays, smashSound.playing() returns true...  Go figure...  Eh, I guess I can figure out a way to fix this without checking to see if a sound is playing.  It's just a little inconvenient.  I'll just work around it.  Thanks a bunch, though!

Did you know that 90% of statistics are wrong?
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (30 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (42 views)
2014-12-09 22:41:13

BurntPizza (76 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (51 views)
2014-12-03 16:27:13

CopyableCougar4 (49 views)
2014-11-29 21:32:03

toopeicgaming1999 (115 views)
2014-11-26 15:22:04

toopeicgaming1999 (103 views)
2014-11-26 15:20:36

toopeicgaming1999 (31 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!