DirectMusic For The Masses

The DMS Loader
By Tom Hays
Gamasutra
November 6, 1998
Vol. 2: Issue 44


Published in Game Developer Magazine, September 1998

Game Developer Magazine
DirectMusic For The Masses
Introduction

History

DirectMusic's Innards

Segments, Tracks and Tools

Programming

The DMS Loader

Output API

Basic Playback

Layers

Composing With Producer

How Deep Do You Want To Go Today?

The Future

At DirectMusic's technological core lies the Loader, responsible for locating, loading, and registering objects. It was designed with low-bandwidth applications in mind, so it strives for efficiency.

To use the Loader, generally the first step is to set a search directory. This isn't required; an object can be referenced by full path name. URLs are not yet supported. Once a search directory is set, the Loader can search for objects using its ScanDirectory method and enumerate them in a database of their names and GUIDs.

The Loader's caching system relies upon this database: if an application asks for the same object twice (even in different locations), and if that object is in the database, it doesn't need to be loaded a second time. Caching is enabled for all objects by default, but can be turned off and on with the Loader's EnableCache method. For a balance between conserving RAM and avoiding repeated loads of the same object, an application must make smart use of the CacheObject, ReleaseObject, and EnableCache methods. Of course, there will be cases where caching is not good - browsing through tons of instruments in a DLS editing application, for example.

Once this database exists, an application can use the Loader's EnumObject method to show all objects of any class or classes in the database and then make an instance of the object (without duplicating data) using the GetObject method.

Output API  Next Page