6/30/14 |
Version 6.7.3
- Download
- Contents
- Overview
- This release focuses on AvADE Server and Client
improvements. The Mixer Render PlugIn is now supported, as is
a wider range of ASIO peripherals (namely, the well-suited USB Focusrite Scarlett 18i20). The AvADE Client application can
use scripting and scripted screenshots to mimic a variety of client
usage scenarios. This release also includes ASIO and XNA latency
analysis software, measurements, and documentation.
- Modification Details
- slabwire library
- CSOAsio now supports audio peripherals
that provide a range of buffer sizes specifiable via software.
CSOAsio will ensure the selected buffer size is a multiple of
the audio processing frame size. The GetAsioBufSize()
function was added.
- SRAPI Library
- The GetASIOChIn() and GetASIOChOut()
functions have been replaced by a more informative API:
GetASIOInfo() and the ASIOInfo struct.
- slabcon demo application
- The demo_script1() demo uses the new ASIO
info query API.
- Slab3d Assembly
- Added SrcMixGain(), SrcMixAux(),
GetASIOInfo(), and the ASIOInfo struct.
- XScript XML Scripting Language
- No longer depends on XNA, e.g., Vector3 to
floats (XScape updated accordingly).
- XScript was moved from the SlabX assembly to
the SlabSharp assembly.
- The XsString command was added.
- AvADE Server Application
- Support for the Mixer Render Plugin was added
including the new commands mixgain and mixhrtf.
- A default sonifier was added as a proof of
concept (XScape use more relevant).
- An ASIO Details query capability was added
(Settings tab) for querying buffer sizes and latencies.
- Two ASIO devices have been tested for use and can be
recommended for two different scenarios:
- Minimum Latency: MOTU PCIe card and 24
I/O unit, estimated mean API latency for a buffer size of 64
samples is 4ms, I/O latency 5ms.
- Convenience: Focusrite Scarlett 18i20
(USB, 2 headphone outs, 8 mic pres, simple and flexible
configuration), estimated mean API latency for a buffer size
of 2.0ms (89 samples) is 11ms, I/O latency 15ms.
- AvADE Client Application
- Scripting and two image windows (for
screenshots) added.
- Spatial and Mixer Render Plugin example
scripts can be generated to test all client/server commands and
to serve as script templates. A commented version of the
Mixer script has also been added. The Spatial script tests
the default server configuration - simply press Listen and Audio
on the server and Host, Connect, and Run on the client.
- HeadMatch Application
- Lock used in place of sleep to allow DSP
parameters to stabilize (see "DSP Parameter Caution" in
slab3d User Manual).
- SLABSurface Application
- The SLABSurface executable is no longer
released or added to the Start Menu links.
- WinSpeak Utility
- The readme.txt file contains updated info
regarding SAPI voices.
- XTime Utility
- Unarchived and used to perform a quick
Windows 7 and XNA4 audio-visual latency measurement.
- Documentation
- The following sections have been added to the
slab3d User Manual: Appendices "AvADE ASIO Audio
Peripheral Latency Comparison" and "Latency Reduction
Techniques for Software-Based Real-Time Auditory Displays",
"AvADE Server Software", and "DSP Parameter Caution".
- The technote slab3d Audio-Visual Latency
Analysis was added that discusses C#-based latency
analyses performed in 2012 and 2014.
- slabtools matlab scripts
- Minor changes and additions related to figure
generation: gridprint.m, hencbview.m, latbar.m, latbar2.m,
latmc.m, and vcfreqlog.m.
- 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.
|
11/2/13 |
Version 6.7.2
- Download
- Contents
- Overview
- This is primarily a slabtools and low-latency DIS
beta release. The new slabtools relate to the conversion
and verification of the Listen and CIPIC HRTF database collections.
A corresponding user manual has been added to the docs.
Low-latency DIS radio support was provided by AFRL programmer John
Stewart. It includes a new set of SRAPI DIS functions
(RT_DIS), a slabwire StreamIn class, a support library, and a DIS
radio transmitter app. An SRAPI network communications API
test app, Netcom, was added that tests both the old and new SRAPI
DIS interfaces.
- Modification Details
- Slab3d Assembly
- DIS support was added for the low-latency
RT_DIS API and the 2009 SRAPI DIS API.
- The following functions were also added:
GetCPU(), SiTypeName(), GetSrcAlloc(), GetSrcNum(), and
GetSrcStreamID().
- SlabX Assembly
- Modified SlabX.Panel meter color behavior.
- SRAPI Library
- RT_DIS API added.
- slabwire wrapper functions were added for the
2009 DIS API.
- New function: GetCPU() for CPU use query.
- New functions: SiTypeName() and
GetSrcStreamID() for querying slabwire StreamIn/StreamOut types
and strings.
- slabwire library
- New sample stream type StreamInDISRT
(streams.h) and StreamIn class CSI_RT_DIS_Radio.
- streams.h is now accessible from C# via
SlabWire.StreamTypes (C++ enum to C++/C# struct).
- usrlib\ directory
- New rtdis\ directory: John Stewart's low-latency DIS
library and DIS transmitter app.
- SLABScape Application
- SLABScape's GetCPULoad() replaced by SRAPI's GetCPU().
- HeadMatch Application
- The HeadMatch HRTF listening utility binary
is now included in the release.
- Netcom Application
- Netcom is a new app that demonstrates and tests the SRAPI
network communication functions. Netcom is not a
general-purpose app; it is intended for use at the source-code
level.
- slabtools matlab scripts
- Several scripts have been added to convert
and verify the Listen and CIPIC HRTF database collections: bound.m, ccheck.m, cfull.m,
cipic2slab.m, cpath.m, ctest.m, dmap.m, lcheck.m, lfull.m,
listen2slab.m, listcen2slab.m, ltest.m, vsym.m, hencb.m,
hencbmat.m, hencbview.m, henitd.m, ithresh.m, p2r.m, r2p.m,
poserr.m, serrvis.m, snow2sarc.m, vcen.m, vcenf.m, vcfreq.m,
vcir.m, vcitd.m, vcsym.m, vsym1.m, and vsyms.m.
- The new
slabtools User Manual documents their use.
- HRTF Databases
- Comments
- I thank NASA Ames for funding this
iteration of slab3d development and John Stewart, Brian Simpson, and
the AFRL for providing low-latency DIS support. I also thank
the Listen Project and CIPIC lab for making excellent spatial-audio
resources publically available.
- 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. This
release is a bit more beta than usual being the new features have
not yet been used in experiments or
prototypes.
|
8/5/13 |
Version 6.7.1
- Download
- Contents
- Overview
- This is a refinement release related to in-house
experiment development. The refinements mainly relate to XNA
opacity, Audio Locator and Sonifier robustness, SRAPI function
blocking, and a simple four-meter sprite-based 2D overlay for
XScape-based 3D displays.
- Modification Details
- Slab3d Assembly
- Added UpdateWait(), UpdateWaitReset(),
Lock(), and Unlock().
- SlabSharp Assembly
- AudioLoc.cs and Sonifiers.cs - enable state now managed by Sonifier instead of
sound source, added thread sync code for improved robustness.
- SlabX Assembly
- CamYPR.cs, LowVis.cs, Map.cs, Obj3D.cs,
Objects.cs - RGB values now based on opacity (due to XNA 3.1 to 4.0
change in alpha rendering).
- Map.cs - pixel texture moved to ViewMan (View
Manager), Load() function now Create().
- XScapeFile.cs - Trigger and ListTrigger
fields added.
- New file: ViewMan.cs (View Manager) was moved
from XScape to SlabX to allow XScape-based displays to be easily
integrated into other apps. A simple selectable meter
panel was added (see SpriteControls.cs). "Triggers" were
added to the layout map. The 2D map's pixel texture was
moved to ViewMan to support 2D drawing.
- New file: SpriteControls.cs provides a
hard-coded panel of four extremely simple "distractor" meters.
This was developed for an in-house experiment, but this file can
serve as a starting point for adding 2D sprite-based controls to
a SlabX-based 3D display. A bit of commented-out test code
remains in XScape - see mouseClick() and ViewMan.Select() use.
- SRAPI Library
- Added UpdateSet(), UpdateWait(), and
UpdateWaitReset() to improve thread synchronization capabilities and to
enable scene state function blocking (i.e., waiting for scene
state to be applied to DSP before continuing). Function
blocking is helpful for the immediate use of DSP parameters in
C#, e.g., GetSrcAz() (in update loops, polling often makes this
unnecessary, e.g., if az not correct immediatly, it will be the
next update). Blocking is also useful for making sure the
DSP has been updated after enabling a source with SrcEnable().
Note, though, blocking of the type described here is typically
not needed. See the
AzNoiseTone.Enable source code in Sonifiers.cs for an example of
use.
- XScape Application
- XNA 3.1 to 4.0 opacity update.
- The placement of "triggers" was added to the Layout tab.
Triggers are saved in the XScapeFile output file for use by
custom apps.
- A previous/next block open feature was added to the
Layout tab.
- XMap Application
- XNA 3.1 to 4.0 opacity update.
- XUp Utility
- An XScapeFile v6.6.0 to v6.7.1 update code
block was added (see UpdateX() in Form1.cs).
- XTime Utility
- Archived (moved to slab3d\src\archive\).
- slabtools matlab scripts
- New script: c2r.m converts CIPIC
interaural-polar coordinates to slab3d rectangular coordinates.
- vitd.m - improved metrics and display.
- grids.m - added HRTF grid specification,
return, and
the ACD (NASA Advanced Controls and Displays Group) grid type.
- hen.m - added IID (Interaural Intensity
Difference) visualization.
- lrsphere.m (support script) - more view
options.
- Bug Fix: lrsurf.m (support script) - number
of arguments check fixed.
- 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.
|
12/17/12 |
Version 6.7.0
- Download
- Contents
- Overview
- The following development tools have been
upgraded: Visual Studio 2008 to 2010, Windows SDK
v6.0A/v6.1 to v7.0A, .NET 3.5 to 4.0, and XNA 3.1 to 4.0. The new
SlabSharp assembly is a C# extension to the C++/CLI
Slab3d assembly. This release also contains the new SRAPI
client/server and speech synthesis beta applications: AvADE Server, AvADE
Client, and WinSpeak.
- Modification Details
- Slab3d Assembly
- Several SRAPI functions added (see the
msrapi.h modification history).
- Support added for the new SRAPI
notification callback paradigm.
- SlabSharp Assembly
- The new SlabSharp assembly is a C# extension to the C++/CLI
Slab3d assembly. Thus, the SRAPI-related assemblies and
libraries are layered high-to-low as: SlabSharp (C#), Slab3d
(C++/CLI), SRAPI (C++), and slabwire (C++). SlabX functionality
independent of XNA was moved to
SlabSharp (e.g., Audio Locator, SlabBinder, SlabScene, and
Stat).
- Sonifiers.cs - Sonifiers wrap SRAPI signal generators with
added functionality in order to sonify a user-supplied
parameter.
- AudioLoc.cs - The Audio Locator now uses Sonifier subclasses
instead of its own classes for sound source azimuth
sonification.
- SlabX Assembly
- Functionality independent of XNA moved to SlabSharp.
- The use of SRAPI from within SlabX was
reduced as much as possible. As the feature set of both
MSRAPI and SlabX increased, the merged code was becoming
increasingly complex and limiting. SRAPI was completely
removed from the camera, thus listener position is now set using
MSRAPI. 3D objects still update sound source location and
contain SlabBinder for data binding and SlabScene for
serialization, but sound source and StreamIn allocation have been
removed. XScape demonstrates the new API paradigm.
- SRAPI Library
- SRAPI notifacations now occur via callbacks
instead of window messages. If the old behavior is desired, a
PostMessage() can be placed in a callback.
- SiAllocFile() and SiAllocUrl() notifications
now occur using the new notification callback mechanism instead
of window messages.
- New SRAPI functions: SrcGetID() and SiGetID()
for getting valid sound source and StreamIn IDs, SiDone() for
checking StreamIn playback done state, and SiAllocMemory() for
allocating memory buffer StreamIns.
- New SRAPI constants were added to the
slabdefs.h SC struct: NotifyDspDone, NotifyStreamDone, and
AsioDevices.
- slabwire library
- CSIMemory - The memory buffer StreamIn data is now provided
as float samples instead of bytes.
- Bug Fix: CSIVoipID could cause an access violation if
the app was closed while rendering a VoIP sound stream.
- AvADE Client/Server Applications, WinSpeak Utility
- Three new applications have been added to the slab3d\src\ directory:
Avade (AvADE Server, AvADE = Aviation Auditory Display Engine), AvadeClient, and WinSpeak. These
applications demonstrate the use of SRAPI in a C# client/server
environment. Avade supports on-demand SAPI speech
synthesis and spatialization. WinSpeak is a simple SAPI
demo and test utility.
- Note: These applications are beta versions in the
sense they are still in development and have not yet been used
in an actual simulation or experiment setting. But, the
primary functionality is in place.
- XScape Application
- XScape was updated to reflect changes to SlabX, SlabSharp,
and the Audio Locator.
- XTime Utility
- XTime was updated to reflect changes to
SlabX, SlabSharp, and the Audio Locator. These changes
have not been tested (XTime is quasi-archived).
- SLABScape Application
- SRAPI notifacation changed from window to callback.
- As part of the Windows SDK upgrade, the
grammar compiler custom build step was removed. See
slab3d\src\SLABScape\grammar.txt.
- SLABSound Utility
- The WAV file RIFF information and audio
device capability text files are now output to the current directory
instead of the root directory.
- 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.
|
7/9/12 |
Version 6.6.1
- Download
- Contents
- Overview
- This release contains mods related to XScape
entity scripting, visual obstructions, camera spatial disturbances, and
camera 6-DOF movement, audio-visual latency measurement and
synchronization, HRTF listening, and panned rendering. This is
the last release based on Visual Studio 2008, Windows SDK
v6.0A/v6.1, .NET 3.5, and XNA 3.1. These components are being
upgraded to Visual Studio 2010, Windows SDK v7.0A, .NET 4.0, and XNA
4.0, respectively.
- Modification Details
- slab3d assembly
- More SRAPI functions added (see the
msrapi.h modification history).
- Several of the slabmath.h
functions and constants were added to Slab3d via the Slab3d.SlabMath struct.
- slabx assembly and XScript
- CamYPR.cs - Pitch and roll disturbance model
added, Move() API simplified, MoveArrow() and MovePad() added
for arrow key and GamePad movement, simple GamePad flight model
added, and full six degree-of-freedom movement now supported.
- Map.cs - Added full window display, grid
lines, and script path creation and display.
- Physics.cs - New classes including a leaky
integrator parameter tracker for parameter smoothing and lag
modeling and sum-of-sines for disturbance modeling.
- Stat.cs - New C# version of C++ stat.cpp
timestamp functions.
- XScapeFile.cs - Moved to the SlabX namespace,
support for scripted paths added.
- XScript.cs - Reorganized to be more flexible,
moved from XScape to SlabX.
- XScape
- Added visual collision detection spheres
for objects (vs just entities).
- Added Camera tab supporting simple GamePad
flight (disable lock y-axis), speed setting, and a spatial
disturbance model.
- Added XScript tab supporting the creation of
scripted entity paths.
- SRAPI
- New SRAPI functions: SetDelayOut(),
GetDelayOut(), GetDelayOutFrames(), LstHRTFHeader(), and
SrcLocatePan(). GetSrcRel() changed to GetSrcLocType().
- New SRAPI constants were added to the
slabdefs.h SC struct: DelayOutMax(), SrcLocSpatial, SrcLocRel,
SrcLocPan.
- rspatial
- Delayed audio output added (e.g., for synchronizing
audio and visual displays).
- Panned sound sources added so that spatial
and panned sources can be displayed simultaneously.
- gslab
- One-shot playback was added to the
"noisepulse" generator.
- HeadMatch
- The HeadMatch application was added for the
quick comparison of multiple HRTF databases (beta, development
paused).
- cbuilder
- A simple solution was added for building
XNA content (slab3d\src\cbuilder). This solution can be
used with 3rd-party conversion tools to convert Google 3D
Warehouse models into XNA XNB files loadable by XScape (by
placing in slab3d\bin\Content).
- slabtools
- cbe.m - The Normalized Critical Band Energy
is no longer returned in dB.
- dist.m - New 5-sine SOS (sum-of-sines) pitch
and roll disturbance model.
- hcom.m - The Interaural Intensity Difference
value has been added.
- plotresp.m - Support for unwrapped phase and
phase axis min/max added.
- vitd.m - Source-listener distance parameter
and diagonal bias metric added. DIS metric display
simplified.
- SLABLatency and XTime
- The SLABLatency application was unarchived
and upgraded to v6.6.1.
- The XTime application was created for
conducting managed latency measurements similar to those
provided by the unmanaged
SLABLatency application. XTime also tests and demonstrates
the new delayed audio output feature.
- 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.
|
10/6/11 |
Version 6.6.0
- Download
- Contents
- Overview
- This release includes the new C# XNA-based
graphics engine slabx and virtual environment
application XScape.
- Modification Details
- slab3d.dll
- The msrapi assembly was
renamed slab3d (still primarily contains the managed SRAPI
wrapper class MSRAPI). The name change reflects the
namespace and the paired use of slab3d.dll with slabx.dll
(slab3d.dll/Slab3d being the sound engine and slabx.dll/SlabX
being the graphics engine).
- The Src*() state functions now return bool.
- The GetSrcLoc(), SetSharedMemory(), and
GetSharedMemory() functions were added.
- The SC (SRAPI Constants) and Version
(SLAB_VER wrapper) structs were added.
- XNA coordinate functions were added: XSrcLocate(), XGetSrcLoc(), XLstPosition(), and XGetLstPos().
- Bug Fix: The C#/C++ SrcLocate() parameter
mapping was x,y,x instead of x,y,z.
- slabx.dll, XScape, XMap, XUp, and XScript
- slabx is an XNA-based 3D-graphics engine
providing a yaw-pitch-roll camera, skybox, low-visibility model,
2D map, ground surface,
ground cursors, collision detection, slab3d sync/binding/serialization, basic
model/object/primitive support, and the XScapeFile format.
The XScape application demonstrates the use of these features.
- XScape is a C# 3D audio-visual virtual
environment application. It somewhat serves as a
C#/.NET/XNA counterpart to the C++/MFC/DirectX SLABScape.
In the default "Auditory Beacon" configuration, XScape displays
a 3D audio-visual simulation of a spatial-audio
augmented-reality display.
The user is placed in the role of a telepresence operator
controlling a rover on a Martian plateau from a nearby location.
Auditory icons are attached to five entities in the environment.
An Audio Locator can be used to assist with the location of
entities (e.g., for low-visibility conditions).
- XMap displays XScape's 2D map in a separate
application (e.g., to be placed on a second monitor).
- XUp is a utility for updating XScapeFile XML
(.XSC)
files. It simply reads them in, optionally
modifies a few fields (in source code), and writes them out.
- XScript is part of XScape but it is also
meant to be a simple reusable framework for XNA Update()-based
script and modifier processing. It is essentially the
XNA/C# counterpart to SRAPI's SlabScript and Modifier functionality.
- SRAPI
- Sound source IDs can now be allocated in any
order (they previously had to be allocated 0,1,2,...).
- The enums and defines in slabdefs.h were
replaced by the SC (SRAPI Constants) struct to enable managed use.
- Script processing can now occur in its own
thread (see ScriptOpen()).
- Shared memory support was added via SetSharedMemory() and GetSharedMemory().
- GetSrcGain() now returns SC::GainMutedB() for
linear gain 0.
- SiAllocFile() can now specify a sample start
index (also added to Scene file and Modifier).
- The Src*() state functions now check for a
valid source index (false is returned if the index is invalid).
- The GetLstX() etc. functions have been
removed (GetLstPos() preferred).
- GetSrcRel() has been split into GetSrcAz(),
GetSrcEl(), and GetSrcRange().
- slabwire
- A sample start index
parameter has been added to CSIFile::CSIFile().
- rspatial
- Exceeding the delay line is no longer an
error. It now results in the max delay supported.
- gslab
- The "noisepulse" generator has been added to
gslab.
- The gslab.h enums were converted to structs
and ints for managed use. C++ use requires "using
namespace GenSlab;".
- gstk
- Bug Fix: The gstk generator plugin wave
directory was corrected.
- SLABScape
- Bug Fix: Attempting to select the
built-in default HRTF could fail after loading HRTF files.
- slabtools
- c2s.m - A new function to convert CIPIC
coords to slab3d coords.
- grids.m - Was cgrid.m. x,y,z now in
slab3d coords. Listen grid added.
- hcom.m - Energy stats are now returned.
- hen.m - Energy stats are now returned.
A spherical display added.
- map2map.m - A progress meter has been added.
- mat2slab.m - HRIRs and ITDs can now be
specified with unique spherical data grids.
- sitds.m - Compares the Miller and
Woodworth/Schlosberg ITD formulae.
- sitdw - Computes Woodworth/Schlosberg
spherical-head model ITD.
- vall.m - The log frequency tick labeling was
simplified to prevent resize label errors.
- vsym.m - A new function similar to vall.m but
focused on head symmetry visualization.
- vitd.m - Additional stats are computed,
displayed, and returned.
- dustimg.m - A new function to generate images
for slabx's low-vis model.
- Bug Fix: sitd.m - When using three
parameters, the hr parameter was overwritten by the default.
- archive
- The src\archive\ directory was created for
projects that are no longer regularly maintained or built.
The following projects were archived: form320, rsar,
rvbap, SLABForm, SLABLatency, and slabwcon (including
usrlib\libresample-0.1.3).
- documentation
- The HTML "slab3d User Manual" has been
replaced with MS Word and PDF versions.
- 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.
- The managed and XNA-based projects are
works-in-progress. Functionality is added on an as-needed
basis. The main source of documentation is the source code
itself. MSRAPI (Managed SRAPI, slab3d.dll) behaves very much
like SRAPI as illustrated by the mcon and slabcon projects.
The slabx XNA-based classes are new. Their use is best
illustrated by the XScape source file Game1.cs. One would most
likely need some familiarity with XNA to make use of the slabx
framework. This is somewhat new territory for slab3d and
myself. So, any recommendations or comments welcome.
|
11/20/09 |
Version 6.5.0
- Download
- Contents
- Overview
- This release focuses on the Mixer render
plugin, script processing, and managed code use.
- The Mixer Settings dialog was added to
SLABScape and the mixer settings were added to the XML scene file.
A block diagram was added to the slab3d User Manual. The
SrcMix API was refined.
- To enable the use of SRAPI from XML scripts
and managed code, the use of returned IDs, pointers, and slabwire
objects was greatly reduced. This has resulted in significant
changes to the API (see details below). A C++/CLI SRAPI
wrapper DLL was created for managed code use (msrapi project).
- Script and modifier allocation and
initialization of streams was made more robust. If
audible artifacts are heard during script or modifier stream
allocation, the original 1/2/4/8x resampling
algorithm can be selected to reduce stream initialization CPU use.
- Various SRAPI demos were integrated,
simplified, and improved. The SLABX and slabcom applications were
removed with the most relevant portions moved to the slabcon
application. The C# mcon demo application was added.
- The use of the ASIO SDK was simplified.
- Modification Details
- SRAPI
- The source/stream distinction in SRAPI is
now more explicit. There is one source allocation
function: SrcAlloc(). A "sound source" holds emitter state
for the Spatial render plugin and channel strip state for the
Mixer plugin. A "StreamIn" refers to the specific sound
sample stream streamed into the renderer. StreamIns are
allocated and controlled via the Si*() functions. Sound
sources are mapped to StreamIns (and StreamIn channels) with
SrcStream(). Sound source IDs are now user-specified
integer IDs (0 to MAX_SRC). StreamIns are also referenced
via user-specified integer IDs (0 to MAX_STREAM).
Modifiers and script processing were updated accordingly.
See the slabcon application for demos of the new paradigm.
- The IDHRTF HRTF database ID has been
replaced by a user-specified integer ID (0 to MAX_HRTF).
See slabcon for a demo.
- SrcFree() no longer checks if SRAPI is in
an error state before executing. Its return value is now
bool instead of SLABError.
- SetResampler() was added to specify
resampling options. The upsample-delay-lines parameter was
removed from SrcAlloc(). See slabcon for a demo.
- SrcMixReturn() was merged into SrcMixGain().
- SrcMixSend() was renamed SrcMixAux().
The SrcMixSend script command was renamed SrcMixHRTF.
- SrcMixGain, SrcMixReturn, SrcMixHRTF, and
RenderChange settings were added to the XML scenefile.
- SrcMixAux() and SrcMixGain() were added
to SetDefaults().
- GetSrcMixGain(), GetSrcMixAuxEn(), and
GetSrcMixAuxSet() were added to query Mixer plugin settings.
- The Modifier command enums were converted
to functions. See slab3d\bin\slabscript.sls for a demo.
- Several slabdefs.h SRAPI default defines
were replaced by SRAPI function parameter defaults. This
allows initial state to be set using Set
function defaults.
- The default HRTF database resource has
been integrated directly into the srapi library. The
slabcon function libgen() can be used to create the required
header file.
- GetASIOChIn() and GetASIOChOut() no
longer add errors to the log stack and log file.
- The xmlhelp.h XML read/write macros were
integrated into a class.
- The functions XmlApi() and XmlApiElement()
were removed. The Scenefile and Script functions provide
similar functionality.
- The script <User> element was added.
It causes a ScriptCallback() callback.
- slabwire
- The setting of predefined generator
plugin parameters was simplified. The Set() function was
added, PSet() was renamed Apply(), and gslab.h was rewritten.
The new methodology is illustrated in the applications slabcon
and SLABSurface.
- The new CSSI::DelayInit() nResampler
parameter allows the original CResampler resampling algorithm to
be selected in place of CResampler2. CResampler2's
relatively long init time can cause audible artifacts when
allocating wave files from the render thread, e.g., inside a
script.
- CScanTable no longer requires a
persistent table. This also impacts
CSRAPI::ModSrcGainScalar().
- Bug Fix: The streams.h
StreamStrings had "Memory" and "File" reversed.
- SLABScape
- The Mixer Settings dialog was added for
setting Mixer render plugin settings.
- Bug Fix: In the Source Settings
dialog, "File" and "Memory" were reversed, each actually
specified the other.
- slabcon, SLABX, slabcom, SLABCallFile
- The SLABX application was removed with
portions integrated into slabcon (demo_hrtf()).
- The slabcom application was removed with
portions integrated into slabcon (demo_submix()). After slabcom was written, DIS testing switched
to SLABScape. The SLABScape files DlgLog.cpp and slab.cpp
contain the most recent examples of slab3d DIS support.
- The slabcon demos are now better
integrated and can be performed one after the other. The
corresponding source code modifications demonstrate CSRAPI
object reuse.
- The SLABCallFile VoIP stress testing
application was removed due to its need for a time consuming
special-purpose build of jvoip. The related usrlib\
libsndfile project was removed as well.
- slab3d
- The msrapi and mcon projects were added.
msrapi is a managed C++/CLI DLL wrapper for a subset of SRAPI.
mcon is a managed C# version of a subset of slabcon. The
managed/unmanaged interoperability features of slab3d are works
in progress. Suggestions (and/or code samples) are welcome
(jdmiller at sonisphere).
- The method for integrating the ASIO
distribution files with slab3d has changed. The Steinberg
ASIO SDK should now be copied to the usrlib\ directory exactly
as distributed by Steinberg, e.g., slab3d\usrlib\asiosdk2.2
(containing directories common\ and host\). The project
settings for slabw, srapi, SLABSound, SLABWireDemo, and SLABForm
were modified accordingly.
- SLABLatency is no longer kept in sync
with SRAPI changes.
- Comments
- Many thanks to NASA Ames and the Air Force
Research Laboratory (AFRL) 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.
|
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.
|
3/19/08 |
Version 6.1.0
- Contents:
- Additions:
- SLABForm/form320: form320 is a
TMS320C6713 DSK (DSP Starter Kit) and Educational DSP DUAL3006 Code
Composer Studio application. SLABForm and form320 have been
structured to enable simultaneous PC and embedded DSK development.
In other words, the same algorithm that runs from the PC-based
SLABForm should run from the DSK-based form320. This is
demonstrated with a four channel sum (see beamform.cpp). Note,
though, CPU/DSP performance differences might prevent the DSK-based
algorithm from running in real-time. This is the case with the
included delay-and-sum beamformer. This project was halted
prior to beamformer DSK performance tuning.
- SRAPI: SetPIStatus() can now block.
This can help with SRAPI / render plugin synchronization.
- SRAPI: PICmdArg(), GetPIStatusCmd(),
and GetPIStatusArg() can be used to divide the render plugin status
variable into a command and argument.
- SRAPI: SrcAllocSubmix() allocates a
virtual sound source that emits multiple input streams (e.g.,
multiple wave files).
Notes:
1) Prior to this release, a slab3d "sound source" was always
composed of one "virtual entity" "sound source" (aka "emitter") and
one "sample stream input" (slabwire SSI). An alternative could
be to allow arbitrary mappings between streams and emitters but it
would complicate the API and the implementation.
2) This function requires the use of slabwire classes (see the
slabcom demo app).
- SRAPI: SrcAllocDISFreq() allocates a
sound source that is a mix of several remote DIS radios. It is
analogous to a local radio tuned to a particular frequency.
AllocDISRadios() allocates the remote radios. CDISManager is
used to determine the available frequencies. See Comments
below.
- SRAPI/slabwire: 24-bit ASIO support.
The slabwire ASIO support classes CSIS and CSOS were converted from
16-bit PCM to 32-bit float. This allows the ASIO device driver
to determine the bit width.
- HMIX render plugin: The HMIX render
plugin supports two HRTF-rendered headphone displays and a series of
mixer outputs. HMIX and the vector mix plugin VMIX are in
rvmix.dll. The slabconv demo app demonstrates use.
- slabcom: Demo code added for
CSRAPI::SrcAllocSubmix(), CDISManager, and CSRAPI::SrcAllocDISFreq().
See Comments below.
- slabconv: Demo code added for the HMIX
render plugin and plugin variable status blocking and
command/argument specification.
- slabwire: CDISManager::GetFreq() can be
used to retrieve a list of available DIS frequencies. See
Comments below.
- slabwire: CSSIList manages a list of
CSSI (sample stream in) objects. It was created for the CSSI subclasses CSIList, CSISubmix, and CSIDISFreq.
- slabwire: The CSISubmix class mixes
multiple input streams into one. A custom mix can be created
by subclassing from CSISubmix.
- slabwire: The CSIDISFreq class is a
subclass of CSISubmix that mixes several DIS radios based on
frequency. See Comments below.
- slabwire: The CSIDISRadio AutoID
feature automatically assigns a radio ID to an unassigned
CSIDISRadio object when a new radio appears on the DIS network.
See Comments below.
- SLABWireDemo app: The following
features were added to the UI: ASIO device selection, ASIO L,R channel
swap option, and frame length selection.
- Modifications:
- SRAPI: SrcAllocDIS() renamed
SrcAllocDISRadio(). See Comments below.
- SRAPI: Users now interact with
CDISManager directly rather than through the functions GetDISNum()
and GetDISID(). See CDISManager::Get functions and the slabcom
demo app. See Comments below.
- SRAPI/slabwire: Render/Process done
notification messages (CSRAPI::SetNotify(), CDSP::BeginThread(
nCmdDone )) are no longer sent for processing stopped by the user
(e.g., SRAPI::RenderStop(), CDSP::EndThread()). This mod was
done in response to a report and fix sent by Gottfried Haider.
He noticed a RenderStop()/SrcAllocFile()/RenderStart() sequence
could result in a notification message receive after the RenderStart().
- SRAPI/slabwire: Float sample type now
supported by sample stream out (SSO) and SSOutSample() (for ASIO
CSOS class).
- VMIX render plugin: Max number of sound
sources changed from 36 to 32, outputs, 12 to 32. Fixed number
of outputs now arbitrary. SRAPI/plugin synchronization
improved. Support added for command/argument version of plugin
status variable.
- rvbap.cpp: The incomplete VBAP code
that used to be commented-out in the VMIX plugin has been moved to
rvbap.cpp in the rvmix project directory.
- slabwire: The input stage of slabwire
was rewritten and reorganized to support submixing. The delay
line class CDLI has been split into the existing sample stream in
(CSSI) base class and the new classes CDelayLine and CResampler.
CDLIList has been replaced by CSIList. The new architecture is
illustrated in the new SLABWire Reference Manual Class Diagram.
- slabwire: CSSOList (sample stream
output list) renamed CSOList (stream out list) to mirror CSIList.
- slabwire: CSIC (stream input
communications) renamed CSIDISRadio (stream in DIS radio).
See Comments below.
- slabwire: CDISManager has been
separated from CSIDISRadio to enable use by SRAPI users. See
Comments below.
- SLABLatency app: The RenderEvent()
latency test can now run without serial port output to demo the
RenderEvent() function.
- 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 continuing extensive slabwire 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/28/08 |
Version 6.0.2
- Contents:
- Additions:
- SRAPI: Several functions were added to
the Scene API to support sound level query and instant replay skip
silence. These features require the new Spatial2 render plugin.
The source level functions integrate functionality previously
implemented via plugin variables in the SpatialVU render plugin.
- SRAPI: SetLinks() function added to
create Start Menu links for ZIP installations. This function
is primarily intended for use by SLABScape.
- SRAPI: Query capability added for DIS
frequency and DIS ID mapped status (GetDISID(), SrcGetFreq()).
See Comments below.
- SLABWire: DIS frequency support added
to CSIC class. See Comments below.
- SLABWire: CTracker::SetValue() can be
used to bypass parameter tracking. Sometimes an audible
"click" is preferable to a zipper for a large parameter value
change.
- SLABScape: "Create slab3d Start Menu
folder" button added to slab3d | slab3d Registry Settings dialog.
Being MSI release is no longer supported, the Start Menu folder is
now created via SLABScape.
- Spatial2 Render Plugin: Instant replay
was moved from Spatial to the new Spatial2 plugin. The
level meters in the mixing stage of SpatialVU were added to the
delay line stage of Spatial2 to support time-synchronized level
readings. This is significant when using long delay lines for
instant replay and skip silence.
- slabcom: slabcom demonstrates DIS ID
and DIS frequency polling. DIS sound sources are automatically
placed in an arc about the listener's head as they appear on the
network. Sources can be organized by ID or frequency.
See Comments below.
- slabwcon: slabwcon demonstrates the
usage of individual SLABWire classes and tests the libresample
sample rate conversion code. slabwcon is not automatically built by
Build Solution due to its use of libresample.
- slabconvu: The slabconvu demo app was
rewritten to support the Spatial2 render plugin, the Scene API level
meters, instant replay, and instant replay skip silence. The
original SpatialVU code is included to demonstrate plugin
variables.
- slabtools: vu.m illustrates the
relationship between two sound level meters, a VU
Meter specified by rise time and fall time and an Envelope
Follower specified by attack time and release time.
- slabtools: sd.m (silence detection)
demonstrates the instant replay skip silence algorithm.
- usrlib\slabDISInterface: DIS frequency
support added. See Comments below.
- usrlib\slabDISInterface: Only radios
that have transmitted are added to DIS ID list. See Comments below.
- usrlib\libresample: libresample has
been added to usrlib in preparation for possible inclusion into
SLABWire. libresample is not automatically built
by Build Solution and is not included in the SLABWire library.
- Modifications:
- MSI release has been replaced by ZIP
release to simplify slab3d maintenance.
- SRAPI/SLABWire: DIS ID can now be set
to null string ("") for a DIS sound source not yet mapped to a DIS
ID. See Comments below.
- SLABWire: The CDLI delay line class
buffering and upsample code has been rewritten in preparation for
possible libresample integration.
- SLABWire: The slabw library is now
built with the "Link Library Dependencies" Librarian setting in
order to include the jvoip and slabDISInterface dependencies.
This eliminates the need to build or link with the usrlib\ libraries
when building slab3d-based applications. See Comments below.
- SLABForm: CBeamform now compiles under
both Visual Studio and Code Composer Studio allowing
PC-based development and embedded TMS320 execution. The TMS320 support
code is still in development and not included in the slab3d release.
- Debug libraries are no longer included in the
release. The Librarian modification above resulted in fairly
large libraries.
- Comments:
- Many thanks to the AFRL (Air Force Research
Laboratory) and NASA Ames for funding these features.
- This release is a little higher on the beta
scale than usual due to the delay line changes and the Spatial2
level/replay/skip features.
- Although DIS support code has been added to slab3d
(e.g., CSIC 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. The current implementation has
been tested with three canned DIS configurations on localhost.
|
11/2/07 |
Version 6.0.1
- Contents:
- Additions:
- ZIP archive release is now an option for
download.
- SRAPI: Stand-alone applications. HRTF database, plugin, and registry usage has been modified to allow
slab3d-based apps to be executed without a slab3d installation
or slab3d registry keys. More information is available in the
"Registry Keys and Stand-Alone Apps" section of the User Manual. Note: The NOSA (NASA
Open Source Agreement) requires the slab3d release to be
redistributed with derivative works.
- SRAPI: SRAPI now supports the 8000 Hz sample rate and
a corresponding HRTF database, jdm8000.slh, has been added to the
hrtf/ directory.
- SRAPI: DIS (Distributed Interactive
Simulation) functions SrcAllocDIS(), GetDISNum(), GetDISID().
See Comments below.
- SRAPI/SLABWire: ID VoIP connections can
now have an arbitrary ID and the ID can be changed during
render-time. See the new SRAPI function SrcComID().
- SLABWire: DIS CSIC class. See Comments below.
- SLABWire: Mu-law short and float decode
tables have been added in decode.cpp.
- SLABWire Reference Manual: The Class
Diagram has been updated to include DIS (CSIC) and the track
recorder (CSIT).
- SLABWireDemo: DIS sound source
option (see Comments below), random-access controls for the track
recorder, and more sample rate options. Updated GUI.
Better error reporting.
- SLABScape: DIS sound sources. See
Comments below.
- slabtools: The script dis.m displays DIS buffer
information generated by a special build of the SLABWire CSIC class.
- Modifications:
- All slab3d release solutions and projects
have been upgraded from Visual Studio 2003 to Visual Studio 2005.
- SRAPI: GetHRTFDir(), SetHRTFDir(),
GetLogDir() and the corresponding registry keys have been removed.
This was done to reduce slab3d-based application dependency on the
registry. The slab3d/log dir has also been removed. Log
files are now suffixed ".log" and placed in the same directory as
the executable.
- SRAPI/SLABWire: The 'r' prefix is now
required for render plugins and the 'g' prefix for generator plugins.
- SLABWire: Random-access playback was
added to the CSIT track recorder class.
- SLABWire: A thread conflict between
jvoip and CDSP has been eliminated removing a delay when ending VoIP
sound sources.
- SLABWire: The sample frame advance
portions of the delay line input class CDLI have been rewritten.
The frame size limit on sample stream input buffers no longer
exists.
- SpatialVU Plugin: VU time constants can
now be zero. Denormal check added to envelope follower
feedback to prevent CPU-burning denormal math computations.
- slabtools: 8000 Hz HRTF database
conversion added to slab2fs.m.
- Comments:
- Many thanks to the AFRL (Air Force Research
Laboratory) for funding these features.
- Although DIS support code has been added to slab3d
(e.g., CSIC 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. The current implementation has
been tested with one canned DIS configuration on localhost (five 8000
Hz mu-law channels, packet size approximately 14ms).
|
6/6/07 |
Version 6.0.0
- Contents:
- Additions:
- SLABScape: A Reset button has been
added to the slab3d Registry Settings dialog. This allows the
registry settings to be reset if slab3d is reinstalled or if an
existing installation is moved or copied.
- SLABScape: VoIP sound source support
added.
- SLABWireDemo: Support added for SIP, SIV, SIC (in-development), and SIT.
- SLABCall: The SLABCall application
places a call to an SRAPI or SLABWire VoIP sound source.
- SLABCallFile: The SLABCallFile
application stress-tests the VoIP implementation by placing multiple
calls to slab3d. This is primarily a development app.
The build is somewhat complex.
- SLABForm: SLABForm is a real-time
beamformer prototyping application. This project ended
prematurely.
- slabconv: The slabconv console
application demonstrates the use of the VMIX render plugin.
- slabconvu: The slabconvu console
application demonstrates the use of the SpatialVU render plugin and
the SrcReplay() feature.
- SRAPI: The SrcAllocVoIP() function
allocates a sound source that can receive VoIP data.
- SRAPI: SrcReplay() can be used with
long delay lines and the Spatial Renderer to support sound input
instant replay.
- SLABWire: Two new sample stream input
classes provide VoIP support,
SIP (Stream Input Port) and SIV (Stream Input VoIP). SIP uses
one port and one session for all VoIP connections; SIV uses a port
and session per connection.
- SLABWire: The class SIC (Stream Input
Communications) is a place-holder for eventual DIS support.
- SLABWire: The class SIT (Stream Input
Track Recorder) records Sample Stream Input (SSI) samples to a file.
SIT can simultaneously be used as sample stream input.
- Render Plugins: The SpatialVU version
of the Spatial render plugin provides VU-meter-like level
information for sound sources.
- Render Plugins: The VMIX (vector mix)
render plugin mixes multiple sound sources to multiple outputs.
- slabtools: fbuild2.m and fbuild3.m
build the Club Fritz ACD submissions acd2 and acd3. fload2.m
and fload3.m load the submissions.
- slabtools: Normalization and
trapezoidal window analysis were added to the free-field EQ
functions.
- slabtools: MATLAB visualization and
prototyping scripts (bf*.m) for a helmet-mounted beamformer.
This project ended prematurely.
- usrlib: The usrlib\ directory was added
for jvoip and libsndfile.
- SLABWire Reference Manual: The SLABWire
Reference Manual will eventually document the SLABWire library.
- slab3d User Manual: The sections
"Applications", "Voice over IP (VoIP)", and "Building slab3d" were added.
- Modifications:
- "SLAB" is now called "slab3d" to help
disambiguate it from other "slabs".
- SRAPI: SrcAlloc() and SoundOut() have
been replaced by individual functions for each source and output
type.
- SLABWire: CDLIList is now subclassed
from CDLI so CDSP can use either CDLI or CDLIList.
- SLABWire: CSSOList is now subclassed
from CSSO so CDSP can use either CSSO or CSSOList.
- SLABWire: CDSP can now connect to
individual streams (CDLI and CSSO) or stream lists (CDLIList and
CSSOList). Previously, all streams had to be placed in a list
before they were connected to the DSP.
- SLABWire: CDSP stream begins were moved
out of DSP thread to avoid a thread conflict between the DSP thread
and the JVOIP thread. Note: This might impact ultra
low-latency applications as a slight delay now exists between stream
begin and DSP processing.
- SLABWire: DSP thread timeouts were made
more robust. Note, though, memory leaks can occur if the DSP
thread is terminated due to timeout. It is best to address the
root cause of the timeout (e.g., sound driver freeze).
- SLABWire: SSInContinuous() was added to
CSSI to indicate if an input stream is continuous (e.g., device).
A continuous stream always streams samples while rendering. If
it is paused, samples are discarded.
- SRAPI: slab3d registry keys are now stored under HKEY_CURRENT_USER\Software\slab3d.
- Comments:
- Many thanks to the AFRL (Air Force Research
Laboratory) for funding many of these features. Thanks, as
well, to NASA for the beamforming project. Though ended
prematurely, it was a great project while it lasted.
- This is a beta release of sorts. There
has been little "actual" use of these modifications.
- VMIX lays the groundwork for a potential VBAP
(Vector Base Amplitude Panning) render plugin. Unimplemented
PD VBAP code is appended and commented-out in the VMIX source file.
|
8/9/06 |
Version 5.8.1
- Contents:
- Additions:
- SRAPI/SLABWire: Multiple output types
may now be selected (e.g., outputting to a device and a file
simultaneously). Output streams can either be split or
special-purpose Render Plugins can select which output to write to.
Splitting is demonstrated in slabcon. Writing to individual
output streams has not been tested.
- SLABWire: Callback functionality has
been moved from SRAPI to SLABWire. SLABWire users can now use
callbacks via CDSP::BeginThread(). For SRAPI users, the
callback interface appears unchanged.
- slabtools: ahm2sarc() converts a
HeadZap AHM file to a SLAB Archive file.
- slabtools: sitd() computes
spherical-head model ITD.
- slabtools: hcom() now supports
critical-band smoothing when performing the symmetric head test.
- slabtools: vitd() now includes a
spherical-head model reference curve.
- slabcon: Split output types demo.
- Modifications:
- SRAPI/SLABWire/Render Plugins: The
Render Plugin class hierarchy was simplified. The SLABWire
CDSPF class and SRAPI CFRender and CRPlugIn classes were merged and
moved to the SLABWire CRPlugIn class. This change makes the
Render Plugin and Generator Plugin interfaces a bit more
symmetrical.
- SRAPI/SLABWire: SRAPI rendering and DSP
processing can now be stopped and restarted without reallocating the
sound sources.
- Bug Fixes:
- SRAPI: The SrcAllocFile() memory flag was
opposite the intended behavior. It now behaves as documented.
- SLABSurface: The file drill_loop.wav is now
included in the release and the SRAPI error reporting has been improved.
- SLABWireDemo: The app now searches for
Generator Plugins in the installation directory rather than \SLAB\bin\gplugin.
- Comments:
- Multiple output types feature: Render
Plugin writes to individual output streams has not been tested.
- Download (added 6/11/07):
- Releases after v5.8.1 are released through
SourceForge.net. The v5.8.1 release is available from the NASA
Ames Open Source Software site:
http://opensource.arc.nasa.gov
Please support NASA Open Source software by providing
accurate information when registering. This information is used
for internal metric tracking only (e.g., using "Affiliation" to
determine government lab use).
|
5/24/06 updated
5/31/06
7/26/06 |
Version 5.8.0
- Contents:
- Additions:
- SLAB User Release: SLABSurface
Application. SLABSurface provides a control surface interface
to SRAPI. Controllers supported include the Behringer BCF2000
and Peavy StudioMix as well as a GUI interface. SLABSurface
maps controls to "patch" parameters. Two simple amplitude
modulation patches are included. Many thanks to Mark R.
Anderson for providing the original Behringer BCF2000 interface app
from which SLABSurface evolved.
- SRAPI/SLABWire: Sound source type
"User". Allows user sample data to be input while processing.
- SLABWire: StatPerf() performance
counter time stamp function.
- SLABWire: TRACE macros (see trace.h).
- gslab generator plugin: Band-limited
triangle, square, and saw wavetables.
- gslab generator plugin: Amplitude
modulation generator carrier and modulator waveform selection.
- slabcon: "User" sound source demo.
- slabtools: cbe.m computes HRTF
critical-band energy. Requires the
Auditory Toolbox.
- slabtools: ffeq.m, ffeqtest.m, ffbl.m, ffbl2.m,
ffbltest.m are free-field equalization scripts.
- slabtools: imodelab.m is a MATLAB port
of the Allen-Berkeley image-method Fortran code. This script
computes the impulse response of a rectangular room.
- slabtools: imodel.m, imodel_h.m,
imodel_cb.m, imodelui.m are image-method reflection visualization
scripts.
- slabtools: wavespec.m demonstrates
SLAB's reflection processing.
- slabtools: track.m demonstrates SLAB's
DSP parameter tracking.
- slabtools: plotresp.m is a simple magnitude
and phase plot script.
- slabtools: mdog.m and dog.m are DOG
(Difference of Gaussians) image generation scripts (released GPL).
These functions are based on the GPL-released functions doog2.m and gaussian.m (both included, see doog.txt).
- slabtools: logbins.m calculates the
number of linear FFT bins in a set of log frequency bins.
- slabtools: gen.m sin table SNR test and
band-limited triangle, saw, and square generation.
- slabtools: sminp.m converts a sarc
database to minimum phase.
- slabtools: fan.m is a Club Fritz
analysis script that displays multiple Fritz HRTF databases
simultaneously.
- slabtools: fbuild.m builds a Club Fritz
HRTF database submission.
- slabtools: fload.m loads the Club Fritz
databases created by fbuild.m.
- slabtools: fview.m is a simple Club
Fritz database viewing utility.
- Modifications:
- SRAPI: SLABScape math routines moved to
SRAPI library.
- SRAPI: CScene::SetDelayIn() now API
command (versus internal).
- gslab generator plugin: Sine wavetable lengthened
from 256 to 1024 samples to improve SNR.
- slabtools: hcom.m now uses
critical-band smoothing when computing the RMS Error metric (except
for the symmetric head test).
- ASIO: ASIO SDK updated from 2.0 to 2.1.
- documentation: PDF documentation is no
longer included. To generate, use a PDF creator that supports
PDF creation from HTML.
- Known Issues:
- SrcAllocFile() bMemory parameter functions
opposite as documented; the default is memory buffered file. The
fix is to simply negate the parameter when calling.
- When executing the pre-compiled SLABSurface
application, the default patch "Drill" expects the file
"C:\SLABData\wavs\drill_loop.wav" to exist. If it does not exist,
the app appears to work fine, but no sound is heard. In other
words, the missing file error is not reported. The work-around is
to substitute a short mono 44.1kHz wave file for the missing file.
- When executing the pre-compiled SLABWireDemo
application, the app searches for the generator plugins in \SLAB\bin\gplugin.
This is not the default MSI installation directory. The
work-around is to either install SLAB to \SLAB or to place a copy of the
plugins in \SLAB\bin\gplugin. Note, this was a limitation in some
of the previously distributed SLABWireDemo executables as well.
- These limitations have been addressed and will
not exist in the next release.
|
8/29/05 |
Version 5.7.0
- Contents:
- Additions:
- SRAPI/SLABWire: SLAB is now designed to
operate at an arbitrary sample rate. The Spatial renderer
supports: 8192, 11025, 22050, 44100, 48000 kHz.
- SRAPI: Script and source trajectory
functionality moved to the new SLAB Modifier interface CSMod.
CSMod provides a mechanism for the automatic updating of Scene
parameters. For example, the modSrcGainScalar modifier
automatically adjusts the gain of a sound source via table look-up.
- SRAPI: SrcGainScalar() allows the
setting of source gain using a linear scalar.
- SRAPI: FIRPoints() can now set the reflected sound
path FIR length independent of the direct path.
- SRAPI/SLABWire: Upsampling is now
optional for the fractionally-indexed delay line.
- SRAPI/SLABWire: Memory-buffered wave
files can now be looped and can now notify upon completion of
one-shot playback.
- SRAPI/SLABWire: New classes CWaveTable
and CScanTable for Generator Plugins and SLAB Modifiers.
- SLABWire: New signal generators
"am" (amplitude modulation) and "triangle"
(triangle wave).
- SLABScape: SLAB Settings Dialog now
includes sample rate option.
Note: Changing the sample rate does not change the current
HRTF database. Resampled databases are now included in the
release.
- Spatial Renderer: HRIRs can now be less
than the frame size and greater than 128 taps.
- SLABScape: Memory-buffered wave files
can now be set to one-shot.
- SLABWireDemo: New sample rate and
fractional delay line controls.
- slabtools: gen.m provides signal
generator visualization.
- slabtools: mild.m (make ild) constructs a one-tap
HRIR HRTF database based on total HRIR energy.
- slabtools: slab2fs.m generates 8192,
11025, 22050, 48000 kHz HRTF databases from the 44100 kHz jdm.slh.
- slabcon: Added source gain SLAB
Modifier example code.
- Modifications:
- SLABScape/SLABReg: SLABReg
removed. Registry variable management moved to SLABScape.
- SLAB Libraries: All MFC replaced by
Win32, hence, some API changes, e.g., CWnd to HWND.
- SLAB Libraries: scene library merged
into srapi library.
- SRAPI: SrcAlloc() replaced by
SrcAllocFile(), SrcAllocGen(), SrcAllocWave(), SrcAllocASIO().
- SRAPI: SoundOut() replaced by OutASIO(),
OutWave(), OutFile(), OutDirectSound().
- SRAPI: Enum name changes to accommodate
new function names (e.g., OutASIO to OutTypeASIO).
- SRAPI/Spatial: Material IIR filter
coefficients moved from the Spatial renderer to the Scene (GetEnvMatCoeffs()).
- SLABWire: CDSPF::InInterp() removed.
- SLABWire: Generator parameter lists are
now dynamic. Allows multiple generators of the same type to
have independent parameter lists.
- slabtools: zap2sarc.m (HeadZap data to
SLAB Archive) now extracts the measured headphone eq data from the
PhoneQ data file.
- slabcon: Removed MFC code, now strictly
a Win32 console app.
|
6/27/05
|
Version 5.6.1
- Additions:
- SRAPI: SrcLocateRel() listener-relative
source placement.
- SRAPI/SLABWire: 11025 and 22050 Hz wave
file sampling rates now supported (upsampled in delay line
module).
Render Plugin Note: To access upsampled data, use the float
indexed GiIn() function instead of the int indexed function.
- SRAPI/SLABWire: Notification can be
requested for single-shot wave file playback completion.
- slabtools: slabtools Reference Manual
(see doc folder).
- slabtools: ups.m, upslp.m, upstest.m
upsampling design and demo scripts.
- slabcon: New example application
demonstrating the use of SLAB in a console app.
- Modifications:
- SRAPI: GetSrcRel() now returns range.
- SLABWire: InitDelayLine() removed from
CSSI subclass constructors. When using the SLABWire objects,
InitDelayLine() must be called to use the delay line of a CSSI
subclass (see SLABWireDemoDlg.cpp).
- SLABWire: Replaced MFC with Win32 (CSOX,
CDSP, CRegistry). SLABWire is no longer built with MFC
libraries.
- SLABWire: CRegistry::GetBinary() now
returns true when default value set.
- SLABScape: Listener-relative source
placement (REL button) now performed with SrcLocateRel().
Relative sources shown as cubes in the 3D visual display and cyan
in the 2D display as if listener at the origin. Polar source
placement is performed using the POL button (similar to the old
REL button behavior but listener is no longer placed at the
origin).
- SLABScape: Scene file (.scn) version
incremented to 10. SLABScape does not read previous scene
versions.
- Comments:
- If your sound peripheral does not have an
ASIO driver, you might be able to use the SLAB ASIO features by
installing ASIO4ALL (http://www.asio4all.com/).
ASIO4ALL provides an ASIO interface wrapper for the standard
Windows Driver Model (WDM) sound driver interface. ASIO4ALL
v2.6 was successfully tested with the "Avance AC97
Audio" sound device.
|
4/4/05
|
Version 5.6.0
- Additions:
- SRAPI/SLABWire:
SLAB Generator Plugins (gplugins, see gplugin.h). gplugin
parameters can be controlled in real-time while processing.
gplugins can be added to SLAB by placing the gplugin DLL in SLAB's bin\gplugin
directory.
- SRAPI: New gplugin functions SrcGenEnum(),
SrcGenInfo(), SrcGenCmd(). For detailed use examples, see
SLABScape's DlgGen.cpp and audio.cpp.
- SLABWire: New SIG gplugin functions
GenEnum(), GenPList(), GenDesc(), GenCommand(). For use, see
SLABWireDemoDlg.cpp.
- SRAPI/SLABWire: STK (Synthesis ToolKit)
SLAB Generator Plugin (gstk.dll) encapsulating all STK 4.2.0
instruments. Information about STK is available at:
http://ccrma.stanford.edu/software/stk/
- SLABScape: New Generator dialog for
selecting and controlling Generator Plugins (see GEN button on
Source dialog).
- Modifications:
- SRAPI/SLABWire:
16-bit short signal paths converted to 1.0-normalized float.
- SLABWire: SIG buffer size now set to
frame size to enable low-latency gplugin parameter updates.
- SRAPI/SLABWire:
SrcCommand() and SSInCommand() have been removed. Generator
(SIG) is the only type of sample stream input (SSI) that accepts
commands.
- SRAPI/SLABWire: SLAB's signal
generators are now encapsulated in the SLAB Generator Plugin
gslab.dll.
- SLABScape: Scene file (.scn) format
version incremented. Scene files are not backwards
compatible.
- Bug Fixes:
- SRAPI: Render Plugin DLLs are now
properly freed when the CSRAPI object is deleted.
|
11/4/04
|
Version 5.5.0
- Additions:
- SLABScape: Wave file batch processing.
- SLABScape: Fullscreen 3D visual display support.
This mode can be used to render an immersive stereoscopic 3D
visual display using 3D stereo glasses and NVIDIA stereo drivers.
- SLABSound: Waveform API and DirectSound information
display.
- SLABSound: Wave/RIFF file chunk information display.
- slabtools: HRTF analysis and visualization - hlab.m,
vall.m, hen.m, henfilt.m.
- slabtools: ITD calculation - itdc.m.
- slabtools: CIPIC HRTF database support - cipic2sarc.m,
cgrid.m.
- slabtools: Club Fritz functions - fmake.m, ffmake.m, and
fsave.m.
- slabtools: vitd() - new az and el views.
- slabtools: hlab() - ITD view.
- Render Plugin: New renderer, Diotic3. Diotic3 is primarily for internal lab use,
but it can also serve as a Render Plugin example.
- Modifications:
- IMPORTANT!: The predefined renderers (e.g., Diotic,
Spatial) no longer scale the sound output level by the number of
allocated sources.
- Development migrated from DirectX8.1 to DirectX9.0.
- slabtools: hcom() - non-fixed-inc grid support, min stat.
- slabtools: several minor mods.
- Bug Fixes:
- SRAPI: ASIO header file no longer required by srapi.h.
- SRAPI: Wave file data block alignment bug fixed.
This bug corrupted the playback of some multi-channel wave files.
- SLABScape: Roll negated in 3D visual display.
|
6/22/04
|
Version 5.4.1 Bug Fix
- Bug: Including srapi.h requires an ASIO header file.
Using the SLAB libraries should not require the ASIO SDK to be
installed. (Note: Building the SLAB libraries does
require the ASIO SDK.)
- Fix: In srapi.h, replace "#include "sos.h""
with "class CSOS;".
|
5/27/04
|
Version 5.4.1
-
Additions:
- Spatial Render Plugin (rspatial) source code.
- Spatial communications plugin example (rsar) source code.
- SRAPI: Render Plugin Variables (PIVars) for extending
SRAPI when using user-defined plugins.
- SRAPI/SLABWire: Low-latency features, including SRAPI
functions WaitSuspend(), WaitSwap(), RenderEventPrepare(), and
RenderEvent().
- SRAPI/SLABWire: Multi-channel I/O.
- SRAPI/SLABWire: ASIO channel map. Allows users to
map ASIO channels to SLAB channels.
- SRAPI/SLABWire: Asynchronous/Synchronous processing
option.
- SRAPI/SLABWire/SLABSound: ASIO device selection.
- SLABWire: CSOM memory access functions SOMData() and
SOMDataBytes().
- SLABScape: Support for new SRAPI features.
- SLABWireDemo: New ASIO output options: device 0, device 1,
and output channels swapped.
- slabtools: peak.m for illustrating peak detection
implemented in the rsar plugin.
- Modifications:
- Spatial Render Plugin: Gain now parameter tracked (aka,
smoothed).
- Spatial Render Plugin: Mixer more efficient.
- SRAPI: Render plugin example "rplugin" renamed
"rmyplugin" to distinguish it from SRAPI's rplugin file.
- SRAPI: GetStats() split into GetUnderflows() and
CScene::GetClips().
- SRAPI/SLABWire: Log files no longer grow without bound.
- SRAPI/SLABWire: Waveform-Audio output now counts
underflows instead of returning an error.
- SRAPI/SLABWire/SLABSound: Max ASIO channels increased from
16 to 32.
- Scene: OutPCM16() replaced with OutSample().
- SLABWire: CSOM save to file now optional.
- SLABWire: CSOS PlayMemory() function for playing sample
data stored in memory.
- SLABWire: Float delay line indexing modified to reduce one
frame of audio latency.
- SLABWireDemo: Spectrum log bins now summed instead of
averaged.
- SLABScape: The number of sound sources increased from 4 to
16.
- SLABX: Docs moved from User Manual to source code.
- Development environment upgraded from Visual Studio 2002 to
Visual Studio 2003.
- Documentation updated.
- Bug Fixes:
- SLABWire: CRegistry::GetBinary() memory leak fixed.
- SLABWireDemo: PaintSpectrum() color array size fixed.
- Comments:
- This is a beta release. It concludes the development
iteration that began with v5.4.0.
- This release focuses on Render Plugin extensibility, source
code release, audio latency reduction, multi-channel I/O, and
improved ASIO support. This is the first release to include
all source code.
- SRAPI ASIO latency measurement results (P4, 2.2GHz, Delta66, Buffer Size =
64 samples):
- API to display: latency = 4.3 ms, jitter = 1.2ms
- API to display using WaitSuspend()/WaitSwap(): latency
= 3.4ms, jitter = 0.1ms
- API to display using RenderEventPrepare()/RenderEvent():
latency = 2.8ms, jitter = 1.4ms
- analog_in to analog_out: latency = 5.9ms, no jitter
|
3/4/04
|
Version 5.4.0
-
Additions:
- SRAPI: New sound source types - ASIO device,
Waveform-Audio device, memory file.
- SRAPI: New sound output types - ASIO device,
Waveform-Audio device, wave file.
- SRAPI: SrcLink() function for allocating multi-channel
sound sources (e.g., audio devices, wave files) and for
duplicating sound sources.
- SRAPI: GetScene() function for getting a pointer to the
Scene object (the user now interacts with the Scene directly
instead of through SRAPI wrapper functions).
- SRAPI: Scene library.
- SRAPI: Source code added to SLAB User Release.
- SLABWire: New SIS and SOS objects for ASIO I/O.
- SLABWire: Static function S::OutPCM16() for writing to the
sound output buffer.
- SLABWire: SSI function SSInUnderflow() for detecting
Waveform-Audio device underflows (underflow was previously an
error).
- SLABScape: New source allocation dialog for allocating the
new SRAPI sound source types.
- SLABScape: New sound output options for selecting the new
SRAPI sound output types.
- SLABScape: Added CPU usage monitor.
- SLABSound: Added SLABSound application to the SLAB User
Release. SLABSound displays ASIO device information.
- SLABWireDemo: Added SIS and SOS ASIO support.
- SLABWireDemo: Added a simple low-pass filter example.
- SLABWireDemo: Added device underflow monitors.
- Modifications:
- SRAPI: Sources are now allocated using SrcAlloc().
- SRAPI: Signal generator type (e.g., sine, noise, square,
impulse) now selected with SrcCommand().
- SRAPI: Sound output type now selected using SoundOut().
- SRAPI: CSLABAPI renamed CSRAPI.
- SRAPI: Removed client/server interface, host/client/server
allocation functions, SRAPI abstract base class, Scene abstract
base class.
- SRAPI: Removed libraries slabcmr.lib, slabcmd.lib,
slabsmr.lib, slabsmd.lib.
- SRAPI: Libraries slabhmr.lib, slabhmd.lib replaced with
srapimr.lib, srapimd.lib, scenemr.lib, scenemd.lib.
- Scene: GetOutL(), GetOutR() replaced by GetOutPtr().
Render Plugins now write to the output stream using an
interleaved channel format.
- Scene/SLABWire: Output delay lines are no longer
supported.
- Scene: Removed SetDelayOut() and GetDelayOut().
- SLABWire: Message-based DSP thread replaced by event-based
DSP thread. DSPThread merged into DSP.
- SLABWire: Removed DLO (Delay Line Out).
- SLABWire: Removed DSPF function OutDelay().
- SLABWire: Removed DSPF function InDelay() (now managed by
DLI).
- SLABWire: Removed DSPF function FrameSize() (now managed
by DLI and SSO).
- SLABWire: SIG signal generators now selected with
SSInCommand().
- SLABWire: SSO sound output now occurs through
SSOutSamplePtr().
- SLABScape: Removed SLAB client/server support.
- SLABServer: The SLABServer application has been removed
from the SLAB User Release.
- Comments:
- This is a beta release! I'm presently
doing a bit of restructuring... This is a good
point at which to pause, stabilize, and release. The
architecture and API overhaul is largely complete... ASIO
needs a bit more refining and testing... The docs are a
little behind - to fill in the blanks, see the SLABX source code
or the SLABScape file audio.cpp (specifically, the CAudio::SbOpen()
function)...
- This release focuses on:
- full-duplex sound support (i.e., rendering sound device in
to sound device out)
- ASIO driver support (for full-duplex, low-latency,
multi-channel, robust sound I/O)
- a shorter SLAB development cycle
- SRAPI open-source
- Due to the improved robustness of host rendering and the desire
to reduce SLAB maintenance time, the client/server interface is no
longer supported. Host rendering is now much more robust due
to the new SLABWire thread architecture, ASIO device driver
support, and increased CPU performance.
- To build SLABWire and SLABSound, you must download the ASIO 2.0
SDK from Steinberg (see <inst dir>\lib\src\slabw\asio\readme.txt).
- The slabtool SLAB Archive (sarc) functions are in a state of
transition.
- The SLAB User Manual and SRAPI Reference Manual haven't quite
caught up with all of the recent changes.
|
10/1/03
|
Version 5.3.0
-
Additions:
- SrcStreamCtl() provides pause/play/rewind control of sound
source sample streams.
- New SLABReg app replaces setreg (v5.2), original SLABReg
(pre-v5.2, also used for user registration), and SLABScape
"Find Installation" feature (v5.1-v5.2).
- New slabtools: cam2sarc(), hcom(), hil(), hir(), hpower(),
newgrid(), zap2sarc().
- Modifications:
- Multiple SLAB MSI versions can now be installed under the same
user account.
- GetVersion() now returns the build version (SLAB_VER) instead of
the version registry setting.
- The one-shot wave file playback AutoStop feature can now be
disabled using RenderStart(). This allows SrcStreamCtl() to
provide virtual environment event-triggered playback of one-shot
wave files (e.g., auditory icon playback triggered by the user
crossing a boundary in a virtual environment).
- SrcSpread() merged into SrcRadius().
- SrcRadius() now assigned per source.
- SLABScape support for SrcStreamCtl() and AutoStop.
- The slabtool vir() can now view raw HRTF data.
- SLABWire: Several mods for SrcStreamCtl() and AutoStop support
(e.g., SSInPlay(), SSInPause(), SSInRewind()).
- SLABWire: DLIList clean-up. The DLIList can be used by DSP
Functions (CDSPFs) to access multiple DLIs.
Note: In the SRAPI layer (which sits on top of SLABWire), this
capability has been replaced by the SRAPI Scene layer.
- SLABWireDemo support for pause/play/rewind/AutoStop.
- SLABWireDemo spectrum and OpenGL displays.
|
8/7/03
|
Version 5.2.1
-
Additions:
- Modifications:
- SLABWire: Most functions now return the current error if in
error state. Most clean-up moved from error handlers to
destructors (i.e., the object should be reallocated to clear the
error).
- SLABWire: Simplified delay line and stream format
initialization.
- SLABWire: SSO's now save instead of SSI's.
- Bug Fixes:
- The DirectSound speaker configuration is no longer set to
headphone. SLAB now uses the default system speaker
configuration. Some sound peripherals process the sound when
the speaker configuration is set to headphone.
|
6/30/03
|
Version 5.2.0
-
Additions:
- SLABScape listener-tracking latency demo.
- Web-based user registration and download.
- SLABTrak Fastrak driver libraries and source code.
- SLABLatency latency measurement utility source code.
- Modifications:
- SLABScape no longer supports the Polhemus Isotrak.
- Improved SLABScape Polhemus Fastrak interface (less options,
more robust).
- Slight change in the SUA copyright notice regarding government
research.
- Bug Fixes:
- Due to a loop bounds error, the spatial plugin HRIR filter
sometimes used 1 tap less than specified. In some cases,
slight discontinuities were noticed in the 32-tap reflection
filter output.
|
6/2/03
|
Version 5.1.0
-
Additions:
- "SLABScape Scene" file (.scn) for saving SLABScape
scene settings.
- SLABScape 3D View options: "Eye View" first-person
perspective and "Wireframe".
- SLABScape simulation update rate control.
- SLABScape SLAB Registry Settings "Find Installation"
feature. This allows SLABScape to manage the SLAB Registry
Settings instead of the user registration-oriented SLABReg.
- SLABScape 3D View "hand" interface (presently in
development).
- Modifications:
- Major SLABScape architectural overhaul. Replaced
view-document-model with scene-tick model. Some
user-interface clean-up.
- Client/server robustness iteration. Added socket send
timeout to SLAB client. Added socket send and receive
timeouts to SLAB server. For present state of client/server
robustness, see Known Issues in SLAB User Manual.
- SLABScape trajectories now supported in client/server-mode.
- Added denormal check to Spatial renderer materials filter.
- SLABScape no longer supports the Convolvotron.
- Bug Fixes:
- SLABScape 3D View axis color setting fixed.
- SLABScape 3D View camera location setting fixed.
- Removed socket packet struct subclassing from SLAB
packets. Struct subclassing creates different sized structs
on different platforms (e.g., Windows2000 versus Solaris).
- SLABScript sound source trajectories now begin at sample index 0
if time 0 specified. Previously, there was a slight lag of a
few hundred samples before the trajectory was initialized.
- Comments:
- Includes v5.0.2.
- This release was only released internally because the web-based release strategy
was still in development.
|
1/23/03
|
Version 5.0.1
- Modifications:
- SLABReg has been modified to account for recent changes to the
NASA Ames firewall.
|
1/9/03
|
Version 5.0.0
-
Additions:
- External dll-based Render plugins (new functions: RenderEnum(),
RenderID()).
- SRAPI Reference Manual.
- slabtools MATLAB tools.
- HRTF database IDs for preloading HRTFs (new functions:
LstHRTFLoad(), LstHRTFFree()).
- HRTF database per sound source option.
- .NET Installer project for redistributing a modified SLAB User
Release.
- SLABScape now lists the available Render plugins (Render menu)
and the number of DirectSound underflows ("U=" in status
bar).
- SLABServer now lists the number of DirectSound underflows, the
number of packets received, and the rate at which packets are
received.
- PDF versions of User and SRAPI manuals.
- Modifications:
- SLABReg will now set the registry keys for a SLAB.msi
registration that cannot connect to the NASA registration server.
- Redesigned SLABServer Monitor window.
- DirectSound underflows are now counted instead of causing an
error (see GetStats()).
- SRAPI name chages: SrcExtent() to SrcRadius(), LstMap() to
LstHRTF().
- OutDevice(), DSBufSizeOut(), DSBufSizeWrite() merged into OutDS().
- Linear SrcGain() function removed.
- GetStats() and SrcRefOffset() now supported in client/server
mode.
- The SLABX HRTF database per sound source demo has returned.
- The questionable ITD values in jdm.slh have been corrected using
values reflected about the median plane.
- Bug Fixes:
- If SrcTrajRate() was not called, the trajectory rate was not
initialized. Now uses a default rate of 120Hz.
- Comments:
- The SLAB Libraries are now built using Microsoft Visual C++ .NET
(WinNT/2k/XP). These libraries seem to be incompatible with Microsoft
Visual C++ 6 (e.g. "can't find atlsd.lib"). Thus,
it appears Windows98 can no longer be used to develop SLAB
applications. SLAB applications built using Win2k and
MSVC.NET should still run under Windows98.
|
8/9/02
|
User Manual Update.
This version corrects several errors regarding the use of source ID.
|
8/1/02
|
Version 4.4.0
-
Additions:
- Open-source client.
- SLABScape Help.
- Modifications:
- Now targeted towards Windows2000. SLAB will no longer be
tested under Windows98SE.
- Map-per-source feature no longer supported (will return).
- Multi-channel wave files no longer supported.
- Arbitrary number of sound sources (removed four source limit).
- Scenario state now preserved if error occurs (can be reset with
Reset()).
- Improved scripting and trajectory interface.
- Some API name changes (e.g. ProcessStart() to RenderStart()).
- SLABScape user interface overhaul.
- Internal architectural modifications (Scene layer, internal
plugins, packets).
- Bug Fixes:
- SLABScape source and listener location bugs fixed (in some
instances, the source and listener locations were not updated
properly).
- Known Issues:
- This is an alpha release, meaning it is a work in development
that has not been thoroughly tested. The v4.4 release is, in
a way, a v5 alpha in that it contains some of the features and
improvements scheduled for the v5 release.
- SLABX: map-per-source demo uses the same map for each
source.
- SLABScape: tracker port and baud can only be set when
tracker first used.
|
5/1/02
|
Version 4.3.0
-
Additions:
- Modifications:
- New SLABReg, new scrambled msi file format, and new registration packet.
- The DirectSound interface is slightly more robust.
- The SLABX "magnitudes equal" and "ITDs equal" maps
are now valid.
- Firefly support added to SLABScape.
- Bug Fixes:
- All SLAB User's Manual files and hyperlinks now lower case (FrontPage
can't handle case-sensitive filenames and hyperlinks properly).
- Parameter tracker denormalized floating-point values are forced to
zero (Xeno's Bug).
- Fixed a SLABScape z-axis source placement bug.
- Known Issues:
- SLABScape's upper and
lower z-axis limits may still be a little off.
- Fairly severe memory leak over many (e.g. 1500) ProcessStart()/ProcessStop()'s
under Windows98. Less severe under Windows2000.
- Channels might swap while rendering (rare, possibly related to
condition above).
|
2/27/02
|
Version 4.2.1
-
Additions:
- Walls added to SLABScape's 3D view.
- Modifications:
- New SLAB User's Manual (fewer .htm's).
- SLABX example application updated.
- Bug Fixes:
- Fixed assert which occurred if renderer encountered an error while
allocating (bug in v4.2.0).
- SLABScape SLABScript Editor parse error fixed.
- Version numbers now correct.
- Known Issues:
- In SLABX, all maps are jdm.slh (i.e. modified maps don't exist).
|
2/11/02
|
Version 4.2.0
-
Additions:
- Host function SrcRefOffset() for setting reflection offsets.
- SLABScape 3D view.
- SLABReg UNIX server communication.
- SLABReg .dat to .msi unscrambler.
- Modifications:
- New TrakLib driver (tested under Win2k using Fastrak).
- Bug Fixes:
- Added per-image IIR memory.
- Scripts and trajectories now disabled when processing
stopped.
|
1/8/02
|
Version 4.1.0
- Additions:
- Microsoft Windows Installer support.
- SLABReg registration and registry settings application.
|
10/2/01
|
Version 4.0.0
- Additions:
- Scripts and trajectories.
- Host function Callback().
- Client function MessageBox().
- Client function EnvMaterial().
- One-shot wave file playback.
- Registry support in SSRPC (see CRegistry in SDR).
- Registry variables (see dialog SLABScape|Device|SLAB IO
Settings..., application SLABReg, functions GetVersion(), GetInstDir(), GetLogDir(),
GetHRTFDir(), GetDefHRTF(), SetHRTFDir(), SetDefHRTF()).
- Added SLABDEFS dGainMutedB and nGainMuteLinear.
- New HRTF map, jdm1010.slh (azimuth and elevation increments equal
10 degrees), created from jdm.slh using biharmonic spline interpolation.
- Mark Anderson's TrakLib driver added to SDR.
- SLABScape clip indicator.
- SLABScape SLABScript editor and monitor.
- Modifications:
- Improved robustness throughout SLAB, especially client/server
operation.
- All SLAB libraries, applications, and releases synched to v4.0.
- jdm.slh is now the default HRTF map.
- SLABDemo renamed SLABScape.
- New error handling paradigm (see SLAB User's Manual).
- Better client/server error handling.
- Log files now saved as SLAB\Log\log_<logname>.txt.
- Host function LogFile() renamed LogName().
- Removed Convolvotron map selection and non-spatial display support
from SLABScape.
- Minor UI improvements to SLABScape and SLABServer.
- Removed SLV HRTF maps.
- Bug Fixes:
- Materials filter IIR filter fixed.
- LstMap() didn't properly recover from a failed map read.
- SLABScape Isotrak/Fastrak selection now works.
- Known Issues:
- SLAB's dynamic behavior has not been thoroughly analyzed (e.g.
ITD algorithm, client/server packet jitter, end-to-end latency).
- Since SLAB is now primarily developed under Win2k, SLAB has not
been thoroughly tested under Win98SE (note: Win98SE has lower latency).
- Output stuttering can occur without an error being generated.
- SLABScape-generated trajectories are not supported in client/server
mode (Windows sockets limitation).
- jdm.slh ITDs are a little odd.
- TrakLib has some robustness problems.
- Materials filter only valid for one sound source.
- The User's Manual is incomplete and/or out-of-date in some
sections.
- SLABScape is an alpha release application.
- SLABX demo application most likely out-of-date.
|