Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
SoundManager Class Reference#include <SoundManager.h>
Detailed DescriptionProvides sound effects and caching services, as well as mixing buffers for the SoundPlay process.Provides easy methods for playing back sounds, either from files on the memory stick, or from dynamically generated buffers. You can chain playback commands so that when one sound finishes, another picks up automatically. This might be handy if, say, someone wants to write an MP3 player ;) The sounds would be too large to load into memory all at once, but you could load a block at a time and chain them so it seamlessly moves from one to the other. You can also preload sounds (loadFile()) before playing them (play() / playFile()) so there's no delay between requesting a sound and having it start playing while it is loaded from disk/memory stick. Just be sure to release the file (releaseFile()) again when you're done with it ;) All functions will attempt to lock the SoundManager. Remember, this is running in a shared memory region, accessible by the SoundPlay process and both the Main and Motion processes (so MotionCommands can play sounds!) One could be tempted to draw parallels to the MotionManager, and envision a system with SoundCommands that are handed over and can dynamically compute sound buffers as needed. If you have the time and inclination, the job's all yours... (Midi players, speech synthesizer, ...?)
Definition at line 58 of file SoundManager.h.
Member Typedef DocumentationThis is used for referring to sound data so you can start playing it or release it.
Definition at line 74 of file SoundManager.h.
This is for referring to instances of the play command so you can stop, pause, or monitor progress (later versions will send events upon completion).
Definition at line 79 of file SoundManager.h.
Member Enumeration DocumentationUsed to set the mode for mixing multiple sound channels. Feel free to add a higher quality mixer if you're an audiophile - I'm pretty new to sound processing
Definition at line 87 of file SoundManager.h. indicates how to handle channel overflow (trying to play more sounds than maximum number of mixing channels). See queue_mode
Definition at line 94 of file SoundManager.h.
Constructor & Destructor Documentation
constructor, should only be called by the receiving process (SoundPlay)
Definition at line 22 of file SoundManager.cc.
don't call
Member Function Documentation
Each process (except SoundPlay) needs to call this before it can send sounds to the SoundPlay process.
Definition at line 33 of file SoundManager.cc.
loads a wav file (if it matches Config::sound_config settings - can't do resampling yet) Since the SoundManager does the loading, if the same file is being played more than once, only once copy is stored in memory
Definition at line 57 of file SoundManager.cc. Referenced by chainFile(), Controller::DoStart(), LoadFile(), and playFile().
loads raw samples from a buffer (assumes matches Config::sound_config settings)
The sound data will be cached until release() is called a matching number of times. Definition at line 100 of file SoundManager.cc. Referenced by chainBuffer(), LoadBuffer(), loadFile(), and playBuffer().
Marks the sound buffer to be released after the last play command completes (or right now if not being played).
Definition at line 148 of file SoundManager.cc. Referenced by Controller::DoStop(), and ReleaseFile().
Marks the sound buffer to be released after the last play command completes (or right now if not being played).
Definition at line 154 of file SoundManager.cc. Referenced by endPlay(), Release(), releaseFile(), and stopPlay().
play a wav file (if it matches Config::sound_config settings - can't do resampling yet) Will do a call to loadFile() first, and then automatically release the sound again when complete.
Definition at line 200 of file SoundManager.cc. Referenced by chainFile(), ControlBase::doCancel(), ControlBase::doNextItem(), ControlBase::doPrevItem(), ControlBase::doReadStdIn(), WaypointWalkControl::WaypointEditControl::doSelect(), WaypointWalkControl::doSelect(), WalkCalibration::doSelect(), SensorObserverControl::doSelect(), EventLogger::doSelect(), ControlBase::doSelect(), SoundNode::DoStart(), WalkCalibration::err(), Transition::fire(), RandomTrans::fire(), PlayFile(), WalkCalibration::processEvent(), AutoGetupBehavior::processEvent(), TorqueCalibrate::record(), WalkControllerBehavior::runCommand(), UPennWalkControllerBehavior::runCommand(), RunSequenceControl< SequenceSize >::selectedFile(), PlaySoundControl::selectedFile(), LoadPostureControl::selectedFile(), ControlBase::setHilights(), EmergencyStopMC::setStopped(), WalkCalibration::takeInput(), TorqueCalibrate::TakeMeasurementControl::takeInput(), and TorqueCalibrate::TakeMeasurementControl::transition().
loads raw samples from a buffer (assumes buffer matches Config::sound_config settings) The sound data will be released after done playing Definition at line 213 of file SoundManager.cc. Referenced by chainBuffer(), PlayBuffer(), and SpeakerServer::QueueFrame().
plays a previously loaded buffer or file
Definition at line 225 of file SoundManager.cc. Referenced by chain(), Play(), playBuffer(), and playFile().
allows automatic queuing of sounds - good for dynamic sound sources! if you chain more than once to the same base, the new buffers are appended to the end of the chain - the new buffer doesn't replace the current chain
Definition at line 271 of file SoundManager.cc. Referenced by ChainFile().
allows automatic queuing of sounds - good for dynamic sound sources! if you chain more than once to the same base, the new buffers are appended to the end of the chain - the new buffer doesn't replace the current chain
Definition at line 291 of file SoundManager.cc. Referenced by ChainBuffer(), and SpeakerServer::QueueFrame().
allows automatic queuing of sounds - good for dynamic sound sources! if you chain more than once to the same base, the new buffers are appended to the end of the chain - the new buffer doesn't replace the current chain
Definition at line 311 of file SoundManager.cc. Referenced by Chain().
Lets you stop playback of all sounds.
Definition at line 326 of file SoundManager.cc. Referenced by SpeakerServer::DoStop(), endPlay(), SpeakerServer::QueueFrame(), PlaySoundControl::selectedFile(), SoundNode::stopPlay(), StopPlay(), and ~SoundManager().
Lets you resume playback.
Definition at line 368 of file SoundManager.cc. Referenced by ResumePlay().
Lets you control the maximum number of channels (currently playing sounds), method for mixing (applies when max_chan>1), and queuing method (for when overflow channels).
Definition at line 379 of file SoundManager.cc. Referenced by SetMode().
Gives the time until the sound finishes, in milliseconds. Subtract 32 to get guarranteed valid time for this ID.
You should be passing the beginning of a chain to get proper results... Definition at line 387 of file SoundManager.cc. Referenced by GetRemainTime(), and SpeakerServer::QueueFrame().
Copies the sound data to the specified memory buffer, ready to be passed to the system.
Definition at line 512 of file SoundManager.cc.
updates internal data structures on the SoundPlay side - you shouldn't be calling this
Definition at line 582 of file SoundManager.cc.
returns number of sounds currently playing
Definition at line 195 of file SoundManager.h. Referenced by GetNumPlaying().
return the next region serial number -- doesn't actually increment it though, repeated calls will return the same value until the value is actually used
Definition at line 198 of file SoundManager.h.
deprecated, use loadFile() (note first letter lower case)
Definition at line 811 of file SoundManager.cc.
deprecated, use loadBuffer() (note first letter lower case)
Definition at line 812 of file SoundManager.cc.
deprecated, use releaseFile() (note first letter lower case)
Definition at line 813 of file SoundManager.cc.
deprecated, use release() (note first letter lower case)
Definition at line 814 of file SoundManager.cc.
deprecated, use playFile() (note first letter lower case)
Definition at line 815 of file SoundManager.cc.
deprecated, use playBuffer() (note first letter lower case)
Definition at line 816 of file SoundManager.cc.
deprecated, use play() (note first letter lower case)
Definition at line 817 of file SoundManager.cc.
deprecated, use chainFile() (note first letter lower case)
Definition at line 818 of file SoundManager.cc.
deprecated, use chainBuffer() (note first letter lower case)
Definition at line 819 of file SoundManager.cc.
deprecated, use chain() (note first letter lower case)
Definition at line 820 of file SoundManager.cc.
deprecated, use stopPlay() (note first letter lower case)
Definition at line 821 of file SoundManager.cc.
deprecated, use stopPlay() (note first letter lower case)
Definition at line 822 of file SoundManager.cc.
deprecated, use pausePlay() (note first letter lower case)
Definition at line 823 of file SoundManager.cc.
deprecated, use resumePlay() (note first letter lower case)
Definition at line 824 of file SoundManager.cc.
deprecated, use setMode() (note first letter lower case)
Definition at line 825 of file SoundManager.cc.
deprecated, use getRemainTime() (note first letter lower case)
Definition at line 826 of file SoundManager.cc.
deprecated, use getNumPlaying() (note first letter lower case)
Definition at line 827 of file SoundManager.cc.
Mixes the channel into the buffer.
Definition at line 399 of file SoundManager.cc. Referenced by CopyTo().
Mixes the channel into the buffer additively. If mode is Quality, then the size of the buffer should be double the normal size. Definition at line 429 of file SoundManager.cc. Referenced by CopyTo().
Sets up a shared region to hold a sound - rounds to nearest page size.
Definition at line 648 of file SoundManager.cc. Referenced by loadBuffer(), play(), and release().
Looks to see if name matches any of the sounds in sndlist (converts to absolute path if not already).
Definition at line 667 of file SoundManager.cc. Referenced by loadFile(), and releaseFile().
selects which of the channels are actually to be mixed together, depending on queue_mode
Definition at line 683 of file SoundManager.cc. Referenced by CopyTo().
update the offsets of sounds which weren't mixed (when needed depending on queue_mode)
Definition at line 728 of file SoundManager.cc. Referenced by CopyTo().
called when a buffer end is reached, may reset buffer to next in chain, or just stopPlay()
Definition at line 776 of file SoundManager.cc. Referenced by mixChannel(), mixChannelAdditively(), selectChannels(), and updateChannels().
don't call
Member Data Documentation
for reporting errors
Definition at line 75 of file SoundManager.h. Referenced by chain(), chainBuffer(), chainFile(), loadBuffer(), loadFile(), lookupPath(), play(), playBuffer(), playFile(), and release().
the number of sounds that can be loaded at any given time
Definition at line 76 of file SoundManager.h.
for reporting errors
Definition at line 80 of file SoundManager.h. Referenced by chain(), chainBuffer(), chainFile(), SpeakerServer::DoStart(), SpeakerServer::DoStop(), endPlay(), getRemainTime(), pausePlay(), play(), playBuffer(), playFile(), SoundNode::processEvent(), SpeakerServer::QueueFrame(), resumePlay(), SoundNode::stopPlay(), and stopPlay().
the number of sounds that can be enqueued at the same time (see MixMode_t)
Definition at line 81 of file SoundManager.h.
maximum length of a path
Definition at line 83 of file SoundManager.h. Referenced by loadFile(), and lookupPath().
The intermediate mixer buffer used for Quality mode mixing.
Definition at line 232 of file SoundManager.h. Referenced by CopyTo(), and ~SoundManager().
Size (in bytes) of the intermediate mixer buffer.
Definition at line 235 of file SoundManager.h. Referenced by CopyTo().
Holds a list of all currently loaded sounds.
Definition at line 268 of file SoundManager.h. Referenced by endPlay(), getRemainTime(), loadBuffer(), loadFile(), lookupPath(), mixChannel(), mixChannelAdditively(), play(), playBuffer(), playFile(), ProcessMsg(), release(), selectChannels(), stopPlay(), updateChannels(), and ~SoundManager().
Holds a list of all sounds currently enqueued.
Definition at line 281 of file SoundManager.h. Referenced by chain(), chainBuffer(), chainFile(), endPlay(), getRemainTime(), mixChannel(), mixChannelAdditively(), play(), playBuffer(), playFile(), ProcessMsg(), selectChannels(), stopPlay(), and updateChannels().
Holds a list of all currently playing sounds, ordered newest (front) to oldest(back).
Definition at line 285 of file SoundManager.h. Referenced by CopyTo(), getNumPlaying(), pausePlay(), play(), resumePlay(), selectChannels(), stopPlay(), and updateChannels().
Current queuing mode, set by setMode();.
Definition at line 291 of file SoundManager.h. Referenced by selectChannels(), setMode(), and updateChannels().
Current maximum number of sounds to mix together.
Definition at line 294 of file SoundManager.h. Referenced by selectChannels(), and setMode().
Prevents multiple processes from accessing at the same time.
Definition at line 297 of file SoundManager.h. Referenced by CopyTo(), getRemainTime(), loadBuffer(), loadFile(), pausePlay(), play(), playBuffer(), playFile(), release(), releaseFile(), resumePlay(), setMode(), and stopPlay().
A serial number, incremented for each sound which is created. This is used to verify that a sound message from a process refers to a current sound. If you imaging a pathological process, which rapidly creates and releases sounds, it would run through the sndlist ids, possibly before the sound process can process the incoming buffers. So this is used to ensure that a given message refers to the current sound, and not one that was already released and then reassigned. Definition at line 307 of file SoundManager.h. Referenced by getNextKey(), initRegion(), and loadBuffer().
the size of a SoundManagerMsg, which is prefixed before each region sent/received by SoundManager (rounded up to nearest even word boundary)
Definition at line 310 of file SoundManager.h. Referenced by loadBuffer(), play(), ProcessMsg(), and release().
Storage of each process's attachment of the message queue, used to internally transmit sound buffers to SoundPlay.
Definition at line 317 of file SoundManager.h. Referenced by InitAccess(), loadBuffer(), play(), and release().
The documentation for this class was generated from the following files: |
Tekkotsu v4.0 |
Generated Thu Nov 22 00:58:42 2007 by Doxygen 1.5.4 |