|
7/20/09 |
Version 6.4.0
- Download
- Contents
- Overview
- Several areas of slab3d have been consolidated
and simplified:
- The script, modifier, and callback features
have been rewritten and integrated into SRAPI.
- The CScene class has been integrated into
SRAPI.
- The VMIX, HMIX, and HMIX2 render plugins have
been merged into the new "Mixer" render plugin.
- The slab3d render plugins have been
integrated into SRAPI and are no longer DLLs.
- The registry is no longer used by slabwire or
SRAPI.
- The previous stand-alone modes and registry
mode for finding render and generator plugins and the default HRTF
have been replaced by a new paradigm. The slab3d render plugins are now built into the SRAPI library. If additional
render plugins or any generator plugins are to be used, they should
be placed in the same directory as the SRAPI-linked application.
The default HRTF is now built into SRAPI applications as a resource.
- The lib\src srapi and slabwire projects have
been moved to the src\ directory.
- The lib\src\SLABTrak project
has been renamed "traklib" and moved to the usrlib\ directory.
- Other new features:
- A new XML slabscript format has been
created by allowing time indices in scenefiles.
- An XML scenefile can now be opened during
render-time enabling XML macros.
- The render-time replacement of streams
has been improved.
- Modification Details
- SRAPI
- The CScene class was merged into
CSRAPI. The conceptual container of auditory scene state is
now the XML scene file.
- Timestamps have been added to the
XML scenefile feature to create an XML slabscript format. The old
slabscript format has been removed. Demo Scape/Scene/slabscript
files have been added to the bin/ directory.
- The SRAPI Script and Modifier
class was rewritten, simplified, and merged into SRAPI. See
Script*() and Mod*() functions in CSRAPI and IDMOD in slabdefs.h.
The SLABScape, SLABSurface, and slabcon applications were updated
accordingly.
- SceneOpen() can now be
called while rendering enabling the creation of XML macros for dynamic
scene settings.
- XmlApi() and XmlApiElement() map XML
to SRAPI calls.
- The VMIX, HMIX, and HMIX2 render
plugins have been replaced by the built-in "Mixer" render plugin.
The corresponding SrcMix*() functions have been added to SRAPI.
Demo Scape/Scene/slabscript files have been added to the bin/ directory.
The rvmix render plugin and the slabconv demo application have been
removed. The unfinished rvbap plugin is now in its own solution.
- SrcStream(), SrcAllocFile(), SrcLocatePolar(), SrcRefEnable(),
EnvPlanes(), and SrcMix*() functions added to XML support.
- Being XML is human-readable and
editable, XML radian specification has been changed to degrees.
In general, the XML API and the function API are kept as similar as
possible. This is an exception.
- GetExeDir() returns the
executable directory.
- SHSrcEnable and SHSrcGain have been
added to the Scene Hints.
- LstHRTF( NULL ) specifies the
default resource HRTF database.
- SRAPI now supports initiating
rendering with only emitters. This allows streams to be set
after rendering.
- SrcAllocStream() allocates an
arbitrary stream sound source for use with slabwire streams.
- The m_cSSIList variable can be
used to allocate streams for use by the SrcStream script command.
Demo of use added to slabcon.
- GetASIOChIn() and GetASIOChOut()
can be used to query the number of ASIO device I/O channels when not
rendering.
- The slab3d render plugins are
now built into the SRAPI library (versus being DLLs). The
slab3d render plugins are enumerated by IDRender in slabdefs.h.
RENDER_DIOTIC_V was renamed RENDER_DICHOTIC. RENDER_SPATIAL2
("Spatial2") and RENDER_MIXER ("Mixer") are new.
The "SpatialVU"
plugin and the slabconvu demo application have been removed.
- slab3d no longer uses the
registry to find render plugins, generator plugins, and the default HRTF.
All registry functions have been removed. CRegistry has been
moved from slabwire to SLABScape. SLABScape still uses the
registry for most-recently-used files, window placement, and tracker settings. Render plugins are now either built in or found in the executable
directory. The generator plugin directory is either
specified in the generator constructor or assumed to be the
executable directory. The default HRTF is a resource linked
into the executable. The new behavior replaces the
previous registry mode and two stand-alone modes.
- Note: lib\srapi_hrtf.res must now be linked into all
SRAPI-using executables.
- CallRate() now sets the
Callback, Modifier, and Script update rate.
- SrcStream() no longer deletes
the passed SSI if an error occurs.
- SrcAlloc*() realloc can now
occur during render-time and no longer returns NULL for realloc
error.
- The default Smooth Time was
changed from 25ms to 15ms to increase dynamic responsiveness.
- CHRTF::LoadFromResource() loads
an HRTF database from a resource.
- The slabdefs.h conversion
defines were moved to slabmath.h.
- Doxygen comments were added
to slabmath.h.
- Source and reflection image
state memory use has been optimized.
- Bug Fix: Reflection spread and
radius state now refer to the source state.
- slabwire
- The version defines in slabdefs.h have
been moved to the new slabwire header file slabver.h. The
direct use of SLAB_VER replaces CSRAPI::GetVersion().
- CSSIList::Remove() removes an
SSI from an SSIList.
- The CSIGen() constructor
generator plugin directory default has changed from the current
directory to the executable directory.
- The default DirectSound
buffer size (DS_BUFSIZE_OUT) was changed from
4096 to 8192 bytes to reduce DirectSound underflows.
- $(NoInherit) was added to the
ASIO file paths to re-enable the use of an \Apps\asio directory for
ASIO files. At some point (VS08?), the absolute paths were
replaced by relative paths. If slab3d is installed to a
directory other than \slab3d, the corresponding Full Paths are
incorrect. $(NoInherit) disables Visual Studio's
generation of relative paths.
- rmyplugin
- SetNSOffset() support added.
- SLABScape
- The slab3d Registry Settings
dialog has been removed. The "Create slab3d Start Menu folder"
button has been moved to the About dialog.
- The Fritz mesh and wall
textures have been integrated into the SLABScape executable.
- The slabscript editor has
been removed. This functionality has been replaced by an XML
slabscript format and the Dynamic Settings dialog "Reload Script"
button.
- bin\slabscape.htm is now
used for the help page instead of the doc\ page.
- A null string HRTF database
name now indicates the default resource HRTF database.
- SmoothTime, number of
displayed sources, and the script filename have been added to the
Scape file.
- slabcon
- The slabconvu Spatial2 demo was merged into slabcon.
- Two script demos were added that
illustrate script control of the Mixer render plugin and
real-time stream replacement.
- slab3d
- The float and double
precision specification was revisited resulting in slight changes to srapi.cpp, 3DXFramework.cpp, view.cpp, and tracker.h. This
eliminated some instances of denormal math operations.
- For consistency, the following
project settings have changed:
- slabw and srapi release mode and jvoiplib: "Use MFC in a
Static Library" to "Use Standard Windows Libraries".
- all release projects: all instances of "Program
Database (/Zi)" changed to "Disabled".
- all debug projects: all instances of "Program
Database for Edit & Continue (/ZI)" changed to "Program Database (/Zi)".
- Comments
- Many thanks to NASA Ames for funding this
iteration of slab3d development.
- One should consider this
a beta release near the release date and a final release a few weeks
later unless otherwise noted. A bug notice
will be added to the Version History should any be found.
|
|
5/8/09 |
Version 6.3.1 Update
- Known Issues
- SLABScape defaults: SLABScape v6.3.1 uses slab3d
defaults instead of SLABScape-defined defaults:
- Smooth Time: 25ms vs. 15ms
- 15ms is more responsive and will most likely
become the new SRAPI default.
- Source Radius: 10cm vs. 5cm
- DirectSound Output Buffer Size: 4096 bytes
(23ms) vs. 8192 bytes (46ms)
- Write Buffer Size in both cases is 512 bytes.
- 4096/512 is prone to underflow, thus 8192 will
most likely become the new slabwire default.
- 4096/256 is less prone to underflow, but less
robust than 8192/512.
- Note: ASIO is the preferred sound device
driver interface. It tends to have lower latency and better
robustness than DirectSound.
- Building slabwire: This applies to
users using an \Apps\asio directory for ASIO files (see
Building slab3d). The
Visual Studio 2008 Relative Path for slabwire's ASIO files will
result in a bad Full Path if slab3d is installed to a directory
other than \slab3d. If slab3d is installed elsewhere, the
paths can be corrected using File Properties (Alt-Enter).
Users who do not use an \Apps\asio directory also have to update the ASIO File
Properties before building slabwire.
- Release-mode vs. debug-mode libraries: Due to the size of debug-mode libraries, only
release-mode libraries are distributed with slab3d. The hope was
that the release-mode libraries could be used with debug-mode user applications.
Unfortunately, this can result in linker issues. It should be
relatively easy to build the debug libraries if required. First,
build the usrlib jvoip.sln and slabDISInterface.sln solutions.
Next, build the slabw and srapi projects in the slab3d.sln solution.
See the slab3d User Manual - Building slab3d
and the ASIO bullet above.
|
|
4/17/09 |
Version 6.3.1
- Download
- Contents
- Additions
- SRAPI/slabwire: The CSIDISRadio2 RT
(real-time) DIS radio stream was added. RT radios use real-time sound
output and DIS transmitter state information to reduce latency.
RT radio parameters were added to the SRAPI functions
SrcAllocDISRadio() and AllocDISRadios(). To determine the
lowest possible buffer size, the SLABScape Log window can be used to
query the number of RT radio underflows. For the truly
adventurous, "stat" timestamp dumps can be enabled inside the code
(three varieties: sidisradio.h (slabwire), sdiStat.cpp (slabDISInterface user), and PDUSorter.cpp (slabDISInterface packet
reception)). The timestamp output can be visualized using
dis2.m. This will graphically depict the amount of DIS
buffering required as signal packet lag behind real-time.
- SRAPI Scene: Non-spatial gain functions
SetNSOffset(), GetNSOffset(), and GetNSScalar() added. The
non-spatial monotic and diotic renderers now use this parameter to
scale their gain.
- SRAPI Scene: Mute functions SrcMute()
and GetSrcMute() added.
- SRAPI: SrcRadius(), SrcMute(), and
SetNSOffset() state added to Scene file.
- slabwire: CSSI::SSInUnderflow() added
to query DIS RT radio underflow.
- SLABScape: Support for RT DIS Radios
was added. This included improvements to the Scape and Scene
files in order to save and open DIS radio configurations and
improvements to gain management in order to hear DIS communications
without attenuation. Scape and Scene files demonstrating
different DIS latency configurations have been added to slab3d's
bin\ directory.
- SLABScape: Relative file path support was added. This allows Scape and Scene files to
be moved with their corresponding data files. There are a
variety of ways to set SLABScape's current directory (see
SLABScape Help
Page: Execution). In SLABScape, the current directory path
can be displayed using Interface | Log | General. The Visual
Studio 2008 Debugger path is set via Property Pages | Configuration
Properties | Debugging | Working Directory. I typically use $(TargetDir).
Unfortunately, this does not appear to be saved in the project.
- slabtools: The MATLAB function dis2.m
can be used to visualize the "stat" timing data generated by the
CSIDISRadio2 class, the sdiStat application, and the
slabDISInterface library.
- slab3d User Manual: New sections were
added regarding SRAPI and Scene defaults and the minimum SRAPI code
required to render a sound source (see also slabcon.cpp).
- slabDISInterface library: The freq()
callback now includes transmitter state. getTimestampAbs()
added to query relative or absolute DIS timestamp use. Queue
flush added for transmission end and outside-of-transmission signal.
"stat" timestamps added to capture DIS packet arrival times (see
dis2.m).
- slabDISInterface solution: The sdiStat user application was added to acquire DIS timing information from
the library user perspective (i.e., post DIS PDU queue and UDP
reordering). See dis2.m.
- Modifications
- slab3d: All Known Issues from the
"Version 6.3.0 Update" entry below were corrected.
- slab3d: All instances of WINVER and
_WIN32_WINNT set to 0x0500 (Win2k or later). All
_WIN32_WINDOWS (WinME or earlier) removed. WINVER and
_WIN32_WINNT were added to JVOIPTestUtil.
- SRAPI: SetLinks() now sets the link
working directory (aka shortcut "Start in" property).
- SRAPI Scene: SrcGain(), SrcMute(),
SrcRadius(), and SrcRefOffset() were added to Reset().
SetRenderID() was removed from Reset().
- slabwire: CDISManager MAX_CONNECTIONS
increased from 64 to 128.
- slabwire: CDISManager now receives DIS
transmitter state notification.
- slabwire: stat.cpp dumps now occur to
the current directory rather than root. The StatEvent#()
macros have been replaced by inline functions.
- SLABScape: Spatial gain, non-spatial
gain, and mute state improved and moved to SRAPI Scene.
- SLABScape: Speech recognition grammar
now part of app instead of loaded from file.
- Known Issues
- Scape and Scene files: As noted for v6.3.0,
the Scape and Scene XML file formats are in development. The
parameters implemented are listed on the
SLABScape Help Page.
Although a goal is eventual backwards compatibility as the format
changes, at this stage of development, this is not the case.
- SLABScape build with Windows SDK v6.0A:
SLABScape v6.3.1 is built using Windows SDK v6.1. v6.1 includes the grammar compiler used to
build SLABScape's "grammar.cfg" file. A
pre-built version of grammar.cfg is distributed with slab3d, so v6.1
isn't necessarily required. However, if errors are reported
building SLABScape under v6.0A, v6.1 might help resolve them.
If you are not interested in speech recognition and Windows SDK v6.1,
see the define _ENABLE_SAPI in SLABScape file sr.h. Note, Microsoft's Speech API (SAPI) v5.1 SDK also contains a grammar
compiler. Both Windows SDK v6.1 ("Windows SDK for Windows
Server 2008 and .NET Framework 3.5") and "Speech SDK 5.1" can be
downloaded from the
Microsoft Download
Center.
- slabDISInterface: slabDISInterface uses a
one-in/one-out queue to order DIS radio packets. The queue is
flushed when a transmission completes or a signal packet arrives outside
of a transmission. The queue size used by slabwire is five
packets. The one-in/one-out behavior could conceivably result in
packet delays depending on the behavior of DIS transmitters, the most
likely scenario being frequency changes outside of a transmission.
- Comments
- Many thanks to the Air Force Research
Laboratory (AFRL) and NASA Ames for funding slab3d development.
- One should consider this
a beta release near the release date and a final release a few weeks
later unless otherwise noted. A bug notice
will be added to the Version History should any be found.
|
|
3/18/09 updated
4/17/09 |
Version 6.3.0 Update
- Known Issues
- SLABScape: The Static Settings | Sound
Sources | Generator droplist is not updated properly. It does
function for setting the generator type.
- SLABScape: The Beacon demo will only run
properly if slab3d is installed to c:\slab3d. beacon.scp and an
internal speech recognition grammar path reference this directory.
- SLABScape: For sound sources with an ID
parameter (i.e., DIS, VoIP, Link), there is a duplicate "id" attribute
in the Scape XML file (.scp). Reading the corresponding source
parameters from a Scape file will cause an XML error.
- SLABScape: The File menu MRU (Most Recently
Used) list is not saved.
- SLABScape: Once installed, the slab3d
directory cannot be moved without using regedit to remove the registry
keys (HKEY_CURRENT_USER\Software\slab3d\6.3.0). In the past, one
could use SLABScape to reset the registry settings, but v6.3.0 exits
before they can be reset.
- SRAPI: The Scene file (.scn) SrcGain db
parameter is actually a scalar gain and should not be used. In
this release, the Scape file gain overrides the db value, so this is not
an issue for SLABScape.
- SRAPI/slabwire: The ID of an auto-ID DIS
stream is not properly set after the following sequence: DIS streams
automatically assigned to DIS IDs, DIS streams freed, auto-ID DIS
streams allocated. The streams still appear to function properly
but the ID will be "" instead of the actual ID.
(4/17/09)
- Windows SDK v6.0A/v6.1 version clashes might
occur when building SLABScape. Ideally, v6.1 should only be
required if rebuilding the speech recognition file grammar.cfg.
But, depending on ones build environment, there may be complications.
The workaround is to comment-out references to SAPI (Speech API) in sr.h
and sr.cpp. (4/17/09)
- Comments
- Direct3D DLLs: When installing slab3d on a
new Vista Ultimate system, SLABScape v6.3.0 required d3dx9_37.dll and
v6.2.0 required d3dx9_30.dll. These can be installed using the
DirectX End-User Runtime as described
under System Requirements above. Alternatively, these can be copied from the
C:\Windows\System32\ directory of a system with a more thorough DirectX
installation.
|
|
2/25/09 |
Version 6.3.0
- Download
- Contents
- Additions
- "SlabDISinterface" DIS (Distributed
Interactive Simulation) support library and source code. I
gratefully acknowledge the Air Force Research Laboratory (AFRL) for
open-sourcing SlabDISinterface and allowing it to be included in the
slab3d release.
- SRAPI: SrcAllocEmitter() allocates an
"emitter" sound source. An emitter sound source does not have
a sample stream. It's primary purpose is to hold sound source scene state while
awaiting the selection of a sample stream.
- SRAPI: Sound sources can now be
reallocated in order to assign new "sample streams" to existing
"virtual environment emitters". SrcFree() can now
retain the emitters when freeing streams.
- SRAPI: Stand-alone mode constructor.
This version of stand-alone mode allows the render and generator
plugin directories and the default HRTF to be specified using the
CSRAPI constructor.
- SRAPI: GetASIOName() retrieves the name
of an ASIO device.
- SRAPI: Several constants were added to slabdefs.h.
- SRAPI: CSRAPI::Rendering() returns
CScene::GetRenderTime(). "Render Time" is the state between
RenderStart() and RenderStop().
- SRAPI: Math functions RectToRads()
and RadsToRect() are radian versions of RectToPolar() and PolarToRect().
- SRAPI: RenderBatch() performs batch
processing on a directory of wave files. This functionality
was previously in SLABScape.
- SRAPI: The new Modifier modSrcStream enqueues sound source stream changes. For
example, this feature can be used to play several wave files, one
after the other, from the same sound source. This is
demonstrated in SLABScape by dragging and dropping wave files onto
the SLABScape display while rendering a file or emitter sound
source. Modifiers are now initialized with a CSRAPI pointer instead of
a CScene pointer.
- SRAPI: SrcAllocDISRadio() auto radio ID
assignment option.
- SRAPI: SceneSave() and SceneOpen()
allow SRAPI acoustic scene state to be written to and read from an XML file. (IN
DEVELOPMENT)
- SRAPI Scene: "Hints" now exist for
certain scene parameters. When the corresponding set function
is called, the hint bit is set in the hint variable. See the
SH* defines in scene.h. Hints are used with "tick" updating.
- SRAPI Scene: "Tick" updating delays the
conversion of certain scene parameters to rendering parameters.
In the past, this conversion occurred within one signal processing
frame. Depending on the scene update method, this can result
in an unnecessarily high update rate. With tick updating, the
conversion doesn't occur until the scene is explicitly ticked by the
user. The user can select between frame (default) and tick
updating.
- SRAPI Scene: Several functions were
added to support a SLABScape rewrite: SetHint(), GetHint(),
HintClear(), SetTick(), Tick(), Lock(), Unlock(), LstPos(),
LstSensorPos(), GetLstPos(), GetLstX(), GetLstY(), GetLstZ(),
GetLstYaw(), GetLstPitch(), GetLstRoll(), EnvPlane(), EnvBound(),
EnvBoundX(), EnvBoundY(), EnvBoundZ(), EnvBoundR(), GetEnvBoundMove(),
GetRenderID(), GetRenderTime(), GetFIRPoints(), SrcLoc(),
GetSrcRadius(), GetSrcSpread(), GetSrcEnable(), GetSrcRefEnable(),
GetSrcLocRel(), GetSrcPolar(), and Reset().
- slabwire: CSIMemory now supports user
memory buffer playback in addition to memory-buffered wave
files.
- SLABScape: DIS radio IDs can now be
automatically assigned as radios appear on the network.
- SLABScape: DIS frequency sources listen
to all DIS radios on a specific frequency.
- SLABScape: Sound device output can now
be split to a file.
- SLABScape: "Beacon" auditory
beacon and speech recognition demo. The beacon demo was coded
to NASA researcher Mary Kaiser's specifications.
- slabwcon: CResampler/CResampler2 FIR
memory comparison.
- slab3d: cleandev.bat cleans all usrlib build files except the libraries. cleanusr.bat
cleans all usrlib build files. cleanrel.bat no longer cleans
usrlib, allowing clean.bat and cleandev.bat to create a "developer
release" containing usrlib libraries. Performing both a
cleanusr.bat and a cleanrel.bat creates a "user release".
- slabwire: CSIFile::GetLoop() returns
the file loop setting.
- HMIX2 render plugin: HMIX2 is similar
to HMIX but can route the same spatialized source output to two
independent HRTF left/right sound outputs.
- slabtools: The MATLAB script wmdemo.m
was written to demonstrate the open-source "Practical Guide to
Wavelet Analysis" code.
- Modifications
- slab3d: Development migrated from Visual
Studio 2005 to Visual Studio 2008.
- SLABScape: Portions of SLABScape were
rewritten to accomplish the following goals:
- ease maintenance by simplifying the
architecture and classes
- elimination of duplicate acoustic scene
state between SLABScape and SRAPI
- user interface reorganization to mirror SRAPI, e.g.,
dialogs reorganized into "static settings", the SRAPI settings set
before rendering and "dynamic settings", those set at any time
- simplified source code to better demonstrate SRAPI use
- reorganization of functionality to allow
component reuse
- improved stress-testing by using one CSRAPI
object during app execution
- new XML "Scape" file format, human-readable,
human-editable, extensible, and backwards compatible after extension
(IN DEVELOPMENT)
- new SRAPI XML "Scene" file format for both SLABScape and SRAPI use (IN DEVELOPMENT)
- new use of SLABScape as an SRAPI Scene file
editor for end-user applications (IN DEVELOPMENT)
- SLABScape: Improved DIS support,
including render-time radio ID, frequency, and frequency radio solo
specification and a log window for querying DIS information.
- SRAPI/slabwire: Replacing a stream
(e.g., SrcStream()) now
returns the previous stream rather than deleting it.
Important: It is now the user's responsibility to
delete the
previous stream!
- SRAPI/slabwire: The file for file
output is now opened before rendering rather than during
construction. This allows file output to be reused without
reallocation.
- SRAPI: SrcType replaced by slabwire's
StreamType.
- SRAPI: SrcLink() renamed SrcAllocLink().
- SRAPI Scene: LstPosition() always
positions the center of the head. In the past, if
LstSensorOffset() was used to specify the location of a head tracker sensor, LstPosition() would specify the
sensor position. The new function LstSensorPos() now specifies
the sensor position.
- SRAPI Scene: SrcLocateRel() now
disables reflections for the source. Listener-relative sources
are anechoic.
- slabwire: dismanager.h no longer
requires usrlib headers.
- slabwire: In DISManager, auto radio ID
assignment can now occur after a stream restart.
- slabwire: CSIDISFreq::GetSoloID()
retrieves the ID of a soloed radio.
- slabwire: SSInUnderflow() renamed
SSInOverflow() to better describe condition.
- slabwire: CSSI SSInPaused() replaces
SSInPlaying().
- HMIX/HMIX2 render plugins: The
non-spatial vector mix can now be mixed with the two spatial mixes.
- slabtools: The continuous wavelet
transform MATLAB script cwt.m was rewritten.
- slabtools: The Morlet wavelet
visualization MATLAB script morlet.m was rewritten.
- Documentation: doxygen upgraded from
v1.4.4 to v1.5.8.
- Known Issues
- The SLABScape binary file
format is no longer supported. It is being replaced by the
features denoted (IN DEVELOPMENT) above. Thus, SLABScape
file-save and file-open are only partially implemented.
- An audible artifact is sometimes heard when using
modSrcStream.
- Comments
- Many thanks to the Air Force Research
Laboratory (AFRL) and NASA Ames for funding slab3d development.
- As with previous releases, there have been
significant modifications to slab3d. One should consider this
a beta release near the release date and a final release a few weeks
later unless otherwise noted. In other words, a bug notice
will be added to the Version History should any be found.
|
|
6/6/08 |
Version 6.2.0
- Download
- Contents
- Additions
- SRAPI: SrcStream() allows a File,
Memory, or URL stream to be replaced during render-time. This
is demonstrated by SLABScape. If a file is being rendered,
dragging and dropping a file from a file browser to SLABScape will
replace the rendered file with the dropped file.
- SRAPI/slabwire: CResampler2 provides
support for resample factors other than 1,2,4,8x. Resampling
occurs when input and render rates differ and/or when upsampling for
the oversampled delay line. The CResampler2 sample rate
conversion algorithm is the bandlimited interpolation algorithm
implemented in the resample and libresample software packages (see
http://www-ccrma.stanford.edu/~jos/resample/). A feature
was added that allows the anti-aliasing filter to be bypassed (see
CSSI::SSInSampleAlias()).
- SRAPI/slabwire: Remote URL-specified
files can now be streamed and rendered in real-time (see SrcAllocUrl()
and CSIUrl). Only HTTP addresses have been tested.
- SRAPI/slabwire: Individual CSIDISFreq
radios can now be soloed.
- SRAPI/slabwire: CSIDISRadio streams can
now be queried to determine if they are part of a frequency pool or
if they are soloed.
- SRAPI/slabwire: The CDISManager
GetRadioPooled() function indicates if a radio is part of a
frequency pool.
- slabwire: CDelayLine can now advance by
samples as well as frames.
- slabwire: CSIList Replace() replaces
one StreamIn with another.
- slabtools: dmix.m is a simple wave mix
and overflow visualization script.
- slabtools: morlet.m is a Morlet wavelet
visualization script.
- slabtools: cwt.m is a Continuous
Wavelet Transform (CWT) script.
- slabtools: wmdemo.m demonstrates the
"Practical Guide to Wavelet Analysis" CWT.
- slabwcon: CResample is a class version
of libresample with a different buffering strategy. CResample
uses a rotational input buffer and a fixed-length output buffer.
CResample was used as the basis for slabwire's CResampler2.
Test cases were added to slabwcon to compare libresample, CResample,
and slabwire (CResampler2) sample-rate conversion.
- SLABWireDemo: HTTP stream demo added
for CSIUrl.
- Modifications
- SRAPI/slabwire: There has been an SRAPI/slabwire paradigm shift. Rather than hide slabwire
input streams from the SRAPI user, SRAPI users now interact with
input streams directly for stream-specific actions. This
eliminates cumbersome SRAPI wrapper functions. The following
sound source StreamIn access macros were added to srapi.h:
siStreamIn(), siGen(), siDISRadio(), siDISFreq(), siVoipID(), siFile(),
and siMemory(). The SRAPI functions SrcComID(), SrcStreamCtl(),
SrcGenCmd(), SrcGenEnum(), and SrcGenInfo() have been removed.
The various apps have been updated accordingly (e.g., slabcom,
slabcon). See the CSRAPI class description in the SRAPI Reference Manual for a list of relevant slabwire functions.
- SRAPI/slabwire: If a sample overflows
on output, it now clips to +/- 1 instead of wrapping. This
greatly reduces the resulting audible artifacts.
- SRAPI: GetClips() was moved from CScene to
CSRAPI. Clipping now occurs in the output stream versus the
individual render plugins.
- slabwire: The slabwire header files
have been moved from the old slabwire directory slab3d/include/slabw/
to the new combined slabwire and SRAPI directory slab3d/include/.
- slabwire: The gplugin.h generator
plugin interface was simplified. Generator commands are now
handled via function overrides instead of command messages.
The gslab and gstk generator plugins were updated accordingly.
- slabwire: Several StreamIn and
StreamOut classes were renamed to replace the TLAs (three-letter acronyms) with
human-readable names: CSIF to CSIFile, CSIM to CSIMemory, CSIV to
CSIVoipPort, CSIP to CSIVoipID, CSIT to CSITrack, CSIR to CSIUser,
CSID to CSIDevice, CSIS to CSIAsio, CSIG to CSIGen, CSOD to
CSODevice, CSOS to CSOAsio, CSOX to CSODSound, CSOF to CSOFile, and
CSOM to CSOMemory.
- slabwire: DSP input stream
management now allows for render-time replacement of input streams.
- slabwire: CResampler now allows
subclasses to support previously unsupported resample factors.
- Comments
- Many thanks to the AFRL (Air Force Research
Laboratory) and NASA Ames for funding these features.
- This release is high on the beta
scale due to extensive slabwire and SRAPI changes. Note,
though, this does not imply known instability. It simply means
there has been little use of the mods.
- Although DIS support code has been added to slab3d
(e.g., SrcAllocDISRadio(), SrcAllocDISFreq(), CSIDISRadio class), the underlying DIS interface code is awaiting
release approval. Thus, the userlib/slabDISInterface library
is a nonfunctional stand-in. The release executables and
libraries are built with the nonfunctional stand-in library.
|
|
1/12/01
|
Welcome to the slab3d home page! The slab3d software and documentation are works-in-progress. Please report bugs or
comments to the
slab3d
mailing list. |