slab3d logo

        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.  Some components, e.g., the C#-based applications and assemblies, will likely require a more recent OS like Windows 7.  If executing a slab3d application reports a missing DLL, the likely candidate dependencies are the:  DirectX End-User Runtime June 2010, XNA 4.0 Redistributable, .NET 4, or  Visual Studio 2015 Redistributable (for all, see The Microsoft Download Center).  The most recent slab3d libraries and executables are built using Microsoft Visual Studio 2015.  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 preferred location.
  3. To create a slab3d Start Menu folder, execute SLABScape from the release bin\ directory, open the About dialog in the Help menu, and press the "Create slab3d Start Menu folder" button.

To get started, see the following items in the slab3d Start Menu or installation directory:

Version History

slab3d version number = major.minor.release

4/17/17 Version 6.8.1
  • Download
  • Contents
  • Overview
    • This release focuses on AvadeServer improvements and the addition of two new spatial sonification alerts for obstacle avoidance, ObstacleFM and ObstacleFMSin.  The alerts are triggered by virtual environment obstacle-listener distance thresholds where an obstacle is a sound source / sonifier pair in AvadeServer.  Two new corresponding AvadeServer commands have been added, obstacleLLH() and listenerLLH(), where the LLH suffix indicates the use of WGS84 Latitude-Longitude-Height (LLH) coordinates.  LLH coordinates were introduced in an effort to ease integration with aviation simulators and aircraft.  AvadeServer support for the UDP network protocol was added to improve client/server update-rate timing behavior.  And the CCRMA Synthesis ToolKit slab3d generator plugin gstk was updated from STK v4.2.0 to the current v4.5.1.  gstk provides access to a set of "off-the-shelf" synthesis algorithms and provides an initial platform for the application of physical models to sonification.  The sonifications and UDP network protocol are demonstrated by the new avs_2son_helmet.avf AvadeServer configuration file and AvadeClient "Update Rate Demo".  Together, they demo the Sample Drift Trajectory discussed in the AHS conference paper "3D-Sonification for Obstacle Avoidance in Brownout Conditions".
  • Modification Details
    • slabwire
      • CWaveform, CWaveTable, CSaw - The CWaveform base class was added to provide a single interface for waveform subclasses, e.g., the existing CWaveTable and the new non-band-limited sawtooth CSaw.  This simplifies waveform selection for generators that support multiple waveforms, e.g., the new "fmpulser" generator.
    • gslab generator plugin
      • The new "tpulser" Generator Plugin has been added (class CGenTPulser).  tpulser implements a hard-coded pulsed four-waveform additive synthesis algorithm.  Its only parameter is amplitude as it is, by design, a template for implementing basic few-component complex waveforms.  It presently consists of four sine waves at 500, 1000, 2000, and 3000 Hz.  The pulse envelope has a period of 1 s, a duration of 350 ms, and fade in/out ramps of 10 ms.
      • The new "fmpulser" Generator Plugin has been added (class CGenFMPulser).  fmpulser implements a pulsed frequency-modulation algorithm with carrier and modulator parameters:  waveform, amplitude, frequency, and phase, and pulse envelope parameters:  period, duration, and fade.
        The algorithm:  Out = Envelope*Car.Amp*Car(Car.Freq+Mod.Amp*Mod(Mod.Freq)).
        The waveforms:  sin, band-limited triangle (up to harmonic 11), band-limited sawtooth (up to harmonic 11), band-limited square (up to harmonic 11), and non-band-limited sawtooth (can alias).  Note, waveform indices are parameter tracked with leaky integrators so all modulations and parameter changes should be fairly smooth.
    • gstk generator plugin - CCRMA Synthesis ToolKit  (STK) Instruments
      • STK was revisited as an Open-Source "off-the-shelf" software synthesizer solution.  STK contains a collection of physical-model Instruments.  The STK release used to build gstk was upgraded from v4.2.0 to v4.5.1.
      • STK is now fully integrated into the slab3d release in slab3d\usrlib\.
      • The STK wave data was moved from slab3d\wavs\ to STK's default slab3d\usrlib\stk-4.5.1\rawwaves\.
      • Note: The STK v4.2.0 test utility stk1 was not updated to v4.5.1.
      • The gstk parameter list: inst, amplitude, setFreq, noteOn(Freq), onAmp, noteOff(Amp), ctlChange(Num), and ccValue.
      • The gstk instruments:  BandedWG, BlowBotl, BlowHole, Bowed, Brass, Clarinet, Drummer, Flute, BeeThree, FMVoices, HevyMetl, PercFlut, Rhodey, TubeBell, Wurley, Mesh2D, ModalBar, Plucked, Mandolin, Resonate, Moog, Saxofony, Shakers, Simple, Sitar, StifKarp, VoicForm, and Whistle.
      • STK (c) 1995-2016 Perry R. Cook and Gary P. Scavone. All Rights Reserved.
        STK website: https://ccrma.stanford.edu/software/stk/
    • SRAPI - Slab3d Render API
      • The coordLLH struct was added for Latitude-Longitude-Height (LLH) coordinates.
      • The coordECEF struct was added for Earth-Centered, Earth-Fixed (ECEF) coordinates.
      • The coordENU struct was added for East-North-Up (ENU) coordinates.
      • The LLH2ECEF() and LLH3ECEF() helper functions were added for LLH to ECEF coordinate conversions.
      • The ECEF2ENU() helper function was added for ECEF to ENU coordinate conversions.
      • The EnvLLHOrigin() function was added to specify the slab3d local coordinate system tangent point to the globe for LLH conversions to the local coordinate system.
      • The SrcLocateLLH() function was added to position a sound source using LLH coordinates.
      • The LstPositionLLH() function was added to position the listener using LLH coordinates.
      •  LLH conversion verification:  Google Earth Pro LLH data ==> AvadeClient scripts ==> modified AvadeServer ==> logged coordinate data ==> MATLAB analysis
        The corresponding files:
        slab3d\bin\ - avc_listenerwgs84.xst, avc_listenerwgs84ypr.xst, avc_listenerwgs84.png, avc_listenerwgs84.txt
        slab3d\src\AvadeServer\wgs84\ - Google Earth Pro data (*.kml), AvadeServer log output, and matlab verification scripts
    • slabtools
      • ecef2enu() - ECEF to ENU verification script for SRAPI helper function ECEF2ENU().
      • llh2ecef() - LLH to ECEF verification script for SRAPI helper function LLH2ECEF().
      • vallh() - simple utility that calls vall() to view all horizontal-plane azimuths in an HRTF database.
      • mat2slab() - a matlab version issue was addressed where the script might have failed when the measurement grids were identical.
    • MSRAPI - Managed SRAPI
      • The following functions were added:  SiGenEnum(), SiGenStop(), EnvLLHOrigin(), SrcLocateLLH(), LstPositionLLH(), and OutFile().
      • The SiType() return type was changed from int to StreamType.
    • SlabSharp - New Sonifiers
      • SonDrift is presently an axis-thresholds-mapped-to-generators test script.  It plays one of three generators from the direction of threshold crossing using the sonifier parameter interface (versus environment state) with (x,y,z) displacements in meters, where an x threshold crossing is indicated by a tpulser generator, y by fmpulser, and z by noisepulse.  The threshold is 1 meter.
      • SonGeneric is another 1-meter threshold crossing sonifier like SonDrift but it uses the generator attached to the source instead of selecting generators.  So, this tests the sound of a given generator from one of the 3*9-1 = 26 threshold crossing locations about the listener.  Note, AvadeServer does not presently have a user interface for selecting generators other than the default noise generator.  Generator selection is left to the sonifiers.
      • SonObstacleNT was used to test the source-listener AHS paper range rings.  A different combination of noise and two tones is used for each distance.
      • SonObstacleFM is the Mosquito sonifier mentioned in the AHS paper.  It uses a sawtooth as a carrier and a parameter-tracked band-limited (i.e., subtle) square as the modulator.  Distance thresholds are indicated by changing pulse periods.
      • SonObstacleFMSin is the UFO sonifier mentioned in the AHS paper.  It functions identically to SonObstacleFM except it uses a sine as the carrier.
    • AvadeServer
      • A "Defaults" button has been added for setting all AvadeServer settings to their defaults.
      • The enable( idSource, state_bool ) command was added to control the SRAPI rendering enable state of a sound source.  Enable state is shown as the third item in the sound source parenthetical in the Polled State display.  Enabled sound sources consume CPU, so if several sound sources exist, infrequently used ones can be left disabled and only enabled when needed.  If the source is a Sonifier, Sonifier enable state is set, otherwise the SRAPI SrcEnable() function is called.
      • The pre-v6.8.1 locate() command has been renamed polar( idSource, az_degrees, el_degrees, r_meters ) to reflect its polar placement of a sound source.
      • The locate( idSource, x_meters, y_meters, z_meters ) command has been added for positioning a sound source in the local slab3d coordinate system using metric cartesian coordinates.
      • The listener( x_meters, y_meters, z_meters, yaw_deg, pitch_deg, roll_deg ) command has been added for positioning the listener in the local slab3d coordinate system using metric cartesian coordinates and orientation angles.
      • LLH Latitude, Longitude, Height commands have been added to support integration with aviation simulators and aircraft.  LLH coordinates conform to the World Geodetic System 1984 (WGS84) standard for navigation and GPS.
        • The originLLH( lat_deg, lon_deg, height_feet ) (aka origin()) command has been added for specifying the local coordinate system tangent point to the globe.
        • The obstacleLLH( idSource, lat_deg, lon_deg, height_feet, yaw_deg, pitch_deg, roll_deg, size_height_feet, size_width_feet, size_depth_feet ) (aka obstacle()) command has been added for specifying the location of an obstacle.  This command differs from locate() by using both WGS84 and US Customary (USC, e.g., feet) units.  It also provides a future upgrade path for more sophisticated obstacle collision detection algorithms by including dimension parameters (currently unused).
        • The listenerLLH( lat_deg, lon_deg, height_feet, yaw_deg, pitch_deg, roll_deg ) (aka listenerwgs84()) command has been added to position the listener using LLH WGS84 coordinates.  It calls the new SRAPI function LstPositionLLH() and updates all Sonifiers.
      • Support for the following SlabSharp Sonifiers has been added:  Drift, Generic, ObstacleNT, ObstacleFM, and ObstacleFMSin.
      • Sonification can now occur based on SRAPI state, e.g., virtual environment updates, in addition to the sonify() command.  The following commands presently trigger Sonifier updates:  listenerLLH(), listener(), obstacleLLH(), locate(), polar(), and, of course, sonify().
      • The most recently received listener() and listenerLLH() coordinates are now shown in the Polled State display.
      • The new "Relative" button causes the Polled State source location values to switch from the local coordinate system to listener-relative azimuth, elevation, range.
      • Support for the UDP network protocol has been added and made the default.  The UDP protocol is preferable to TCP/IP for high-update rates (e.g., 30Hz, 120Hz).  But, command packet delivery is not guaranteed.  One method for verifying delivery is to use command return values (Settings tab, set by default).  The selection of UDP or TCP/IP is an option on the Settings tab.
      • Incoming commands can now be logged to an XScript log file playable by AvadeClient.
      • Server-to-client command return values are now optional.  Sending command return values is the default setting on the Settings tab.
      • More I/O allocation error checking had been added.
      • Multi-channel stream input support has been improved.
      • The ability to split the Spatial plugin's binaural sound device output to a wave file has been added.  See Settings tab.
      • The listener's HRTF database in the slab3d SLH format can now be specified on the Settings tab.
      • Logging client commands is no longer the default.  However, infrequent commands are always logged in an abbreviated format.  Infrequent commands are those commands not likely to be updated regularly in an update loop, i.e., commands other than listener(), locate(), polar(), listenerLLH(), obstacleLLH(), and sonify().  The old verbose format and the logging of all client commands, regardless of frequency, is enabled via the "Log All Client Commands (Verbose)" button.
      • TCP/IP command return values are now logged.
      • Blackhawk drift trajectoryA new AvadeServer configuration has been added, avs_2son_helmet.avf.  This configuration is nearly identical to the one used for the experiment discussed in the Overview AHS paper.  The son1 sound source is mapped to the ObstacleFM (aka "Mosquito") sonifier, the son2 sound source is mapped to the ObstacleFMSin sonifier (aka "UFO"), and a pair of hard-left and hard-right panned sources are used to play a binaurally-recorded background noise loop (recorded under the helmet earcups in a Blackhawk helicopter).  Note, for the experiment, ASIO was used to reduce audio output latency.  For the demo, ASIO is avoided to reduce potential sound device conflicts.  Latency, in this instance, is not an issue because the listener is not head-tracked or responding to stimuli.

        To test the configuration one can use the new AvadeClient "Update Rate Demo" which updates listener position using a linear drift trajectory (identical to the AHS paper "Sample Drift Trajectory") (see the figure to the right).  One first opens the AvadeServer configuration file avs_2son_helmet.avf, then starts rendering audio using the "Audio" button and starts listening for UDP commands using the "Listen" button.  The AvadeClient "Update Rate Demo" button can then be used to drift the listener past the sonified obstacles, both at the origin, using a 60 Hz update rate.  The listener drifts through the alert rings: Advisory, Caution, Warning, Caution, Advisory (end, pictured).  Higher urgency is indicated by higher pulse rates with Warning > Caution > Advisory.  The first drift pass demonstrates the ObstacleFM sonifier, the second, the ObstacleFMSin sonifier.
    • AvadeClient
      • Support for the UDP network protocol was added.
      • Command return values are now optional.
      • Support was added for all of the new AvadeServer commands:  originLLH(), obstacleLLH(), listenerLLH(), locate(), polar(), and enable().
      • The new "Update Rate Demo" was added for demonstrating and testing a 60 Hz virtual environment update rate.  As mentioned earlier, the script generates the Sample Drift Trajectory from the Overview AHS paper.  However, to ease implementation, it uses the local slab3d coordinate system instead of LLH.
        Note:  Update Rate Scripts are not displayed in the Script Editor in an effort to preserve timing accuracy during script execution and to not impose limits on script length.
      • The Update Rate Demo makes use of the Open-Source HighPrecisionTimer project by Mike Zboray.  This project allows C# access to C++ "Multimedia Timers".  Multimedia Timers are needed for the short update periods that correspond to high update rates.
      • To allow "Update Rate" scripts besides the Update Rate Demo to be Run, two new checkboxes have been added.  The "Update Rate Script" checkbox, when checked, disables the Script Editor in order to improve script timing.  The "High-Rate Timer" checkbox, when checked, causes a Multimedia Timer to be used in place of a Windows Timer.  This lowers the minimum script time resolution from 56 ms to 1 ms.  However, error handling is not as robust (hence the "risky" designation).
    • slab3d User Manual
      • Minor updates have been made to the Open-Source Software, Coordinate Systems, and AvADE Server Software sections.
    • Comments
      • I thank the U.S. Army AMRDEC 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.
8/12/16 Version 6.8.0
  • Download
  • Contents
  • Overview
    • This release contains the modifications required to upgrade the slab3d development environment from Visual Studio 2010 to Visual Studio 2015.  Given that Microsoft no longer supports XNA, a third-party package is required to allow VS2015 to support legacy XNA projects.  Thankfully, the excellent "XNA Game Studio 4.0.5.zip" package exists for this purpose (available at https://mxa.codeplex.com/releases/view/618279).  This zip contains all required DirectX dependencies, XNA installation files, and Visual Studio Extension configuration files organized in a simple five-step installation procedure.
  • Modification Details
    •  DIS Transmitters (slab3d.v6.8.0\usrlib\rtdis\pa_dis_radio\pa_dis_radio.sln)
      • pa_dis_radio.cpp/h:  std/cli array ambiguity addressed by prefixing array with cli:: where necessary.
      • PA_DeviceInfo.cpp and PA_DeviceInfo.h appear to be unused and were thus moved to slab3d.v6.8.0\usrlib\rtdis\common\cpp\audio\jdm_unused\.
      • assemblyinfo.cpp:  SecurityAction::RequestMinimum is obsolete and, hence, removed.
    • SLABLatency
      • Visual Studio 2015's removal of _inp() and _outp() support disabled the use of the parallel port.  slab3d latency measurements have migrated to the serial port so this isn't an issue.
    • SLABWireDemo
      • fft.cpp:  <xcomplex> include removed (crashed compiler), appeared to clash with <complex>.
      • paint.cpp:  abs() to fabs().
    • WINVER and _WIN32_WINNT
      • These defines frequently found in StdAfx.h files indicate the target platform.  VS2015 does not support 0x0500 indicating Win2k and WinME and above.  Thus, these were migrated to 0x0501 indicating WinXP and above.
    • Clean Scripts
      • Minor mods to cleanrel.bat and cleandev.bat to address evolving detritus.
      • The new slab3d\bin\Microsoft.Xna.Framework.* DLL and XML files were left in place.
    • Float Casts
      • Several float warnings were fixed with casts:  wavetabs.h, gslab.cpp, slabcon.cpp, dlggen.cpp, and fftdata.cpp.
    • AvadeClient
      • Bug Fix:  The Spatial Demo script priorities for speak() "azimuth 20 caution" and "and warning" could cause an enqueuing of the former so that it played again after the latter.  The priorities were changed from 4 to 5 and 3 to 5, respectively, to eliminate potential unintended repetition.
    • Comments
      • I thank the U.S. Army AMRDEC and NASA Ames for funding this iteration of slab3d development.
      • This is a slab3d Visual Studio 2015 beta release.  Future work will continue with this code base and development environment.
      • To modify existing slab3d projects that "Reference" srapi or slab3d, one can eliminate the srapi "Reference" for the app or slab3d assembly to prevent slabw and srapi rebuilds (an srapimr.lib library input might have to be added).  The release cleaning causes Visual Studio to flag slabw and srapi as needing to be rebuilt (and, thus, usrlib libraries as well).
8/12/16 Version 6.7.5 Known Issues
  • AvadeServer Application Persistence After Closing
    • After closing, the AvadeServer process was noticed to remain active at times, leveling off at about 15% CPU use (typically increasing from single digit simple rendering tests).  Having both "Listen" (listening for and/or having an active TCPI/IP connection) and "Audio" (audio I/O streaming and rendering) states active seemed to increase the likelihood of this occurring.  If this state occurs, the task can be ended using Task Manager.
  • DIS Radio Long-Term Uninterrupted Audio Streaming Latency Increase
    • When using DIS Radio in a long-term uninterrupted network audio streaming context, it was sometimes noticed that the voice communication latency would increase over time.  This state appeared to be triggered by a system load event, e.g., starting a CPU-intensive application.  Note, in practice, one typically uses push-to-talk or automated push-to-talk via dB-thresholding (e.g., DIS Transmitter "Voice Activation") which results in relatively short communication segments.  These occur with the reproducible low latency discussed in the user manual and technotes.
  • DISRec DIS Radio Receiver Application Stop/Start Frequency Mapping
    • If the receiver is stopped and restarted and the DIS sound source has existing frequency mappings, those mappings will still be shown.  But, they are not activated until the Set button is pressed for a given frequency.
  • AvadeClient Spatial Demo Script TTS Timing
    • The priorities for speak() "azimuth 20 caution" and "and warning" could cause an enqueuing of the former so that it played again after the latter.  In v6.8.0, the priorities were changed from 4 to 5 and 3 to 5, respectively, to eliminate potential unintended repetition.
  • Note:  Except for the preceding bullet, these issues have not been directly addressed in v6.8.0.
7/26/16 Version 6.7.5
  • Download
  • Contents
  • Overview
    • This release focuses on various improvements to the AvADE (Aviation Auditory Display Engine) Server and Client applications.  The Text-To-Speech (TTS) priority queue was extended to include wave files as well.  A script editor was added to the client.  Assorted usability and robustness modifications were made and a simple latency analysis performed (see technote tn20160616_avade_latency.pdf).  The new technote tn20160725_avade_setup.pdf provides an AvADE Client/Server setup guide.  To improve future AvADE TTS support, test SAPI voices, and generate TTS wave files, the WinSpeak application was extended to support both the .NET and COM SAPI 5.4 APIs (see technote tn20160414_text_to_speech.pdf).  A WinSpeak executable is now released.
  • Modification Details
    • AvADE Server Application
      • Priority parameter added to playstream() command.
      • The sonify() sonification value parameters have been increased from one to three.
      • The same source can now be used with the speak() and playstream() commands.
      • The stream name can now be changed by clicking on the name in the stream list.
      • The stream parameters can now be changed by double-clicking the name in the stream list.
      • The default source range has been reduced from 0.5m to 0.1m (the listener is typically stationary at the origin).
      • latency() command added for client-to-server and server-to-audio_out latency measurement (see LatencyMeasure below).  If a source ID parameter is provided, latency() behaves similarly to the play() command (SRAPI SiRewind()/SiPlay()) allowing SRAPI playback latency to be captured (e.g., using a one-shot square wave stream mapped to the source).  If no parameter is provided, latency() simply returns to the client enabling the client to measure the minimum round-trip network time.
      • A latency analysis build of AvadeServer can be created by defining LatencyMeasure.  This adds Stopwatch timestamps and serial port event externalization for oscilloscope capture.  When defined, the latency() command will pulse the serial port upon receipt, log Stopwatch parameters to the debug window and AvadeServerDump.txt, and enable serial port loopback tests with values logged to AvadeServerStat.txt (unhiding the "Loopback" button on the Settings tab).  See tn20160616_avade_latency.pdf.
      • Improved robustness.
    • AvADE Client Application
      • A scripting editor has been added.
      • The demo (and documentation) files avc_demo_mixer.xst, avc_demo_mixer_comments.xst, and avc_demo_spatial.xst have been removed and are now generated by AvadeClient.  The comments are now in Log commands and the Help tab.
      • A Sonify tab with three sliders has been added allowing sonification values (sonify() commands) to be streamed to AvadeServer.
      • Stopwatch-based timestamps have been placed around the network send/receive code to capture and display round-trip network transport time.
      • A LatencyMeasure build can be created similar to the one described above for AvadeServer.  The latency() command will pulse the serial port just prior to sending a network packet to AvadeServer.  Two additional buttons will be unhidden, "StatStart" and "StatStop".  These enable and disable the logging of send/receive timestamps to AvadeClientStat.txt.
      • Socket write and read timeouts of 500ms have been added.
      • Additional Help text added.
    • WinSpeak Utility
      • The simple COM SAPI test code was expanded to mirror the .NET SAPI implementation with the GUI reorganized accordingly.  The user can now choose between .NET and COM for accessing a voice.  The two APIs were found to behave differently with the same voice, especially regarding SAPI and SSML XML tag support and behavior (e.g., .NET does not support SAPI tags, but appears to support SSML tags better than COM).
      • Note, SRAPI was used to play COM TTS memory in place of .NET's System.Media.SoundPlayer() due to the speech wave data being raw samples (no header).  This provides a good example of how to use Managed SRAPI with the Diotic renderer and synchronous rendering to play memory-buffered sound samples.
      • A WinSpeak executable has been added to the release and the system Start Menu.
      • The readme.txt file was revised.  The slab3d TTS documentation is split between the readme (examples and notes), the Form1.cs comments (MSDN SAPI 5.4 .NET and COM links), and the tn20160414_text_to_speech.pdf technote (TTS overview and third-party voice options).
    • Sonifier and Audio Locator Reorg
      • Sonifiers.cs:  Updated the names of all Sonifiers and Locators, e.g., prefixed all Sonifiers with "Son".  Simplified the Sonifier interface and made all existing Sonifiers compatible in regards to the setting of sonification values.  This enabled all existing Sonifiers to be selectable by AvadeServer (as well as future Sonifiers).  Moved the Sonifiers enum from AvadeServer to Sonifiers.cs and added missing Sonifiers.  The LocAzNoiseTone and LocAzImpTone Audio Locators were moved from Sonifiers.cs to AudioLoc.cs.
      • The SonAzNoiseTone and SonAzImpTone SrcLocatePolar() functions were replaced by SrcLocateRel() (these Sonifiers were previously used with the listener at the origin).
    • SlabSharp Assembly
      • Stat.cs:  Added a time base init in the constructor so Perf() can be relative to app start or most recent Stat.Start().  Added FilenameStat and FilenameDump properties to allow user to set the name of the output files.  These default to the old hardcoded names of "stat.txt" and "dump.txt", respectively.
      • XScript.cs:  SetCurIndex() added for random access script start.
    • SRAPI Library
      • SiPaused() added for checking stream paused state.
    • Slab3d Assembly
      • SiAllocMemory() and SiPaused() added.
    • Netcom/VoIP:  Netcom renamed DISRec (DIS Receiver) to reflect it's pairing with the DISTrans (DIS Transmitter) app.  Also, the JVoIP-based VoIP support has been removed from Netcom as well as slab3d, in general.  JVoIP was no longer supported, had somewhat high latency, and was superseded by two DIS implementations that provide lower latency and more features.
    • slabtools
      • ahm2sarc.m was updated from the 2006 HeadZap AHM file I/O API to a 2015 version of the HRTFDevKit API.  The 2006 API ahm2sarc.m was renamed ahm2sarc1.m.
      • The 2006 API zap2sarc.m was renamed zap2sarc1.m to be consistent with ahm2sarc.m.  (An HRTFDevKit version does not exist.)
      • ahm2slab.m created to convert AuSIM AHM files to slab3d HRTF database (SLH) files.  The AHM file format is fairly flexible and complex.  ahm2slab only converts the AHMs that contain data compatible with the SLH format.
      • hen() bYaw flag added to narrow IID color axis for yaw error visualization.
      • hencbview.m:  critical-band IID visualization added.
    • Documentation
      • Added technote tn20160414_text_to_speech.pdf:  Discusses Windows managed SAPI interfaces, SAPI/SSML XML markup, and third-party voices.
      • Added technote tn20160616_avade_latency.pdf:  Describes an Avade Client/Server latency analysis comparing the MOTU PCI 424 and the USB RME Fireface UFX audio peripherals.  Both network and server audio latency were examined.
      • Added technote tn20160725_avade_setup.pdf:  Provides an AvADE Installation, Configuration, and Interaction Setup Guide.
      • The technote tn20050228_asio_latency_reduction.pdf was created from the slab3d User Manual appendix.
    • Comments
      • I thank the U.S. Army AMRDEC and NASA Ames for funding this iteration of slab3d development.  I also thank CereProc for providing the Isabella and Katherine voices for research use.  These proved useful for WinSpeak development and TTS wave file creation.
      • 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/10/15 Version 6.7.4
  • Download
  • Contents
  • Overview
    • This release focuses on fog and lighting effects, space camera motion, XNA 4 timing, latency analysis, and audio-visual synchronization, translation sonification, and DIS Radio network communications.  Two executables were added to the distribution, DISTrans, a DIS Radio transmitter app, and Netcom, a DIS Radio and VoIP receiver test app.  The AvADE Server receiver was changed from VoIP to DIS Radio to reduce latency, to support DISTrans, and to conform to a network communications standard (IEEE Standard 1278).
  • Modification Details
    • slabwire library
      • DISManager:  RT_DIS support added to CDISManager functions GetRadioNum(), GetFreqNum(), GetRadioID(), and GetFreq().  Note, though, the pre-RT_DIS DIS API (aka 2009 API) takes precedence so if both APIs used in the same execution, the 2009 API values are returned.
      • SSIn_RT_DIS_Radio_Set_UDP_Receiver_Port() (and Get) implemented.
      • StreamInDISRadioRT DEF_DISR2PB prebuffered zeroes constant lowered from 200ms to 10ms (tested well and matches RT_DIS default).
      • Bug Fix:  2009 DIS API 16-bit PCM data needed to be byte swapped.
      • Bug Fix:  2009 DIS API read/write locks updated to avoid sample rate error assert.
    • SRAPI Library
      • The high-latency StreamInDISRadio stream type was removed (StreamInDISRadio was essentially replaced by StreamInDISRadioRT back in 2009; if file output desired, real-time output can be split to a file).  The corresponding changes were made to SiAllocDISRadio() and SiAllocDISRadios().  The DisSilence constant was removed and DisPreBuf was lowered from 600ms to 10ms (to better reflect StreamInDISRadioRT use).
      • The DIS Manager functions DMGetRadioNum(), DMGetFreqNum(), DMGetRadioID(), and DMGetFreq() now support RT_DIS.
      • The ntpulser (noise + two tones pulser) signal generator was added to the gslab generator plugin.
    • SlabSharp Assembly
      • StreamInDISRT (RT_DIS API) added to StreamType enum.
      • Two sonifiers were added to Sonifiers.cs.  The SonAzElRange sonifier uses spatialized noise and tone pulses to sonify azimuth, elevation, and range.  The SonTrans sonifier uses spatialized noise and tone pulses to sonify x, y, and z translations.
    • SlabX Assembly
      • GtTimer and Panel.Draw() time accuracy improved.
      • Shader.cs:  New classes added to support fog and lighting.
      • XScapeFile.cs:  Fog and Lighting added to XScapeFile format.  PreTrain bool to string.
      • Obj3D.cs:
        • Fog and Lighting properties added.
        • GraphDev, BasicEffect, Content, and Cam now static.  BasicEffect creation moved from Game to GraphDev set.  This simplifies 3D object initialization as illustrated by changes made to XScape Game1.cs.
        • Default Cam added.
      • Objects.cs:
        • ObjReticle added.
        • ObjGround now supports fog and lighting (old ground now ObjGroundColor).
        • Models support new fog and lighting.
        • The skybox is not rendered when fog enabled.
        • Skybox now moves with cam in y as well as x,z and supports collision detection (both changes for ground off, e.g., space simulations).
      • ObjectsMS.cs:  Fog supported.
      • CamYPR.cs:
        • Up/Down added to Move(), MoveKey(), and MovePad().  Roll added to MoveKey().
        • The MatCam and Look properties were added for use by objects placed relative to camera, e.g., ObjReticle.
        • FlightRoll property added to disable flight model for space motion.  Defaults false.
        • SpaceMotion property added to support new MoveSpace() space motion (Move() now MoveGround()).
      • Bug Fix:  Update period counter accuracy improved in LowVis.cs.
    • XScape Application
      • Fog added to LowVis tab.
      • Lighting tab added.
      • SpaceMotion checkbox added to enable space camera motion.
      • The new XScape file scape_space.xsc (in bin\) demos the use of the space camera (xbox controller recommended).
      • Additional motion information added to XScape help.
      • Update() time accuracy improved.
    • AvADE Server Application
      • The VoIP stream input option was replaced by DIS radio to reduce latency, to support DISTrans, and to conform to a standardized form of network communications.
    • Netcom Application
      • The GUI was expanded to allow different network communication configurations to be tested without source code modification.
      • DIS radio and frequency query features were added for the RT_DIS API.
      • Detailed ASIO information is now displayed at app start.
      • DIS radio and VoIP latency tests were performed.  Results are available in the slab3d user manual.  On a single PC, DIS transmitter-to-receiver (DISTrans/Netcom) latencies were measured between 27-34ms.  The SLABCall/Netcom latencies were measured: VoIP ID stream 98ms, VoIP Port stream 134ms.
    • WinSpeak Utility
      • A default-voice COM SAPI 5.4 (i.e., SpVoice versus SpeechSynthesizer) speak option was added to test SAPI XML tags (versus SSML).
    • XTime Utility
      • GamePad and GameTime.ElapsedGameTime.Ticks analysis added.
      • XTime was used to perform the latency analysis reported in the new technote tn_av_latency_2014.docx.
    • XMap Application
      • The XMap executable is no longer released or added to the Start Menu links.
    • RT_DIS 3rd-Party Library and Application
      • pa_dis_radio (DIS transmitters making use of PortAudio)
        • DISTrans:  A DIS transmitter Forms app was created based on John Stewart's DIS_Radio WPF application.  It simplifies DIS API access for the purposes of testing and experimenting.
      • rt_dis_radio (DIS radio library used by SRAPI)
        • Radio ID and frequency query features added.
        • Bug Fixes:  See mc_DIS_radio_transceiver.cpp.
        • Note:  Since this is a 3rd-party library, all modifications are noted with "JDM".
    • Documentation
      • The new technote tn_av_latency_2014.docx discusses the timing, latency analysis, and synchronization of the xbox controller, XNA 4, and slab3d.
  • Comments
    • I thank 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.

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.
     
asio logo   Versions 5.4.0 and beyond use ASIO Technology by Steinberg.  ASIO is a trademark of Steinberg Soft- und Hardware GmbH.

Prior Versions      Top