Follow us Follow us Signalogic on LinkedIn

Sig56-2 Technical Support

Case Incidents:

Web Site Link:


Analog I/O and Sampling Data

From: Jeff
Subject: Re: DSP acoustic hw/sw  inquiry 
To: Jose 


>1.- I will use a NT machine with other PnP cards (GPIB, etc)
>2.- I will use visual C++ ..... for the real time application.

DSPower-HwLib supports MSVC 1.5x, 4.x, and 5.x.  Both source code and project 
file examples are included.  For more information, please see, hwlibsum.shtml, hfiles.shtml, dscope.shtml, dtape.shtml.

>3.- if the mat-lab interface can be used.... for modeling , simulation etc
>...... I would like to understand the how.... to

For more information, please see, hwlibsum.shtml, 
m_examp1.shtml, m_examp2.shtml.

>the system requirements are:
>- to have 2 analog inputs
>- to have 1 analog output ( prefered with 2 outputs)

OK.  The Sig56-2 board provides 2-channel 16-bit sigma-delta analog I/O, 
simultaneous sampling, sampling rates 11.025 kHz, 22.05 kHz, and 44.1 kHz.  
Other possible set of three (3) sampling rates can be obtained by changing 
oscillator on board; for example, 8 kHz, 16 kHz, 32 kHz.

>- to be PnP  for NT

The initial Sig56-2 WinNT driver might not be PnP, but this should not be a 
problem.  We only need to make sure that Sig56-2 board is not occupying same 16 
I/O locations as other boards in your system.

>final question. If the outputs are used to generate a sinewave output
>(12 bits minimum) how clean would be (THD = ?)

The Sig56-2 provides 16-bit output, using CS4328 stereo sigma-delta D/A device. 
Typical SNR is 92 dB, typical THD is 0.01% (A weighted), 0.2% (unweighted) @ 0 - 
19 kHz.  Typical IM distortion is .01% @ 0 - 19 kHz. 

Jeff Brower
DSP sw/hw engineer


2 Input 16 Bit A-D Card to Simultaneous Sampling and Multichannel Aquisition

From: Jeff
Subject: Sig56-2 inquiry
To: Mark


>>I need a 2 input (0-5v) 16 bit A-D card that will sample the two
>>voltages simultaneously at intervals of 1 second or greater.
>>It is important in this application that the two voltages are
>>mesaured AT THE SAME TIME, and the time of the sample
>>is also important (Sample interval MUST be EVEN and relative
>>time sample was taken must also be known).
>>Programming environment is Microsoft VisualBasic 3.0
>>We have an old (1984) DataQ DM100PC board that seems
>>to be suitable but is in use in another application. Do you
>>know of anything similar that is available ??

You could use a Sig56-2 board if cost is the ultimate issue.  The lowest 
physical sampling rate the board can achieve is 4 kHz if we install the 
appropriate Fs oscillator.  Additionaly the "decimation" function in the 
software can be set, for example to value of 100 to achieve 40 Hz sampling rate, 
or value of 4000 to achieve 1 Hz sampling rate

Alternatively, you could purchase something like PC32, which has 
4-channel simultaneous acquisition, and can sample at 1 Hz with software 
overhead.  This would provide channel expansion room for future use, and maybe 
also provide a DSP/data acquisition platform on which they can standardize for 
more of their applications.  ...



RUNDLL32 Error Board Found Is Not Tahiti

From: Jeff 
Subject: Re: tahiti setup
To: Phil 


>I just bought a DSP board and software from you guys (a University
>package). I put the tahiti board in my win95 PC, resolved the ems
>conflict, but I get a message from the Tahiti driver saying it found a
>board, but not a tahiti.

Is this an existing Tahiti driver from before?  If so, then the message is OK.  
The board is actually a MultiSound which had a problem with its wave-table 
synthesis, which we removed.  We retested the board as a Tahiti.

>Rather than installing the (handwritten) floppy included (tahiti 2.5
>drivers for win 3.1), I installed the latest win95 drivers which I
>downloaded from the Turtle beach site.

I don't know if latest TBS drivers will work with original Tahiti boards.  This 
is a good question for TBS.  I would suggest trying the drivers we included.

>Also, I am unable to change from the existing PCI audio board (ensoniq) to
>the tahiti using the multimedia control panel. I get the GPF below:
>RUNDLL32 caused a general protection fault
>in module TAHITI95.DRV at 0009:00000e5c.

If the new TBS drivers don't work with original Tahiti, then this type of error 
could indeed be likely.

>So, I guess I need some advice. Should I remove the PCI sound card? Do I
>need a different driver (ie, is the board you sell not 100% tahiti)?

Don't remove PCI sound card.  Have you installed DSPower software?  This 
software contains its own, built-in Tahiti driver, and will coexist with other 
sound cards, no problem.  This is the intended mode of operation; the Tahiti is 
supposed to serve as DSP and data acquisition / instrumentation engine for the 
DSPower software.  If you must use the Tahiti as a regular Windows sound card, 
then I would suggest trying the drivers that we sent.

When you have DSPower questions, feel free to ask.  When running DSPower-HWLib, 
try some of the "canned" demos first.  When running DSPower-Block Diagram, be 
sure to perform hardware setup first, including the "Set Hardware Variables" 
button (see main toolbar button).

Jeff Brower
DSP sw/hw engineer


Frame Size Limit and Channel Sampling

From: Jeff 
Subject: Re: a bit more help needed
To: Phil 


>I have looked through the documentation for much of this
>but am unable to find it. If there is something I should be reading,
>please tell me where it is.

Reference Guide online help file (refguide.hlp).  There should be an icon for 
this in your Signalogic DSP Software folder/window.  Select "Function 
Reference" from table of contents, or search on "DSxxxx" where 
xxxx is function name (e.g. search for DSGetMem).  The DS prefix is not used in 
the MATLAB version of the API.

>I want to bring in both Left & Right channels. It is important that they
>are from the same frame (ie, the relative timing is very critical). Once
>I am bringing in both L & R from the same time instance, I am all set to
>cruch my code (real-time not critical at this point).


>In the Hwtest2, I see that the variable "NumChan" is set to 1. I assume
>I set this to 2 to get both L & R.


>Next, I need to have an idea of what else to change to accomodate L & R
>(the normal Matlab stuff is no prob, but the calls are a bit hard to
>understand at this point).

You might want to set the PutVarMem(DSP_BUFLEN) call to be NumChan*BufSize, so 
your *effective* buffer size is channel-independent.  See comments below.

>In the code below (taken from Hwtest2.m), what is the "BufNum" doing,
>and what is the difference between DS_GM_VECTOR_DATA_X and Y?
>WaitForBuffer(hBoard, BufNum, NULL, DS_WFB_POLLED + DS_WFB_SYNC);
>if (BufNum == 0)
>	Status = GetMem(hBoard, DS_GM_VECTOR_DATA_X, TimBaseAddr,
>DS_GM_SIZE16_CVT, buf, BufSize);
>	Status = GetMem(hBoard, DS_GM_VECTOR_DATA_Y, TimBaseAddr,
>DS_GM_SIZE16_CVT, buf, BufSize);

The DSP code is real-time, and so uses a double-buffered method to acquire data. 
Buffer 0 is in X: mem, buffer 1 is in Y: mem (at same address).  Each time a 
buffer is acquired, the DSP code switches buffers; i.e. the code 
is "processing" one buffer (or handing it off to the host) while 
filling the other one.  So, if you do repeated WaitForBuffer calls, then you 
should toggle BufNum (XOR it) after each call.

The data you get with GetMem is interleaved.  Channel 0 (left) is contained in 
even samples, channel 1 (right) in odd samples.

Whether you stay in real-time at 11k rate is iffy.  MATLAB is not fast, and 
without using the callback message method, it will depend heavily on the speed 
of your system and the "crunching" you do after each buffer.

Also, you might need to do a PutVarMem(DSP_HOSTBUFNUM, BufNum) after toggling 
the buffer number.  This is becausing you are using mode 2 (digital scope mode), 
which may require the host PC to "acknowledge" being done with 
a buffer before the scope code acquires a new buffer.  I know this is the 
case for the 'C3x, 'C4x, and DSP32C boards we support, and I think this 
is true for the DSP56xxx boards also.  Mode 0 (continuous acquisition) 
does not need this, but it requires several initial PutVarMem() calls to 
set more variables (channel list, digital scale and offset, triggering, etc.).  
If this becomes necessary because at some point you want to shoot for fully 
real-time operation, you can look at strip.cpp for an example of how to set 
mode 0 operation.

>Lastly, what is the practical limit on the frame size (in the case of
>Hwtest2.m, "BufSize")? I am using a sample rate of 11k if that's

In your case, using a Sig56-2 board, there is 32k x 24 total of SRAM; about 8k 
of this is reserved for program code, and remaining 24k can be used for data 
acquisition.  Therefore, practical limit is probably about 12k (two buffers).  
If you use mode 6 (simultaneous I/O, or stimulus & response), then limit 
is cut 1/2, because half of remaining memory is dedicated to output buffers 
(also double-buffered).


Setting the Config SA Field for Sig56-2

From: Jeff 
Subject: Re: tech support
To: Phil 


>Hi, I thought I'd let you know I tried what you suggested, but I get this
>random noise in the S.A. still. The scope works fine. I think I see a bit
>of the signal in the SA, but the noise is as tall as the signal.
>Any other ideas? Could there be a hardware conflict? (IRQ?).

One.  Try going into Hypersignal in "user mode" (there should be 
an icon on the Signalogic Software Folder for this), set up the System Config 
SA field for TBS56-B or Sig56-2, and try running the SA menu item (located in 
Frequency Domain column in main screen).  Enter


and leave other fields as is (or play with them as required).  The aN means 
analog channel N, the m+ means log magnitude.  Ask me if you have questions.

>Since the scope output is clean, I would expect the SA to be clean as well.

Yes, it should be.

Jeff Brower
DSP sw/hw engineer


Measure Pitch/Loudness(Decibels)/Graphically Compare Sound Reduction Capability

From: Jeff
Subject: Re: low-cost DSP inquiry
To: Richard 


>We are primarily interested in measuring pitch and
>loudness (in decibels). The ability to superimpose a sample of one design
>directly over another to graphically compare sound reduction would be very
>useful. We are currently looking at several options for hardware and
>sampling equipment.

One suggestion is to make sure you get software with time vs. frequeny 
capability, such as 3-D waterfall or 2-D contour (color/grey level) display. 
What I think you need to measure is the amplitude and frequency of the report 
over a relatively long time period, like 0.5 to 0.75 sec.  The 2-D contour (2D 
Spectrograph) function in the DSPower and Hypersignal-Acoustic software is 
powerful for this:  it shows time on the horizontal axis, frequency on the 
vertical, and amplitude (either linear or log magnitude) as color-encoded (up to 
256 levels).  By "looking down" at the data, you can effectively 
get more on the screen at once, and you can see what happened to the sound 
w.r.t. time, rather than seeing only peak amplitude measurements or averaged 
frequencies.  One of the problems you will have is knowing what makes a 
suppressor design effective, rather than just saying "well, that one 
seems to work, so don't mess with it".  When comparing one design to 
another, knowing what happens before and after critical sound areas--
transition regions--might be just as important as knowing the absolute specs.

Also, note that the DSPower and Hypersignal 2D Spectrogram display allows you to 
display two traces side by side, and do a D/A playback using target/zoom 
markers.  There is also a frame-by-frame Magnitude Display function with 
overlaid trace capability.

One reason for looking at data this way is to measure and visualize what happens 
when you shift energy to different frequencies.  My suspicion is that an 
effective noise suppressor might not make energy vanish so much as shift it to 
(possibly lower) frequencies which are less painful to human hearing and/or do 
not propagate as well.

>We lost your email that contained the low cost sampling cards that you
>suggested. Could you please suggest them again?

Attached.  The board we were suggesting is the Sig56-2, which has:

  -40 MHz DSP56001 processor

  -32k x 24 SRAM

  -2-channel 16-bit sigma-delta analog I/O, sampling rates 11.025, 22.5,
   and 44.1 kHz, with 92 dB SNR typical

  -ISA bus interface to host PC

When used with the built-in software driver, the Sig56-2 is capable of 2-channel 
44.1 kHz continuous streaming to disk waveform file, stimulus & response 
measurement (e.g. MLS), spectrum analyser, digital oscilloscope, continuous 
function generator, and more.  Note that on the Sig56-2 sampling rates can be 
changed by installing a different oscillator.  For example, you might want 12, 
24, and 48 kHz, or 10, 20, and 40 kHz.

Jeff Brower
DSP sw/hw engineer

I/O Ranges and Setup of Digital Oscilloscope Function

From: Jeff
Subject: Re: Input output voltage range of the tahiti
To: Chris


>What are the input output ranges of the turtle beach card?

+/- .12V to +/- 3.4 V, programmable by digital potentiometer.  The default 
software setting is +/- 1.53 V (halfway, or digital pot. setting of 128).  
Currently, this cannot be changed from software, but can be changed in the 
DSP56k source code.
>Can the TB card be used with the digital oscilloscope function and how 
>do I set it up?

No driver setup is required outside of Signalogic software. In Hypersignal, from 
System Config menu:

  -set Dig. Scope field to 'SIG56' or 'TBS56'

  -exit to main menu, press 'U' key to update/save config file

  -go to Dig. Scope function (under "Time Domain"), enter 'a0' in
   first field, 'a1' in second field; you can also enter waveform
   filename(s) ('aN' is special nomenclature for analog channels)

  -run scope function by pressing Enter key on last field

In DSPower, from "DSP/Analog I/O Hardware Configuration" dialog box:

  -select "Signalogic Sig56-2" or "Turtle Beach Systems Tahiti"

  -make sure I/O addr is set to 0x290

  -if DSPower-Block Diagram software, also click "Set HW Variables" 
button and click "Set All" (suggested: clear the "DSP 
Accelerator" field so that if you happen to run a processing block at 
the same time as an instrument or measurement block is already running, 
there won't be a fatal conflict)

  -click OK to run demo program (DSPower-HWLib), or to return to diagram and
   run block (DSPower-Block Diagram)

One question:  do you have TBS board in same computer as Sig32C or other SigXXX 
board?  All of these boards use 0x290 as I/O base address.  If more than one is 
needed in same computer, one of the I/O addrs would have to change--in such case 
my suggestion would be to change Sig32C address to 0x300 or 0x340.  In 
Hypersignal you have to change the hsmacro.cnf or hsacous.cnf file to match this 
(ask me if needed); in DSPower the change is made in the DSP/Analog I/O Hardware 
Configuration dialog box.



Configuring Hypersignal-Acoustic to Use DSPower-Block Diagram

From: Jeff
Subject: Re: Some Technical Help
To: Majid 


>1)  Do I need to configure the Hyperacoustic in order to use the DSPower-Block 
>program, i.e. are they independent of each other? 

You can configure Hypersignal-Acoustic (HSA) completely from DSPower 
environment.  Make sure that under menu item "Configuration", "
DSP Engines" (which brings up a dialog box) that command line for HSA is set to 
\hsacous\hsacous.exe (or possibly different path if entered during installation).  
Also make sure that Hypersignal run-time source line is set to \hsacous.

Also, in this same dialog box, if you have MATLAB 4.2x installed, make sure 
MATLAB engine command line is set to \matlab\bin.

>2) I configured DSPower-Block, but configuring the Hyperacoustic is not trivial 
>and it locks up if it does not like the setting.  Would you please send me the 
>setting that I should have for the Tahiti Board?

You should not have to click on HSA icon and run HSA directly.  To choose 
hardware, please select Hardware Configuration button on main toolbar (this is a 
picture of a green board), and do following:

  -select either "Turtle Beach Systems Tahiti" or "Signalogic 

  -I/O base address should be 0x290 (this is default, unless you have changed
   it), processor clock speed should be 40 (40 MHz), and default dsp program
   file should be "dsp56tbs.out"

  -click Hardware Variables button and select "Set Acq Vars" 

Jeff Brower


Troubleshooting for Running Hypersignal-Macro on Sig56-2

From: Jeff 
Subject: Re: SBSUNIV-M56
To: Pak 

Prof. Pak-

>I have received your software SBSUNIV-M56 via ....
>Hypersignal-Macro does not run and  Windows closes as soon as I click the
>Hypersignal-Macro icon, though  Dspower-Block diagram does run well.  I
>installed the software to another Windows machine (both machines have 
>Pentium 200MHz CPU, 32MB RAM), but the same situation occurred.
>How can I get out of this situation?

Try the following:

1) First use DOS prompt and go to \hsmacro subdirectory.

2) Delete hsmacro.cnf file, if there is one.

3) Type "hsm" and press Enter key.  This is hsm.bat file, for using
Hypersignal-Macro manually.  What happens in this case?

If you can get HSM to run, then you can enter 'Sig56-2' in the first four fields 
of System Configuration menu, and try functions such as FFT Generation and 
Digital Oscilloscope.  The System Config menu is equivalent to selecting Sig56-2 
board from DSP/Analog Hardware dialog box when running DSPower-Block Diagram 

Also, some questions:

  -if you use DOS prompt and type "mem" command, what is "largest
   executable program size" value?

  -did you install all eight (8) diskettes at once?  The install
   should have included both DSPower-Block Diagram and

  -what is your version of DSPower sw? (go to About item on
   "Help" main menu).  ......

Jeff Brower
DSP sw/hw engineer

Hypersignal Acoustic and Tahiti- Installation

From: Jeff
Subject: Re: Tahiti installation Hypersignal-Acoustic software
To: Ton 

Hello Ton-

>I'm trying to run Hypersignal Acoustic V4.30 with a Tahiti Multisound card.
>Unfortunately I always get the following Error message:
>TBS DSP56001 Board Err I/O, Mem Address, Jumpers?
>BTW the card is working fine with other sound software (windows driver)...
>Hypersignal Acoustic V4.30x
>Tahiti Multisound
>I/O $260
>IRQ 11
>MEM D0000 - D7FFF

Ok, so the memory address that Hypersignal-Acoustic (HSA) uses must be changed 
to 0x260.  To do this:

  -edit hsacous.cnf file (located on \hsacous subdir) or
   (hsmacro.cnf file on \hsmacro subdir for Hypersignal-Macro

  -go to 17th line from end of file

  -the default value should be 656 (0x290); change to 608 (0x260)

  -do not change any other lines, insert blank lines, etc.

  -exit, save file

  -re-run HSA

>I entered in the Hypersignal-System Config: TBS56-B for the first 4 entries
>I changed the line in CONFIG.TXT from
>TBS_56_base_addr:    Word=$290; { Turtle Beach MultiSound DSP56001 system }
>TBS_56_base_addr:    Word=$260; { Turtle Beach MultiSound DSP56001 system }

Config.txt file is for purposes of compiling user-defined .exe programs.  To 
change run-time HSA value, the hsacous.cnf file must be changed.

>1) How can I read in (convert) the new CONFIG.TXT so the I/O address gets
>stored in HSACOUS.CNF?

Please see above comments.

>2) If the above is NOT possible, where EXACTLY is the place in HSACOUS.CNF
>to enter the new I/O address? Is there anything else that needs to be

Please see above comments.

>3) Does the Tahiti card need special settings that are not mentioned in the

No.  Standard jumpers should be Ok.  Since you have Tahiti board working with 
previous version of Hypersignal-Acoustic software, everything on board should 
still be correct.

>If possible please attach a working HSACOUS.CNF configured to work with the
>Tahiti Multisound jumpered to I/O $260.

Please see above comments.

Jeff Brower
DSP sw/hw engineer

Playing Back Buffer in Memory

From: Jeff Brower
Subject: Re: DSPower - Playback
To: Jay 


>How can I playback a buffer in memory?

Here is some general information.  Please let me know more specifics, so I can 
fine-tune the explanation a bit for what you're doing.

How long is the buffer?  For a buffer less than the size of the SRAM on the 
board, you can just download it with PutMem, set the DSP_BUFSIZ property, and 
set other mode 1 (continuous D/A output) properties, and tell the DSP to run.  
If the buffer is longer than available onboard SRAM, then a similar thing 
applies, except you have to handle callback messages to know when to download 
another buffer.

In both cases, above, look at hwtest4.m for an example.  If you are working in 
VB or C/C++, emulate the PutVarMem commands (DSP properties) to get things set 
up, add to the setup the standard DSRegisterEngMsgWnd stuff to initiate callback 
messages, and then:

  -make sure DSP_NUMCHAN and DSP_CHANLIST are set correctly

  -make sure DSP_FSMODE is set correctly; you can get this value by
   calling DSCalcSampFreq() with your desired sampling rate (assumed to
   be 8 kHz).  Note that for modified Tahiti board, I think you should
   specify desired rate of 11.025 kHz, since the driver doesn't "know"
   about the modified board.  The resulting FsMode value should be
   the lowest of three possible control values, which would be correct.

  -make sure DSP_BUFSIZ is set correctly; for one gigantic buffer, DSP_BUFSIZ
   should be set to 1/2 the SRAM (two buffers), and the size of SRAM is
   measured in 16-bit samples (assuming you use DS_GM_SIZE16 in your PutMem
   calls).  For continuous operation, DSP_BUFSIZ should be something like
   8k, 12k (12288) or 16k (16384).

  -do two (2) PutMem calls to get the first 2 buffers downloaded

  -make RunProcessor() call

  -WaitForBuffer( async ) to cause output to start

  -respond to WM_DSPENGINE_BUFRDY messages with a ResetProcessor for the
   case of one big buffer, and with PutMem for the next buffer in the
   case of continuous processing.  The first message would be buffer 0
  (since buffer 1 is currently being output), then buffer 1, etc.

You can also use the .cpp and .bas files (dscope.cpp/.bas,  strip.cpp/bas, etc.) 
to make sure the board is being setup correctly and a window handle is available 
for callback message processing.