Proposal for Design of Sound Engine
Publié par Mysticbit le 5/5/2006 (1205 lus)
Describes in brief the design for the sound engine.
Proposal for Design of Sound Engine
by Daniel Grace (mysticbit)
Version 2
Contents
1. Intro
2. Preprocessing
3. Run Time Renderer
4. Developments
5. Synths and Production tools
1. Intro
The goal of the sound engine development is threefold
first to provide a system capable of delivering a partly realistic 3D sound enviroment in real time. Secondly to allow music to be imported and played simultaneously. Thirdly to provide preproduction tools that allow sounds and music to be created with an onboard sequencer and suite of synthesisers.
The design is describe here in three parts, the preprocessor and the run time renderer and the production tools.
The UML diagram shows the overall system, but does not include all objects and classes for production of environmental sound.
2. Preprocessing
2.1 recorded and synthesized sounds are stored as PCM data
2.2 raw PCM data is preprocessed by splitting each sound into b = 3 exclusive
frequency bands: high, medium and low. The resulting data is still in PCM format
2.3 bands are compressed (audio) and stored for each sound
2.4 objects are given reflective and absorption acoustic values (0 to 1) for each frequency band
2.5 game maps are split into a grid of interconnected zones
2.6 all main objects in or overlapping into a zone are approximated by primitive shapes (boxes / cylinders / spheres)
2.7 a zone is divided into a grid of node points (maximum of m) and any nodes interconnecting zones are also referenced in a seperate list
* each pair on nodes is processed as a sound source and listener with the objects in the scene to acertain times of reverb paths and acoustic values for each band along
- direct path
- single reflection
- double reflection
2.8 for each pair this information is compressed and stored as a series of numerical values representing the overall environmental accoustic effects
2.9 seperately shortest paths are calculated between each pair of zones in the map and stored along with a reference to the nodes on each zone boundary
3. Run Time Renderer
3.1 for each sound to be used on a game level, bands are decompressed into temporary memory
3.2 left and right positions are rendered as seperate channels
3.3 when a sound is triggered, the position of the source and listener are used to find the nearest nodes
3.4 this pair is used to calculate the effects from the environmental values stored
3.5 the positions of these four points are used for interpolation
3.6 should these nodes span seperate zones then one or more boundary nodes are found and the effects are compounded, when more than two zones are included a
distance fall off is applied to approximate the centre section of zones
3.7 the time of the direct path between the two points is used to queue the sound
3.8 at the appropriate time sounds are moved from the queue to a seperate
rendering list
3.9 sound is rendered in short bursts by taking chunks of PCM data from the sounds in the rendering list, taking into account any doppler effect caused by relative movements of listener and source
4. Developments
4.1 the above model does not include the ability to use different nodes when the listener or source move (so their nearest node changes). This happens for example when the sound is long or the listener or source is moving through the zone
4.2 there are no adjustments for moving elements that may occlude or exclude a sound
5. Synths and Production Tools
5.1 production tools will consist of a sequencer, MIDI import utility, audio file import function, a synth interface, an effect synth, an environmental synth, audio playback and a mixer
5.2 The sequencer will control three polyphonic synths. A backing synth with some effects, pure synthesis and basic modulation possibilites. A rhythm synth consisting of pcm voices and some effects. A lead synth with have several
wave sources, effects, a filter and modulation possibilities.
5.3 the MIDI import utility will convert single tracks within a MIDI file to a sequencer file that the system can read
5.4 the system will support ogg file import
5.5 the synth interface will consist of a series of controls on screen including sliders and patching options that will vary depending on which synth is being edited
5.6 the effect synth is for producing other game sounds that are non-enviromental, non-musical
5.7 the enviromental synth is for production of enviromental sounds as described in the previous sections
5.8 the audio playback is for simulataneous playback of prerecorded sound
5.9 the mixer allows the three elements to be mixed in real time references
Proposal for Design of Sound Engine
by Daniel Grace (mysticbit)
Version 2
Contents
1. Intro
2. Preprocessing
3. Run Time Renderer
4. Developments
5. Synths and Production tools
1. Intro
The goal of the sound engine development is threefold
first to provide a system capable of delivering a partly realistic 3D sound enviroment in real time. Secondly to allow music to be imported and played simultaneously. Thirdly to provide preproduction tools that allow sounds and music to be created with an onboard sequencer and suite of synthesisers.
The design is describe here in three parts, the preprocessor and the run time renderer and the production tools.
The UML diagram shows the overall system, but does not include all objects and classes for production of environmental sound.
2. Preprocessing
2.1 recorded and synthesized sounds are stored as PCM data
2.2 raw PCM data is preprocessed by splitting each sound into b = 3 exclusive
frequency bands: high, medium and low. The resulting data is still in PCM format
2.3 bands are compressed (audio) and stored for each sound
2.4 objects are given reflective and absorption acoustic values (0 to 1) for each frequency band
2.5 game maps are split into a grid of interconnected zones
2.6 all main objects in or overlapping into a zone are approximated by primitive shapes (boxes / cylinders / spheres)
2.7 a zone is divided into a grid of node points (maximum of m) and any nodes interconnecting zones are also referenced in a seperate list
* each pair on nodes is processed as a sound source and listener with the objects in the scene to acertain times of reverb paths and acoustic values for each band along
- direct path
- single reflection
- double reflection
2.8 for each pair this information is compressed and stored as a series of numerical values representing the overall environmental accoustic effects
2.9 seperately shortest paths are calculated between each pair of zones in the map and stored along with a reference to the nodes on each zone boundary
3. Run Time Renderer
3.1 for each sound to be used on a game level, bands are decompressed into temporary memory
3.2 left and right positions are rendered as seperate channels
3.3 when a sound is triggered, the position of the source and listener are used to find the nearest nodes
3.4 this pair is used to calculate the effects from the environmental values stored
3.5 the positions of these four points are used for interpolation
3.6 should these nodes span seperate zones then one or more boundary nodes are found and the effects are compounded, when more than two zones are included a
distance fall off is applied to approximate the centre section of zones
3.7 the time of the direct path between the two points is used to queue the sound
3.8 at the appropriate time sounds are moved from the queue to a seperate
rendering list
3.9 sound is rendered in short bursts by taking chunks of PCM data from the sounds in the rendering list, taking into account any doppler effect caused by relative movements of listener and source
4. Developments
4.1 the above model does not include the ability to use different nodes when the listener or source move (so their nearest node changes). This happens for example when the sound is long or the listener or source is moving through the zone
4.2 there are no adjustments for moving elements that may occlude or exclude a sound
5. Synths and Production Tools
5.1 production tools will consist of a sequencer, MIDI import utility, audio file import function, a synth interface, an effect synth, an environmental synth, audio playback and a mixer
5.2 The sequencer will control three polyphonic synths. A backing synth with some effects, pure synthesis and basic modulation possibilites. A rhythm synth consisting of pcm voices and some effects. A lead synth with have several
wave sources, effects, a filter and modulation possibilities.
5.3 the MIDI import utility will convert single tracks within a MIDI file to a sequencer file that the system can read
5.4 the system will support ogg file import
5.5 the synth interface will consist of a series of controls on screen including sliders and patching options that will vary depending on which synth is being edited
5.6 the effect synth is for producing other game sounds that are non-enviromental, non-musical
5.7 the enviromental synth is for production of enviromental sounds as described in the previous sections
5.8 the audio playback is for simulataneous playback of prerecorded sound
5.9 the mixer allows the three elements to be mixed in real time references
|
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
|
||||||||||||||||







