Miles SDK Features
The Miles Sound System offers a versatile, powerful solution to the need for high-quality sound effects and music performance. Miles provides a variety of audio playback resources suitable for even the most demanding multimedia and entertainment applications, including a distinctive array of features unmatched by any other PC sound system. From its humble beginnings in 1991, the Miles Sound System SDK has established industry-wide standards for interactive audio in computer games and educational software products. Miles has brought sound and music to life for hundreds of millions of PC and console gamers all over the world.
The best way to get a sense of the depth and breadth that Miles provides is to check out this summary of the SDK's key areas of functionality. If you have any questions, you can always e-mail or call us at 425.893.4300.
Miles has a lot of features, so we've broken this page into the following sections: High-Level Sound Authoring, High-Level Auditioning, Digital Audio Support, Bink Audio Support, MP3 Support, 3D Audio Support, DSP Digital Filter Support, Platform Support, and Source Code Details.
High-Level Sound Authoring
All aspects of how a sound "sounds" are exposed and trivial to tweak in Miles Studio. From reverb, to DSP filters, to spatialization - it's easier than ever to get the game sounding exactly as you want.
New to Miles 9 is Auditioning! Now your game can connect to Miles Studio, and send all of the sound events for review. Not only for review, you can replay the recorded section over and over, adjusting sounds and parameters to get that section sounding exactly right. These recordings can be saved, and loaded later for sound regression testing.
But wait there's more! You can also send these tweaks back to the game, and have the game use the updated sounds without restarting the game! There's nothing more satisfying than pausing the game, adjusting a sound, and resuming the game with the new data.
Digital Audio Support
The Miles Sound System includes unparalleled digital audio support. Pretty much anything you'll want to do with digital audio is available through the MSS API.
At the heart of Miles is its super-fast, assembly-optimized (x86, MMX, and PPC) software mixer. This module contains dozens of different mixer kernels for all possible mixing states, such as 8 or 16-bit input, stereo or mono input, stereo or mono output, upsampling and downsampling with optional filtering, volume scaling and channel inversion, and more. Each of these routines is optimized specifically to be as fast as possible.
One level up is the Miles buffering layer. This layer takes the currently-playing sample addresses, loop points, and compression formats (MP3, Bink Audio Ogg Vorbis, ADPCM or other), and digital filter settings into account, calling the low-level mixer with the appropriate data after having decompressed and/or filtered it. This means that Miles plays out of your memory buffers -- which is nice because you don't need to copy memory around, maintain buffer locks, or anything like that. Just load your sound data into memory and tell Miles to play it.
One top of the buffer layer sits the Miles Digital Audio API (nice, clean and fast), the high-level streaming API, and any 3D audio providers. Our streaming API is a cross-platform layer that makes streaming data from a disk file as simple as three calls. Beginning with MSS Version 7, our hardware-3D providers (including EAX and DirectSound3D) are accessible using the same API that the standard 2D and discrete-multichannel configurations use. You no longer need to compromise your game's audio functionality to support a particular 3D hardware standard.
You'll love Miles's digital audio API: volume (amplitude and loudness), playback rate, pan control, effects and low-pass levels, streaming and subblock looping, five different kinds of callbacks, and many more features are all under your control.
Miles now also supports busses! Using busses you can install independent limiters, as well as use the signal strength from one bus to attenuate another. Busses are also complete samples - meaning you can even position them in space or install any of our filters!
Bink Audio Support
In Miles 8, we have added Bink Audio support. Bink Audio is the codec built-in into the Bink Video decoder and it is up to 30% faster than MP3 or Ogg, while providing similar compression ratios! It even uses less runtime memory. We expect most Miles users will end up using this new codec - it is perfect for games!
The Miles Sound System provides a Thomson-patent-licenced redistributable MP3 decoder at no charge! This means that you can use MP3 files in your games just like normal PCM digital audio.
Previously, one drawback to MP3 compression was the fact that two overseas companies (Fraunhofer and Thomson) owned the patent rights to the MP3 compression and decompression algorithms. That meant that if you wanted to add MP3 to your commercial product, you'd have to go through convoluted and lengthy negotiations to obtain an expensive license. Worse, you were simply paying for the patent rights - you still had to write the MP3 decoder itself.
With Miles, we have arranged through the Fraunhofer Institute and Thomson Multimedia to provide Thomson-licensed patents to our customers at no extra cost! (Note that MP3 patent rights remain somewhat murky, but it is generally believed that Fraunhofer/Thomson have legal control of the MP3 format.) You must sign an extra MPEG license addendum (which, among other minor things, requires you to add a credit to Fraunhofer and Thomson in your game), but other than that, you can use MP3 decompression just like our already built-in ADPCM decompression.
3D Audio Support
"3D audio" is basically a way to assign 3D coordinates to a particular sound. In a perfect world, everyone would have a discrete multispeaker sound system that would allow true three-dimensional placement of any sound. We do a great job of supporting these high-end customers, many of whom have connected their PCs and consoles to their home-theater receivers with the expectation of cinema-quality surround sound in their games. Many users, though, are still making do with the plain old stereo speakers that came with their PCs. Not surprisingly, it's important that your game makes the most of these disparate speaker configurations without the need for a lot of custom coding and testing on your part. The Miles digital audio API makes the job easy by keeping track of the 3D position and orientation of your sound source and emitter objects. We make sure that the user experiences believable spatial-positioning effects at a quality level commensurate with the available hardware.
Our 3D output layers include:
- Mono Output: Conventional monaural (single-speaker) sound.
- Stereo Output: Conventional stereo sound. Miles's 3D positional math assumes two (left and right) speakers are in front of the listener at 45-degree angles.
- HeadPhone Output: Similar to stereo output, but Miles assumes the speakers are positioned directly to either side of the listener.
- 6.1 Channel CircleSound Output: SRS Circle Surround(r) is a two-channel matrix format can be thought of as an improved replacement for Dolby Surround. It is compatible with consumer receivers that support Dolby, and offers 6.1 logical channels (front left, front right, front center, subwoofer, rear left, rear right, and rear center) on native Circle Surround(r)-compatible equipment. The main drawback to Circle Surround(r) is its increased CPU overhead compared to Dolby Surround. Also used on Nintendo Wii!
- 3-channel Dolby ProLogic 1 Output: This option assumes the user has connected a Dolby Surround-capable receiver to their (two-channel) sound card. It is identical to the Miles Dolby Surround M3D provider from earlier versions. Because DVD soundtracks downmixed to analog Dolby Surround sound pretty awful, this is no longer a very popular option for PC sound. Dolby Surround provides three logical channels (front left, front right, and monaural rear). Commonly used on Nintendo Wii.
- 4 Channel Output: This option assumes that four speakers (front left, front right, rear left, and rear right) are connected in a quadraphonic discrete configuration without the center speaker or subwoofer typical of 5.1 configurations. Not an especially-common channel configuration, except for a few diehard Led Zeppelin fans who haven't upgraded for a while.
- 5.1 Channel Output: Use this option to support the 'sweet spot' of current home audio systems, the 5.1-channel discrete configuration. Again, this is largely a DVD-driven phenomenon. There is a lot of hardware out there that can support 5.1 audio these days!
- 4.0 Channel DTS Output: Available on Sony PS2, this option provides four-channel discrete DTS encoding through the S/PDIF port. It is more efficient in terms of memory and encoding overhead than DTS 5.1, but lacks support for the LFE and center channels. Like the 4 Channel Output option, it assumes that at least four speakers (front left, front right, rear left, and rear right) are available.
- 5.1 Channel DTS Output: Available on Sony PS2, this option provides true 5.1-channel discrete DTS encoding through the S/PDIF port. DTS is surprisingly efficient on the PS2, sounds great, and is highly recommended for apps that can afford the slight (5% or so) CPU hit.
- 6.1 Channel Output: Similar to 5.1, but with a rear center speaker.
- 7.1 Channel Output: Similar to 5.1, but with side surrounds. This is a very common format for multichannel sound hardware to support, but users don't tend to have room for this many speakers.
- 8.1 Channel Output: Similar to 5.1, but with both side surrounds and a center rear speaker.
- DirectSound3D Hardware: Uses DirectSound3D for output, bypassing the Miles internal mixer.
- EAX 2: Adds hardware-accelerated environmental reverb effects, occlusion, obstruction, and per-sample wet/dry mix control to DirectSound3D.
- EAX 3: Adds exclusion and several other attributes and preferences to the EAX 2 feature set.
- EAX 4: Higher-quality effects and new control options (see the EAX4EXAM.CPP example application), currently available only in Creative Labs' highest-end hardware.
Keep in mind that you can use more than one digital audio configuration simultaneously! This lets you use hardware acceleration on the critical voices and fall back to software if the hardware voices are exhausted.
DSP Digital Audio Filter Support
Filter processors are external plug-ins that can manipulate digital sample data on-the-fly, during playback. Miles currently includes fourteen different filters. Up to eight filters can be applied, or "stacked," on a given sound, whether 2D-controlled or 3D-positioned.
- EAX Reverb Emulation Filter: this filter is built into the Miles mixer and provides great sounding EAX emulation in software. It is highly optimized and uses almost no CPU at all.
- Low-Pass Filter: this filter is also built right into the Miles mixer. It only allows frequencies below the cutoff frequency to pass. This effect is ideal for simulating object occlusion (because only the low frequencies can be heard - like thumps in another room). It is also highly optimized and uses almost no CPU at all.
- High-Pass Filter: this filter only allows frequencies above the cutoff frequency to pass.
- Band-Pass Filter: this filter only allows frequencies around the center frequency to pass. This effect is useful for simulating things like telephone calls.
- Resonator Filter: this filter provides a resonant filter that allows frequencies around the center to pass. The advantage of this filter is that you can "slide" the center and achieve some interesting effects.
- Compressor Filter: this filter "compresses" the dynamic range of a signal by making quiet signals louder and loud signals a bit quieter.
- Delay Filter: this filter provides a simple delay effect.
- Phaser Filter: this filter creates a sweeping effect by modulating a narrow notch signal filter. Many different types of sounds can be achieved with this effect (such as underwater effects). A phase shifter works by applying a narrow signal filter to a sound source. This causes various amounts of canceling of frequency components in the original signal. The filter's output is mixed back in with the original source audio signal. To get the sweeping effect, a low frequency oscillator is used to slowly move the frequency center of the notch filter. Blending the altered signal back into the signal path (called "regeneration" or "feedback") intensifies the effect.
- Parametric Equalizer Filter: this filter allows you to select a frequency range and boost or cut the signal in that range. The boost or cut amount is smoothly ramped down in either direction in a bell curve.
- Shelving Equalizer Filter: this filter is boosts or cuts the frequencies under the low frequency by the low gain and monotonically increases the gain with the frequency. It is useful for controlling the bass and treble in a sample.
- Ring/Amplitude Modulator Filter: this filter uses a sine wave to modulate (change) the signal. You can create "robot" type voices or underwater type effects with lots of motion with this filter.
- Chorus Filter: this filter is used to add a swirling property to a sound that it is applied to, thickening the sound. An audio signal that is to be processed with chorus is first delayed by a small amount. (Typical delay times are small, in the range of 5 to 40 milliseconds.) This produces a doubling effect. Each delayed signal is then sent to a low frequency osclilator. The LFO takes the delayed signal and moves its pitch up and down, changing the tuning from sharp to flat. (The oscillator moves in the range of 1-20 cycles per seconds to get the effect.) The LFO usually runs at a slow speed; 1 to 20 oscillations per second are typical. The output of the delayed and pitch-altered signal is then mixed in with the original audio. This blending completes the chorusing effect.
- Flange Filter: this filter is also used to to produce a swirling effect on a sound. The filter delays a copy of the sample data, but uses a low frequency oscillator to vary the speed of the copy's playback. (The oscillator moves in the range of 1-20 cycles per seconds to get the effect.) Feeding the processed signal back into the device to be processed again can get a more intense effect.
- Capture Filter: this filter will record the final mixed output of the Miles 2D digital audio system to a wave file. This is great for recording demos or tracking down bugs. Just set the filename and then apply the filter to the digital driver to begin recording.
- All versions of Windows, 32-bit and 64-bit
- Nintendo Wii™
- Nintendo Wii U™
- Ninetendo 3DS™
- Microsoft Xbox 360
- Microsoft Xbox One
- Sony Playstation ® Portable (PSP)
- Sony PS Vita ® (NGP)
- Sony Playstation 2
- Sony Playstation ® 3
- Sony Playstation ® 4
- MacOS (CoreAudio) 32-bit and 64-bit
- Apple iPhone
- Linux (OpenAL) 32-bit and 64-bit
Source Code Details
The Miles Sound System includes complete source code. If you ever wonder exactly how a particular function works - just check out the source! Miles is written in clean C and C++, with modules writen in platform specific assembly.