Information for Game Developers ------------------------------- Presently there are many different sound cards conforming to various standards on the market. A product should attempt to support as many of those standards as possible, to ensure happy consumers of the product. Developers may wish to use a third party API to simplify the task of supporting all the audio standards out there. These API's attempt to take advantage of a card's capabilities, while retaining a single high level interface to each card's hardware. The alternative is to program all the audio drivers yourself. There are advantages and disadvantages to both options. With a third party API, you get a simple to use, ready to plug in system, that has been tested. Programming drivers yourself gives you the choice of the exact features, but it requires a great deal of development and testing time, depending on how many features and standards are supported. Keep in mind that third party developers MAY be willing to give you source that can be modified for your own needs. Below is a list of third party audio API's, the features they support, the nature of the UltraSound support, and who to contact if you are interested. ========================================================================= API --- IBM Audio Interface Library Version 3.0 Features -------- Standard MIDI file compatibility - Extended MIDI (XMIDI) preprocessing dramatically increases performance efficiency while reducing file size Support for virtually all popular PC sound synthesizers - Gravis UltraSound, Sound Blaster(TM), Roland Sound Canvas(TM), and many others - All XMIDI drivers emulate Roland Sound Canvas General MIDI standard for simplified sequence arrangment with other sound adapters - Complete tool set provided for use with both Ad Lib(R) and Creative Labs instrument editors SoundStream(TM) digital playback capability for sample sound effects - Ultra-high-performance real-time multichannel digital audio - 16 or more simultaneous samples - on all supported sound cards - Runtime ("on-the-fly") format conversion of sample rate, word size, and channel count -- any digital sample may be played properly on all supported sound cards - Discrete pitch, volume, panpot, and balance control over all 16 digital audio channels - "Virtual wave synthesis" permits XMIDI Note On, Note Off, Panpot, Pitch, Volume, Expression, Program Change, Patch Bank Selector, and All Notes Off control over digital sound effects - Double-buffering function calls provided -- only two calls necessary to stream audio from disk or CD Encapsulated runtime drivers - New sound driver options may be added to existing products simply by releasing updated driver and/or data files - Applications may safely call any API function with any specified driver, regardless of whether the can actually process the desired function - Multiple Driver Interface with dynamic linking allows any number of drivers to perform independantly - Digitized sound effects performed concurrently with MIDI music playback through any supported synthesizer hardware Industry-standard data file formats - Extended MIDI format based on Standard MIDI Files 1.0 (SMF) specification - Full compatibility with AIL Version 2.0 XMIDI files and Global Timbre Libraries - Creative Labs Voice (.VOC) and Microsoft Windows (.WAV) format supported by digital sound drivers Versatile Application Interface - Distributes timer interrupt resource between drivers and application - no need for conflicts over timer hardware control - Low interrupt latency for minimal overall performance impact - Many MIDI control requests available, include tempo and volume changes and individual channel control, sequence layering, callback functions, looping, and branching - Independant one-shot MIDI message capability for MIDI-based sound effects Enhanced support for overlaid sequences - Each driver may play from 1 to 8 XMIDI sequences concurrently - Sounds effects sequences and "jingles" supported through MIDI channel-locking mechanism UltraSound Support ------------------ AIL 3.0 UltraSound support requires no special TSR's or any other support files, only the Digital and Midi drivers themselves. If custom patches are desired to be used, a file may be included called CUSTOM.GUS, which will contain a list of custom patches and where to find them. The MIDI driver implements patch cacheing. It attempts to optimize the amount of patch cacheing done in a game by keeping track of what instruments are used throughout the game. When the driver shuts down, it writes out a small file called .GUS. This lists all the instruments ever used while playing the game. When the driver initializes the next time, it reads this file, and pre-loads all the needed patches. This prevents the "pausing" that can happen while cacheing patches during the gameplay. The driver also has one other feature to minimize the amount of patch cacheing during gameplay. If there was not enough room to load any more patches needed, the driver will switch to a lower patch loading resolution. It will only step down one resolution per init-deinit cycle of the driver, so it may take a few sessions of the game before optimal performance is achieved. The first step down loads the patches as 8-bit. Then they will be loaded at half the sampling frequency if there is still not enough room for all of them. This flag is also stored in the .GUS file. Any patch that cannot be loaded will not be heard (no re-mapping is done). You may experience a lot of notes missing the first time you play a game on a low memory card (such as 256K). After you quit and play a few more times the notes should all play (unless the particular midi file uses a great deal of patches). The driver also loads the patches from low to high patch numbers, and flushes the patches from high to low patch numbers. In real terms this means that Melodic patches will get loading precedence over percussion patches. The driver gets the list of patches from the ULTRADIR\ultrasnd.ini file, and looks for the patches in the ULTRADIR\midi directory. Contact ------- For information on Miles Design's products and services, contact John Miles at one of these numbers: Tel: (512) 345-2642 Fax: (512) 338-9630 BBS: (512) 454-9990 INTERNET: 70322.2457@compuserve.com ========================================================================= Note: If you are a developer of an audio API that supports the UltraSound, please contact Advanced Gravis if you wish to appear in this list.