AuSIM Engineering Solutions CRE_TRONTM API

AuSIM's audio simulation engine responds to control programmed through the CRE_TRON API.  The CRE_TRON API was developed by Crystal River Engineering in 1991 to create a common interface across its Convolvotron, Acoustetron, and Beachtron products.  Later, the CRE Alphatron and Acoustetron II products also supported CRE_TRON. 

The Intel RSX and Microsoft DirectSound3D API's were modelled after the CRE_TRON API under consultation from CRE engineers in 1994 and 1995, respectively. 

  • Overview
    The CRE_TRON API was originally designed to be a minimum-bandwidth interface to control a virtual aural environment.  A hardware-layer serial protocol (called "ATRON") was designed with a bit-rate of less than 6 kbaud base plus 4 kbaud per moving sound source for a 30 Hz environment.  The CRE_TRON API brought this hardware layer out to the "C" application level, nearly one for one.  The thin layer between the CRE_TRON interface and the ATRON protocol allows for very thin client layers and virtually no load on simulation hosts to add advanced audio simulation with a client-server architecture.  The CRE_TRON API was heralded as easy to program by the early application programmers. 
    • Object Oriented
      The CRE_TRON API is object-oriented in design, although exposed in straight "C" programming language.  The basic objects are
      1. System - independent virtual aural environment
      2. Listener - represents each pair of ears in the aural environment
      3. Sound Source - represents each sound emitting location in the aural environment
      4. Propagation Medium - represents each volume of aural medium in the aural environment
      The underlying audio simulation system was built in 1991 with Borland's Turbo C++.  A 32-bit protected-mode version was maintained in Zortech C++, using the Pharlap 32-bit DOS-Extender.  In those days, C++ was so new that there simply were no other commercially available C++ compilers.  None of Microsoft, Watcom, Metrowerks, Symantec, and GNU had C++ technology.  So the interface was created and published in ANSI C for portability between the UNIX, Mac, and PC.  CRE_TRON does not support dynamic object creation and deletion.  This feature is inherited from CRE_TRON's hardware-based founding.  If one has two Convolvotron's available to use, and only two (ie. fixed resources), then dynamic object creation has no real purpose.  The initialization call creates all of the requested object resources and has them ready for instant use at any time during a simulation. 
    • High-Level, Low-Bandwidth
      CRE_TRON sits at a mid to high level for an audio application interface.  This is a calculated trade-off of flexibility versus convenience.  For example, Microsoft's DirectSound3D is implemented at the buffer level of DirectSound.  While this gives the programmer more flexibility to directly manipulate buffers, it also mandates that the programmer perform more overhead and audio management.  And while CRE_TRON provides a good isolation from nuts and bolts audio management, many AuSIM customers still contract AuSIM to build higher-level wrappers around CRE_TRON. 
    • Well Supported
      The major benefit of the CRE_TRON API is that it is well-used and supported around the world, for over a decade. 

  • The Application Programming Interface (API)
    The basic interface is given below. 
    • System Functions
      System functions control the renderer independent of any specific listener, sound-source, propagation-medium, and wavefile object.  The "init" and "close" pair define an aural simulation.  The "update" synchronizes objects into time frames. 
      int  cre_init          (int driver, int head, int sources, int mode);
      int  cre_close         (int driver, int head);
      int  cre_update_audio  (void);
      
    • Listener Functions
      Listener functions set properties specific to a given listener object.  The "define" sets listener properties, such as location offsets, HRTF filter data, near-field modeling, display type, and other listener characteristics.  The "locate" sets the listener position and orientation for each frame of the simulation. 
      int  cre_define_head   (int id, int prm, int pts, const void *data);
      int  cre_locate_head   (int id, const float *hloc);
      
    • SoundSource Functions
      Sound-source functions set properties specific to a given sound-source object.  The "define" sets sound-source properties, such as radiation pattern, localization control, rendering priority, signal source, Doppler factor, delay control, and rolloff. 
      int  cre_select_source (int id, int input);
      int  cre_define_source (int id, int prm, int pts, const void *data);
      int  cre_locate_source (int id, const float *sloc);
      int  cre_amplfy_source (int id, float dB);
      
    • PropagationMedium Functions
      Medium functions set properties specific to a given propagation medium object. 
      int  cre_define_medium (int volm, int prm, int pts, const void *data);
      
    • Wavefile Functions
      Wavefile functions set properties specific to a given wavefile object. 
      wavFt *cre_open_wave  (const char *wavefile, int mode);
      int    cre_ctrl_wave  (int src, wavFt *wave, int cmd, void *data);
      int    cre_close_wave (wavFt *wave);
      
  • Application Support
    CRE_TRON has been supported by over 400 application developers world-wide.  Virtual environment application toolkits, such as Sense8's WorldToolKit, Multigen-Paradigm's Vega, and PTC's Division Reality
AuSIM Home Products Search Last update: 26 Sep 2002