Email Updates RSS Subscribe

This blog is created and maintained by the technical team at Hook in an effort to preserve and share the insights and experience gained during the research and testing phases of our development process. Often, much of this information is lost or hidden once a project is completed. These articles aim to revisit, expand and/or review the concepts that seem worth exploring further. The site also serves as a platform for releasing tools developed internally to help streamline ad development.


Hook is a digital production company that develops interactive content for industry leading agencies and their brands. For more information visit



Posted on November 30th, 2009 by Chris

Sound is one of the areas in Flash that seems to cause the most frustration. The included sound classes are adequate for basic playback but don’t provide enough capability on their own for larger projects. The area we found to be most lacking is in organization and management of lots of sounds. In order to get the level of control we have needed for client projects we created our SoundManager system.

The SoundManager is a system designed to simplify working with sound in Flash.  SoundManager enables you to work with sound individually, in groups or globally. This makes dealing with large numbers of sounds much easier. SoundManager is built in Actionscript 3 and works with Flash Player 9 and above.

Getting Started

The 3 main classes are SMSound, SoundController and SoundManager. These provide you with the multiple levels of control. The system operates as a basic hierarchy with the SoundManager Singleton acting as the global sound control, and calling methods on its list of SoundControllers, which in turn call methods on their SMSounds. All of these objects can work together or individually. A SMSound can be created and used on its own. Likewise the SoundController does not need the SoundManager to function.

SMSound is an object that represents the actual sound object in the library. This manages the states and access to the embedded sound object. This wraps to provide easier control.  It is recommended that all SMSound objects be controlled through a SoundController.  However, SMSound objects can function on their own in a limited capacity.

SoundController is intended to manipulate individual SMSounds or groups of SMSounds. Each SoundController contains a list of SMSound objects that can be controlled. This provides the ability to controls groups of sounds.

SoundManager is the global controller for all sounds. The SoundManager is used to manage a list of SoundController objects. Methods called on the SoundManager will be applied to all of the contained SoundControllers.

SoundManager makes use of the Greensock Tweening Platform for fading effects. You can find documentation and licensing information for that here.

SoundManager currently supports the ability to set volume but not panning. That will be supported in a later version.

Here is a quick example of how to set up the system. More detailed examples are included below.

import com.jac.soundManager.ISMSound;
import com.jac.soundManager.SMSound;
import com.jac.soundManager.SoundController;
import com.jac.soundManager.SoundManager;
private var _soundManager:SoundManager = SoundManager.getInstance();
private var _soundController:SoundController;
private var _testSound:ISMSound;
//Make new SoundController to control the sound with..
_soundController = new SoundController("controller1");
//Add the new SoundController to the SoundManager for global control
//Create a new SMSound object to be controlled by _controller
_testSound = new SMSound("sound1", "cheer", true);
//Add the new sound to the SoundController
//Play a specific sound by ID with various options.
//To Play the entire controller you can use _soundController.PlayAllSounds()"sound1", SoundController.NO_VOLUME_CHANGE, 0, SoundController.AUTO_LOOP);

Code, documentation and examples can be found here.

This product is licensed under GPLv3.

1 Response to “SoundManager”
  1. Вежливые грузчики только здесь

Leave a Reply