Downloads


Downloads

All downloads:  http://sourceforge.net/projects/slab3d

Individual release downloads are included in the Version History below.

System Requirements

slab3d runs under Windows 2000 and above and supports WDM (DirectSound, Waveform-Audio) and ASIO sound device drivers.  If executing a slab3d application reports a missing DLL, you most likely require a more recent or more encompassing version of the "DirectX End-User Runtime" (see Microsoft Download Center).  The most recent slab3d libraries and executables are built using Microsoft Visual C++ 2008.  More information on building slab3d is available in the slab3d User Manual.  See the Version History below for release contents and comments.  Multiple versions of slab3d can be installed on the same system.

Installation Instructions

  1. Download ZIP file from SourceForge.net.
  2. Unzip to any location.
  3. Depending on version:
  4. slab3d is now installed.  To get started, see the following items in the slab3d Start Menu or installation directory:

Version History

slab3d version number = major.minor.release

7/20/09 Version 6.4.0
  • Download
  • Contents
  • Overview
    • Several areas of slab3d have been consolidated and simplified:
      • The script, modifier, and callback features have been rewritten and integrated into SRAPI.
      • The CScene class has been integrated into SRAPI.
      • The VMIX, HMIX, and HMIX2 render plugins have been merged into the new "Mixer" render plugin.
      • The slab3d render plugins have been integrated into SRAPI and are no longer DLLs.
      • The registry is no longer used by slabwire or SRAPI.
      • The previous stand-alone modes and registry mode for finding render and generator plugins and the default HRTF have been replaced by a new paradigm.  The slab3d render plugins are now built into the SRAPI library.  If additional render plugins or any generator plugins are to be used, they should be placed in the same directory as the SRAPI-linked application.  The default HRTF is now built into SRAPI applications as a resource.
      • The lib\src srapi and slabwire projects have been moved to the src\ directory.
      • The lib\src\SLABTrak project has been renamed "traklib" and moved to the usrlib\ directory.
    • Other new features:
      • A new XML slabscript format has been created by allowing time indices in scenefiles.
      • An XML scenefile can now be opened during render-time enabling XML macros.
      • The render-time replacement of streams has been improved.
  • Modification Details
    • SRAPI
      • The CScene class was merged into CSRAPI.  The conceptual container of auditory scene state is now the XML scene file.
      • Timestamps have been added to the XML scenefile feature to create an XML slabscript format.  The old slabscript format has been removed.  Demo Scape/Scene/slabscript files have been added to the bin/ directory.
      • The SRAPI Script and Modifier class was rewritten, simplified, and merged into SRAPI.  See Script*() and Mod*() functions in CSRAPI and IDMOD in slabdefs.h.  The SLABScape, SLABSurface, and slabcon applications were updated accordingly.
      • SceneOpen() can now be called while rendering enabling the creation of XML macros for dynamic scene settings.
      • XmlApi() and XmlApiElement() map XML to SRAPI calls.
      • The VMIX, HMIX, and HMIX2 render plugins have been replaced by the built-in "Mixer" render plugin.  The corresponding SrcMix*() functions have been added to SRAPI.  Demo Scape/Scene/slabscript files have been added to the bin/ directory.  The rvmix render plugin and the slabconv demo application have been removed.  The unfinished rvbap plugin is now in its own solution.
      • SrcStream(), SrcAllocFile(), SrcLocatePolar(), SrcRefEnable(), EnvPlanes(), and SrcMix*() functions added to XML support.
      • Being XML is human-readable and editable, XML radian specification has been changed to degrees.  In general, the XML API and the function API are kept as similar as possible.  This is an exception.
      • GetExeDir() returns the executable directory.
      • SHSrcEnable and SHSrcGain have been added to the Scene Hints.
      • LstHRTF( NULL ) specifies the default resource HRTF database.
      • SRAPI now supports initiating rendering with only emitters.  This allows streams to be set after rendering.
      • SrcAllocStream() allocates an arbitrary stream sound source for use with slabwire streams.
      • The m_cSSIList variable can be used to allocate streams for use by the SrcStream script command.  Demo of use added to slabcon.
      • GetASIOChIn() and GetASIOChOut() can be used to query the number of ASIO device I/O channels when not rendering.
      • The slab3d render plugins are now built into the SRAPI library (versus being DLLs).  The slab3d render plugins are enumerated by IDRender in slabdefs.h.  RENDER_DIOTIC_V was renamed RENDER_DICHOTIC.  RENDER_SPATIAL2 ("Spatial2") and RENDER_MIXER ("Mixer") are new.  The "SpatialVU" plugin and the slabconvu demo application have been removed.
      • slab3d no longer uses the registry to find render plugins, generator plugins, and the default HRTF.  All registry functions have been removed.  CRegistry has been moved from slabwire to SLABScape.  SLABScape still uses the registry for most-recently-used files, window placement, and tracker settings.  Render plugins are now either built in or found in the executable directory.  The generator plugin directory is either specified in the generator constructor or assumed to be the executable directory.  The default HRTF is a resource linked into the executable.  The new behavior replaces the previous registry mode and two stand-alone modes.
        • Note:  lib\srapi_hrtf.res must now be linked into all SRAPI-using executables.
      • CallRate() now sets the Callback, Modifier, and Script update rate.
      • SrcStream() no longer deletes the passed SSI if an error occurs.
      • SrcAlloc*() realloc can now occur during render-time and no longer returns NULL for realloc error.
      • The default Smooth Time was changed from 25ms to 15ms to increase dynamic responsiveness.
      • CHRTF::LoadFromResource() loads an HRTF database from a resource.
      • The slabdefs.h conversion defines were moved to slabmath.h.
      • Doxygen comments were added to slabmath.h.
      • Source and reflection image state memory use has been optimized.
      • Bug Fix:  Reflection spread and radius state now refer to the source state.
    • slabwire
      • The version defines in slabdefs.h have been moved to the new slabwire header file slabver.h.  The direct use of SLAB_VER replaces CSRAPI::GetVersion().
      • CSSIList::Remove() removes an SSI from an SSIList.
      • The CSIGen() constructor generator plugin directory default has changed from the current directory to the executable directory.
      • The default DirectSound buffer size (DS_BUFSIZE_OUT) was changed from 4096 to 8192 bytes to reduce DirectSound underflows.
      • $(NoInherit) was added to the ASIO file paths to re-enable the use of an \Apps\asio directory for ASIO files.  At some point (VS08?), the absolute paths were replaced by relative paths.  If slab3d is installed to a directory other than \slab3d, the corresponding Full Paths are incorrect.  $(NoInherit) disables Visual Studio's generation of relative paths.
    • rmyplugin
      • SetNSOffset() support added.
    • SLABScape
      • The slab3d Registry Settings dialog has been removed.  The "Create slab3d Start Menu folder" button has been moved to the About dialog.
      • The Fritz mesh and wall textures have been integrated into the SLABScape executable.
      • The slabscript editor has been removed.  This functionality has been replaced by an XML slabscript format and the Dynamic Settings dialog "Reload Script" button.
      • bin\slabscape.htm is now used for the help page instead of the doc\ page.
      • A null string HRTF database name now indicates the default resource HRTF database.
      • SmoothTime, number of displayed sources, and the script filename have been added to the Scape file.
    • slabcon
      • The slabconvu Spatial2 demo was merged into slabcon.
      • Two script demos were added that illustrate script control of the Mixer render plugin and real-time stream replacement.
    • slab3d
      • The float and double precision specification was revisited resulting in slight changes to srapi.cpp, 3DXFramework.cpp, view.cpp, and tracker.h.  This eliminated some instances of denormal math operations.
      • For consistency, the following project settings have changed:
        • slabw and srapi release mode and jvoiplib:  "Use MFC in a Static Library" to "Use Standard Windows Libraries".
        • all release projects:  all instances of "Program Database (/Zi)" changed to "Disabled".
        • all debug projects:  all instances of "Program Database for Edit & Continue (/ZI)" changed to "Program Database (/Zi)".
  • Comments
    • Many thanks to NASA Ames for funding this iteration of slab3d development.
    • One should consider this a beta release near the release date and a final release a few weeks later unless otherwise noted.  A bug notice will be added to the Version History should any be found.
5/8/09 Version 6.3.1 Update
  • Known Issues
    • SLABScape defaults:  SLABScape v6.3.1 uses slab3d defaults instead of SLABScape-defined defaults:
      • Smooth Time:  25ms vs. 15ms
        • 15ms is more responsive and will most likely become the new SRAPI default.
      • Source Radius:  10cm vs. 5cm
      • DirectSound Output Buffer Size:  4096 bytes (23ms) vs. 8192 bytes (46ms)
        • Write Buffer Size in both cases is 512 bytes.
        • 4096/512 is prone to underflow, thus 8192 will most likely become the new slabwire default.
        • 4096/256 is less prone to underflow, but less robust than 8192/512.
        • Note:  ASIO is the preferred sound device driver interface.  It tends to have lower latency and better robustness than DirectSound.
    • Building slabwire:  This applies to users using an \Apps\asio directory for ASIO files (see Building slab3d).  The Visual Studio 2008 Relative Path for slabwire's ASIO files will result in a bad Full Path if slab3d is installed to a directory other than \slab3d.  If slab3d is installed elsewhere, the paths can be corrected using File Properties (Alt-Enter).  Users who do not use an \Apps\asio directory also have to update the ASIO File Properties before building slabwire.
    • Release-mode vs. debug-mode libraries:  Due to the size of debug-mode libraries, only release-mode libraries are distributed with slab3d.  The hope was that the release-mode libraries could be used with debug-mode user applications.  Unfortunately, this can result in linker issues.  It should be relatively easy to build the debug libraries if required.  First, build the usrlib jvoip.sln and slabDISInterface.sln solutions.  Next, build the slabw and srapi projects in the slab3d.sln solution.  See the slab3d User Manual - Building slab3d and the ASIO bullet above.
4/17/09 Version 6.3.1
  • Download
  • Contents
  • Additions
    • SRAPI/slabwire:  The CSIDISRadio2 RT (real-time) DIS radio stream was added.  RT radios use real-time sound output and DIS transmitter state information to reduce latency.  RT radio parameters were added to the SRAPI functions SrcAllocDISRadio() and AllocDISRadios().  To determine the lowest possible buffer size, the SLABScape Log window can be used to query the number of RT radio underflows.  For the truly adventurous, "stat" timestamp dumps can be enabled inside the code (three varieties: sidisradio.h (slabwire), sdiStat.cpp (slabDISInterface user), and PDUSorter.cpp (slabDISInterface packet reception)).  The timestamp output can be visualized using dis2.m.  This will graphically depict the amount of DIS buffering required as signal packet lag behind real-time.
    • SRAPI Scene:  Non-spatial gain functions SetNSOffset(), GetNSOffset(), and GetNSScalar() added.  The non-spatial monotic and diotic renderers now use this parameter to scale their gain.
    • SRAPI Scene:  Mute functions SrcMute() and GetSrcMute() added.
    • SRAPI:  SrcRadius(), SrcMute(), and SetNSOffset() state added to Scene file.
    • slabwire:  CSSI::SSInUnderflow() added to query DIS RT radio underflow.
    • SLABScape:  Support for RT DIS Radios was added.  This included improvements to the Scape and Scene files in order to save and open DIS radio configurations and improvements to gain management in order to hear DIS communications without attenuation.  Scape and Scene files demonstrating different DIS latency configurations have been added to slab3d's bin\ directory.
    • SLABScape:  Relative file path support was added.  This allows Scape and Scene files to be moved with their corresponding data files.  There are a variety of ways to set SLABScape's current directory (see SLABScape Help Page: Execution).  In SLABScape, the current directory path can be displayed using Interface | Log | General.  The Visual Studio 2008 Debugger path is set via Property Pages | Configuration Properties | Debugging | Working Directory.  I typically use $(TargetDir).  Unfortunately, this does not appear to be saved in the project.
    • slabtools:  The MATLAB function dis2.m can be used to visualize the "stat" timing data generated by the CSIDISRadio2 class, the sdiStat application, and the slabDISInterface library.
    • slab3d User Manual:  New sections were added regarding SRAPI and Scene defaults and the minimum SRAPI code required to render a sound source (see also slabcon.cpp).
    • slabDISInterface library:  The freq() callback now includes transmitter state.  getTimestampAbs() added to query relative or absolute DIS timestamp use.  Queue flush added for transmission end and outside-of-transmission signal.  "stat" timestamps added to capture DIS packet arrival times (see dis2.m).
    • slabDISInterface solution:  The sdiStat user application was added to acquire DIS timing information from the library user perspective (i.e., post DIS PDU queue and UDP reordering).  See dis2.m.
  • Modifications
    • slab3d:  All Known Issues from the "Version 6.3.0 Update" entry below were corrected.
    • slab3d:  All instances of WINVER and _WIN32_WINNT set to 0x0500 (Win2k or later).  All _WIN32_WINDOWS (WinME or earlier) removed.  WINVER and _WIN32_WINNT were added to JVOIPTestUtil.
    • SRAPI:  SetLinks() now sets the link working directory (aka shortcut "Start in" property).
    • SRAPI Scene:  SrcGain(), SrcMute(), SrcRadius(), and SrcRefOffset() were added to Reset().  SetRenderID() was removed from Reset().
    • slabwire:  CDISManager MAX_CONNECTIONS increased from 64 to 128.
    • slabwire:  CDISManager now receives DIS transmitter state notification.
    • slabwire:  stat.cpp dumps now occur to the current directory rather than root.  The StatEvent#() macros have been replaced by inline functions.
    • SLABScape:  Spatial gain, non-spatial gain, and mute state improved and moved to SRAPI Scene.
    • SLABScape:  Speech recognition grammar now part of app instead of loaded from file.
  • Known Issues
    • Scape and Scene files:  As noted for v6.3.0, the Scape and Scene XML file formats are in development.  The parameters implemented are listed on the SLABScape Help Page.  Although a goal is eventual backwards compatibility as the format changes, at this stage of development, this is not the case.
    • SLABScape build with Windows SDK v6.0A:  SLABScape v6.3.1 is built using Windows SDK v6.1.  v6.1 includes the grammar compiler used to build SLABScape's "grammar.cfg" file.  A pre-built version of grammar.cfg is distributed with slab3d, so v6.1 isn't necessarily required.  However, if errors are reported building SLABScape under v6.0A, v6.1 might help resolve them.  If you are not interested in speech recognition and Windows SDK v6.1, see the define _ENABLE_SAPI in SLABScape file sr.h.  Note, Microsoft's Speech API (SAPI) v5.1 SDK also contains a grammar compiler.  Both Windows SDK v6.1 ("Windows SDK for Windows Server 2008 and .NET Framework 3.5") and "Speech SDK 5.1" can be downloaded from the Microsoft Download Center.
    • slabDISInterface:  slabDISInterface uses a one-in/one-out queue to order DIS radio packets.  The queue is flushed when a transmission completes or a signal packet arrives outside of a transmission.  The queue size used by slabwire is five packets.  The one-in/one-out behavior could conceivably result in packet delays depending on the behavior of DIS transmitters, the most likely scenario being frequency changes outside of a transmission.
  • Comments
    • Many thanks to the Air Force Research Laboratory (AFRL) and NASA Ames for funding slab3d development.
    • One should consider this a beta release near the release date and a final release a few weeks later unless otherwise noted.  A bug notice will be added to the Version History should any be found.
3/18/09

updated
4/17/09

Version 6.3.0 Update
  • Known Issues
    • SLABScape:  The Static Settings | Sound Sources | Generator droplist is not updated properly.  It does function for setting the generator type.
    • SLABScape:  The Beacon demo will only run properly if slab3d is installed to c:\slab3d.  beacon.scp and an internal speech recognition grammar path reference this directory.
    • SLABScape:  For sound sources with an ID parameter (i.e., DIS, VoIP, Link), there is a duplicate "id" attribute in the Scape XML file (.scp).  Reading the corresponding source parameters from a Scape file will cause an XML error.
    • SLABScape:  The File menu MRU (Most Recently Used) list is not saved.
    • SLABScape:  Once installed, the slab3d directory cannot be moved without using regedit to remove the registry keys (HKEY_CURRENT_USER\Software\slab3d\6.3.0).  In the past, one could use SLABScape to reset the registry settings, but v6.3.0 exits before they can be reset.
    • SRAPI:  The Scene file (.scn) SrcGain db parameter is actually a scalar gain and should not be used.  In this release, the Scape file gain overrides the db value, so this is not an issue for SLABScape.
    • SRAPI/slabwire:  The ID of an auto-ID DIS stream is not properly set after the following sequence: DIS streams automatically assigned to DIS IDs, DIS streams freed, auto-ID DIS streams allocated.  The streams still appear to function properly but the ID will be "" instead of the actual ID.  (4/17/09)
    • Windows SDK v6.0A/v6.1 version clashes might occur when building SLABScape.  Ideally, v6.1 should only be required if rebuilding the speech recognition file grammar.cfg.  But, depending on ones build environment, there may be complications.  The workaround is to comment-out references to SAPI (Speech API) in sr.h and sr.cpp.  (4/17/09)
  • Comments
    • Direct3D DLLs:  When installing slab3d on a new Vista Ultimate system, SLABScape v6.3.0 required d3dx9_37.dll and v6.2.0 required d3dx9_30.dll.  These can be installed using the DirectX End-User Runtime as described under System Requirements above.  Alternatively, these can be copied from the C:\Windows\System32\ directory of a system with a more thorough DirectX installation.
2/25/09 Version 6.3.0
  • Download
  • Contents
  • Additions
    • "SlabDISinterface" DIS (Distributed Interactive Simulation) support library and source code.  I gratefully acknowledge the Air Force Research Laboratory (AFRL) for open-sourcing SlabDISinterface and allowing it to be included in the slab3d release.
    • SRAPI:  SrcAllocEmitter() allocates an "emitter" sound source.  An emitter sound source does not have a sample stream.  It's primary purpose is to hold sound source scene state while awaiting the selection of a sample stream.
    • SRAPI:  Sound sources can now be reallocated in order to assign new "sample streams" to existing "virtual environment emitters".  SrcFree() can now retain the emitters when freeing streams.
    • SRAPI:  Stand-alone mode constructor.  This version of stand-alone mode allows the render and generator plugin directories and the default HRTF to be specified using the CSRAPI constructor.
    • SRAPI:  GetASIOName() retrieves the name of an ASIO device.
    • SRAPI:  Several constants were added to slabdefs.h.
    • SRAPI:  CSRAPI::Rendering() returns CScene::GetRenderTime().  "Render Time" is the state between RenderStart() and RenderStop().
    • SRAPI:  Math functions RectToRads() and RadsToRect() are radian versions of RectToPolar() and PolarToRect().
    • SRAPI:  RenderBatch() performs batch processing on a directory of wave files.  This functionality was previously in SLABScape.
    • SRAPI:  The new Modifier modSrcStream enqueues sound source stream changes.  For example, this feature can be used to play several wave files, one after the other, from the same sound source.  This is demonstrated in SLABScape by dragging and dropping wave files onto the SLABScape display while rendering a file or emitter sound source.  Modifiers are now initialized with a CSRAPI pointer instead of a CScene pointer.
    • SRAPI:  SrcAllocDISRadio() auto radio ID assignment option.
    • SRAPI:  SceneSave() and SceneOpen() allow SRAPI acoustic scene state to be written to and read from an XML file.  (IN DEVELOPMENT)
    • SRAPI Scene:  "Hints" now exist for certain scene parameters.  When the corresponding set function is called, the hint bit is set in the hint variable.  See the SH* defines in scene.h.  Hints are used with "tick" updating.
    • SRAPI Scene:  "Tick" updating delays the conversion of certain scene parameters to rendering parameters.  In the past, this conversion occurred within one signal processing frame.  Depending on the scene update method, this can result in an unnecessarily high update rate.  With tick updating, the conversion doesn't occur until the scene is explicitly ticked by the user.  The user can select between frame (default) and tick updating.
    • SRAPI Scene:  Several functions were added to support a SLABScape rewrite: SetHint(), GetHint(), HintClear(), SetTick(), Tick(), Lock(), Unlock(), LstPos(), LstSensorPos(), GetLstPos(), GetLstX(), GetLstY(), GetLstZ(), GetLstYaw(), GetLstPitch(), GetLstRoll(), EnvPlane(), EnvBound(), EnvBoundX(), EnvBoundY(), EnvBoundZ(), EnvBoundR(), GetEnvBoundMove(), GetRenderID(), GetRenderTime(), GetFIRPoints(), SrcLoc(), GetSrcRadius(), GetSrcSpread(), GetSrcEnable(), GetSrcRefEnable(), GetSrcLocRel(), GetSrcPolar(), and Reset().
    • slabwire:  CSIMemory now supports user memory buffer playback in addition to memory-buffered wave files.
    • SLABScape:  DIS radio IDs can now be automatically assigned as radios appear on the network.
    • SLABScape:  DIS frequency sources listen to all DIS radios on a specific frequency.
    • SLABScape:  Sound device output can now be split to a file.
    • SLABScape:  "Beacon" auditory beacon and speech recognition demo.  The beacon demo was coded to NASA researcher Mary Kaiser's specifications.
    • slabwcon:  CResampler/CResampler2 FIR memory comparison.
    • slab3d:  cleandev.bat cleans all usrlib build files except the libraries.  cleanusr.bat cleans all usrlib build files.  cleanrel.bat no longer cleans usrlib, allowing clean.bat and cleandev.bat to create a "developer release" containing usrlib libraries.  Performing both a cleanusr.bat and a cleanrel.bat creates a "user release".
    • slabwire:  CSIFile::GetLoop() returns the file loop setting.
    • HMIX2 render plugin:  HMIX2 is similar to HMIX but can route the same spatialized source output to two independent HRTF left/right sound outputs.
    • slabtools:  The MATLAB script wmdemo.m was written to demonstrate the open-source "Practical Guide to Wavelet Analysis" code.
  • Modifications
    • slab3d:  Development migrated from Visual Studio 2005 to Visual Studio 2008.
    • SLABScape:  Portions of SLABScape were rewritten to accomplish the following goals:
      • ease maintenance by simplifying the architecture and classes
      • elimination of duplicate acoustic scene state between SLABScape and SRAPI
      • user interface reorganization to mirror SRAPI, e.g., dialogs reorganized into "static settings", the SRAPI settings set before rendering and "dynamic settings", those set at any time
      • simplified source code to better demonstrate SRAPI use
      • reorganization of functionality to allow component reuse
      • improved stress-testing by using one CSRAPI object during app execution
      • new XML "Scape" file format, human-readable, human-editable, extensible, and backwards compatible after extension (IN DEVELOPMENT)
      • new SRAPI XML "Scene" file format for both SLABScape and SRAPI use (IN DEVELOPMENT)
      • new use of SLABScape as an SRAPI Scene file editor for end-user applications (IN DEVELOPMENT)
    • SLABScape:  Improved DIS support, including render-time radio ID, frequency, and frequency radio solo specification and a log window for querying DIS information.
    • SRAPI/slabwire:  Replacing a stream (e.g., SrcStream()) now returns the previous stream rather than deleting it.
      Important:  It is now the user's responsibility to delete the previous stream!
    • SRAPI/slabwire:  The file for file output is now opened before rendering rather than during construction.  This allows file output to be reused without reallocation.
    • SRAPI:  SrcType replaced by slabwire's StreamType.
    • SRAPI:  SrcLink() renamed SrcAllocLink().
    • SRAPI Scene:  LstPosition() always positions the center of the head.  In the past, if LstSensorOffset() was used to specify the location of a head tracker sensor, LstPosition() would specify the sensor position.  The new function LstSensorPos() now specifies the sensor position.
    • SRAPI Scene:  SrcLocateRel() now disables reflections for the source.  Listener-relative sources are anechoic.
    • slabwire:  dismanager.h no longer requires usrlib headers.
    • slabwire:  In DISManager, auto radio ID assignment can now occur after a stream restart.
    • slabwire:  CSIDISFreq::GetSoloID() retrieves the ID of a soloed radio.
    • slabwire:  SSInUnderflow() renamed SSInOverflow() to better describe condition.
    • slabwire:  CSSI SSInPaused() replaces SSInPlaying().
    • HMIX/HMIX2 render plugins:  The non-spatial vector mix can now be mixed with the two spatial mixes.
    • slabtools:  The continuous wavelet transform MATLAB script cwt.m was rewritten.
    • slabtools:  The Morlet wavelet visualization MATLAB script morlet.m was rewritten.
    • Documentation:  doxygen upgraded from v1.4.4 to v1.5.8.
  • Known Issues
    • The SLABScape binary file format is no longer supported.  It is being replaced by the features denoted  (IN DEVELOPMENT) above.  Thus, SLABScape file-save and file-open are only partially implemented.
    • An audible artifact is sometimes heard when using modSrcStream.
  • Comments
    • Many thanks to the Air Force Research Laboratory (AFRL) and NASA Ames for funding slab3d development.
    • As with previous releases, there have been significant modifications to slab3d.  One should consider this a beta release near the release date and a final release a few weeks later unless otherwise noted.  In other words, a bug notice will be added to the Version History should any be found.
6/6/08 Version 6.2.0
  • Download
  • Contents
  • Additions
    • SRAPI:  SrcStream() allows a File, Memory, or URL stream to be replaced during render-time.  This is demonstrated by SLABScape.  If a file is being rendered, dragging and dropping a file from a file browser to SLABScape will replace the rendered file with the dropped file.
    • SRAPI/slabwire:  CResampler2 provides support for resample factors other than 1,2,4,8x.  Resampling occurs when input and render rates differ and/or when upsampling for the oversampled delay line.  The CResampler2 sample rate conversion algorithm is the bandlimited interpolation algorithm implemented in the resample and libresample software packages (see http://www-ccrma.stanford.edu/~jos/resample/).  A feature was added that allows the anti-aliasing filter to be bypassed (see CSSI::SSInSampleAlias()).
    • SRAPI/slabwire:  Remote URL-specified files can now be streamed and rendered in real-time (see SrcAllocUrl() and CSIUrl).  Only HTTP addresses have been tested.
    • SRAPI/slabwire:  Individual CSIDISFreq radios can now be soloed.
    • SRAPI/slabwire:  CSIDISRadio streams can now be queried to determine if they are part of a frequency pool or if they are soloed.
    • SRAPI/slabwire:  The CDISManager GetRadioPooled() function indicates if a radio is part of a frequency pool.
    • slabwire:  CDelayLine can now advance by samples as well as frames.
    • slabwire:  CSIList Replace() replaces one StreamIn with another.
    • slabtools:  dmix.m is a simple wave mix and overflow visualization script.
    • slabtools:  morlet.m is a Morlet wavelet visualization script.
    • slabtools:  cwt.m is a Continuous Wavelet Transform (CWT) script.
    • slabtools:  wmdemo.m demonstrates the "Practical Guide to Wavelet Analysis" CWT.
    • slabwcon:  CResample is a class version of libresample with a different buffering strategy.  CResample uses a rotational input buffer and a fixed-length output buffer.  CResample was used as the basis for slabwire's CResampler2.  Test cases were added to slabwcon to compare libresample, CResample, and slabwire (CResampler2) sample-rate conversion.
    • SLABWireDemo:  HTTP stream demo added for CSIUrl.
  • Modifications
    • SRAPI/slabwire:  There has been an SRAPI/slabwire paradigm shift.  Rather than hide slabwire input streams from the SRAPI user, SRAPI users now interact with input streams directly for stream-specific actions.  This eliminates cumbersome SRAPI wrapper functions.  The following sound source StreamIn access macros were added to srapi.h: siStreamIn(), siGen(), siDISRadio(), siDISFreq(), siVoipID(), siFile(), and siMemory().  The SRAPI functions SrcComID(), SrcStreamCtl(), SrcGenCmd(), SrcGenEnum(), and SrcGenInfo() have been removed.  The various apps have been updated accordingly (e.g., slabcom, slabcon).  See the CSRAPI class description in the SRAPI Reference Manual for a list of relevant slabwire functions.
    • SRAPI/slabwire:  If a sample overflows on output, it now clips to +/- 1 instead of wrapping.  This greatly reduces the resulting audible artifacts.
    • SRAPI:  GetClips() was moved from CScene to CSRAPI.  Clipping now occurs in the output stream versus the individual render plugins.
    • slabwire:  The slabwire header files have been moved from the old slabwire directory slab3d/include/slabw/ to the new combined slabwire and SRAPI directory slab3d/include/.
    • slabwire:  The gplugin.h generator plugin interface was simplified.  Generator commands are now handled via function overrides instead of command messages.  The gslab and gstk generator plugins were updated accordingly.
    • slabwire:  Several StreamIn and StreamOut classes were renamed to replace the TLAs (three-letter acronyms) with human-readable names: CSIF to CSIFile, CSIM to CSIMemory, CSIV to CSIVoipPort, CSIP to CSIVoipID, CSIT to CSITrack, CSIR to CSIUser, CSID to CSIDevice, CSIS to CSIAsio, CSIG to CSIGen, CSOD to CSODevice, CSOS to CSOAsio, CSOX to CSODSound, CSOF to CSOFile, and CSOM to CSOMemory.
    • slabwire:  DSP input stream management now allows for render-time replacement of input streams.
    • slabwire:  CResampler now allows subclasses to support previously unsupported resample factors.
  • Comments
    • Many thanks to the AFRL (Air Force Research Laboratory) and NASA Ames for funding these features.
    • This release is high on the beta scale due to extensive slabwire and SRAPI changes.  Note, though, this does not imply known instability.  It simply means there has been little use of the mods.
    • Although DIS support code has been added to slab3d (e.g., SrcAllocDISRadio(), SrcAllocDISFreq(), CSIDISRadio class), the underlying DIS interface code is awaiting release approval.  Thus, the userlib/slabDISInterface library is a nonfunctional stand-in.  The release executables and libraries are built with the nonfunctional stand-in library.

1/12/01

Welcome to the slab3d home page!  The slab3d software and documentation are works-in-progress.  Please report bugs or comments to the slab3d mailing list.
     
  Versions 5.4.0 and beyond use ASIO Technology by Steinberg.  ASIO is a trademark of Steinberg Soft- und Hardware GmbH.

Prior Versions      Top