00      STIM3A ADVANCED STIMULUS SIGNAL GENERATOR

 CONTENTS:

 Index
 I0Introduction
     IfFeatures
     ImMode Selection Guide
     IsSpeed
     IdDEMO "Dummy" Board
 p0Configuration Parameters
 SMTop-Level Menus
    SiMain Menu
    YMSync Menu
    MMMisc Menu
 rhRevision History

I0
 INTRODUCTION:

 This module allows you generate output signals using any
 supported laboratory-type board that provides
 Digital-to-Analog Converter (GDDAC) outputs and / or digital
 outputs.  It also supports Gdfull-duplex sound cards that
 use the SB16.ADC driver, but these have no digital output
 capabilities.  Note that the term "digital outputs" is often
 applied to sound cards that have SPDIF outputs, but those are
 simply the "raw" digital outputs that normally are sent to the
 DAC.  This module can not control them as independent outputs.

 ┌──────────────────────────────────────────────────────────┐
 │                                                          │
 │  PLEASE NOTE:                                            │
 │  STIM3A allows unlimited use ONLY BY REGISTERED DAQARTA  │
 │  USERS.  All others may use it for 30 sessions, after    │
 │  which it will no longer load.  This limit applies       │
 │  only when used with "real" hardware;  you may use the   │
 │  IdDEMO.ADC driver as often as you wish without reducing   │
 │  the remaining count.  It is thus recommended that you   │
 │  use DEMO.ADC to become familiar with the many STIM3A    │
 │  options.                                                │
 │                                                          │
 └──────────────────────────────────────────────────────────┘
 ┌───────────────────────────────────────────────────────┐
 │  STIM3A supports only laboratory-type ADC boards and  │
 │  full-duplex sound cards like the SB16/32/64.  Other  │
 │  sound cards use their built-in synthesizers for      │
 │  stimulus generation.  See the help system of your    │
 │  0Bparticular card for full details.                    │
 └───────────────────────────────────────────────────────┘


If FEATURES:

 STIM3A allows a host of waveforms and modulation modes, but
 the most important feature is StDynamic mode.  This permits
 continuous real-time signal generation instead of simple
 playback of a stored static buffer.  Not only does this allow
 extremely fine N0frequency resolution, but it also allows
 extremely long tone bursts and frequency sweeps (hours or
 days) and complex signal interactions.  For example, two
 component frequencies that are set to differ by 0.0001 Hz will
 only be in phase once every 2.78 hours.  Modulation cycles
 can be combined to get even longer cycles, many millions
 or even billions of years.

 Two SaDAC channels of up to 16 bits each are supported, plus a
 Sxdigital output of up to 8 bits.  These may be used together
 in any combination.  Each output is configured via its Setup
 menu.  The two DAC outputs may be Ssswapped with a single
 toggle, or the same signal may be fed to S0both at once.

 Each DAC channel allows up to 4 different CMwave components to
 be generated, labelled A through D, each with its own separate
 submenu page system.  Each component page has submenu controls
 for CwWave type, CfFrequency, and various Cmmodulators.  The outputs
 from one or more pages can be CPused as modulators for other
 pages, allowing extremely complex modulation schemes.

 Complete signal configurations may be saved to files for
 pSautomatic load on start-up, or may be Mssaved or Mlloaded at any
 time during operation.


 Waveforms, resolution N00.0001 Hz, Np0.05 degrees:
 ■  VsSine
 ■  VtTriangle
 ■  VrRamp / Staircase
        (RrAdjustable / Rmmodulated slope)
        (Continuous, or Rsadjustable steps)
 ■  VqSquare
 ■  VpPulse
        (Monophasic or biphasic)
        (Adjustable height and width)
 ■  VaArbitrary waveform from file, one of 8 loaded
 ■  VxPlay complete recording from file, one of 8 loaded
        (Adjustable start/stop and rate)

 VNRandom sources:
 ■  VwWhite noise, uniform distribution
 ■  VgGaussian (normal) distribution white noise
        (Adjustable GpStandard Deviation)
 ■  VpPink noise
 ■  VbBand-limited noise
        (Adjustable band/gap edge frequencies and shapes)

 Each waveform can be Cmmodulated by any or all of:
 ■  CbBurst (BSShape, BsStart, BrRise, BdDuration, BfFall, BwDwell)
 ■  CaAM (Amplitude Modulation)
 ■  CFFM (Frequency Modulation)
 ■  CpPhase / Ramp Slope / Pulse Width Modulation
 ■  CsFrequency Sweep
        (E0Up or down, Ellinear, exponential, or step)

 Random sources can use Burst or AM modulators.  They can also
 be Tlslowed, Ttstepped, Tmsmoothed, Tqquantized, or Tdtime-shifted. (Two
 identical noise sources combined with a time shift give
 comb-filtered noise, for example.)

 AM, FM, and Phase/Slope/Width modulators can use simple sine
 modulation (adjustable frequency, phase, and depth) or one or
 more of the CPother components as modulators.  For example, you
 can have a basic Pulse waveform, and apply FM that uses a
 noise generator as its source to provide controlled jitter.
 And that noise source can use AM so that the jitter changes in
 strength, and the AM source can be an Arb or Play file that is
 stepped through slowly to provide a test program of different
 jitter amounts.

 By controlling the timing of each component page, the four can
 be made to occur sequentially or concurrently during a single
 data acquisition sweep.  The components may also be grouped
 for output on two separate Ymalternating sweeps or four
 sequential sweeps.  The two DAC channels are completely
 independent, so up to 8 signals can be used.

 The DMdigital output allows individual control of each of the 8
 bits.  Each bit output may be set to provide either one pulse
 or a DTtrain of pulses, with complete control over the Dstiming
 and Dppolarity.  When the stimulus generator is set to an
 alternating stimulus mode, complete control is available for
 two or four different 8-bit digital sequences.

 The stimulus generator works in synchrony with the data
 acquisition process.  At each sample time, an output sample
 is given from each active stimulus source in the order
    DAC 0, DAC 1, DigOut
 before the analog input sample data is read.  The stimulus
 samples are precomputed and stored, in the same sequence they
 will be used, in one large pBmemory buffer of up to 64
 Kbytes in size.  Whenever any stimulus parameter is changed,
 the entire stimulus buffer is recomputed.  However, the usage
 of this buffer changes between conventional Static and the new
 Dynamic generation modes, as well as between RsSequential and
 RrRTime acquisition modes.


Im MODE SELECTION GUIDE:

 The following table is intended as a quick guide to the four
 basic modes of operation.  Durations shown are based upon a
 X0sample rate of 48 kHz and a pB64 Kbyte buffer.

                         Static          Dynamic
   RsSequential:
     Continuous          -NA-            -NA-
     Bursts              Identical       Changing
     Length              0.68 sec        0.68 sec


   RrRTime:
     Cont. Resolution    2.9 Hz          0.000089 Hz
     Bursts              Identical       Changing
     Length              0.68 sec        24.86 hours


 SEQUENTIAL MODE:
 Sequential mode is only appropriate for burst generation,
 since the signal output goes off during the time the ADC input
 data is being processed and the display updated.

 ■  STATIC SEQUENTIAL:
 Each burst is exactly the same.  Although you may use any of
 the waveforms and modulators, the total burst length is
 limited by the buffer size.  For example, with one 16-bit DAC
 active there is room for 32684 samples using the maximum 64
 Kbyte buffer size, giving a total duration of 0.68 seconds at
 a sample rate of 48 kHz.  So any modulation period, such as a
 frequency sweep, will be limited to this.

 If you use PAIR or EACH YmPage Modes the total buffer is divided
 into 2 or 4 equal sections for presentation on successive
 bursts, thus further reducing the burst or modulation period.

 ■  DYNAMIC SEQUENTIAL:
 This is similar to the above, except that the buffer is
 updated after each presentation.  If you are creating bursts
 of Vwwhite noise, for example, each burst will be different.  If
 you are creating conventional tone bursts, the starting phase
 of each will be different unless NBReset on Burst is active...
 similar to a real free-running hardware signal generator
 connected to a separate burst generator.

 With PAIR or EACH Page Mode, the total buffer is available
 for each presentation, allowing longer bursts or modulation
 periods than Static Sequential mode.


 RTIME MODE:
 The output is always active.  If you give bursts, the time
 between them is controlled by parameters in the Burst menu;
 there is no influence due to processing or display.  This
 mode is capable of continuous outputs.


 ■  STATIC RTIME:
 Similar to Static Sequential mode except that the stimulus
 buffer is repeated continuously with no delays.  To create
 a continuous wave, the frequency must be set with the Freq
 MtStep Mode set to MnStepN.  That will force the frequency to
 values that allow an exact integer number of cycles to fit
 into the buffer.  This will limit frequency resolution to
 the reciprocal of the buffer duration, or about 2.9 Hz with
 a pB64 Kbyte buffer and a 48 kHz sample rate.

 The maximum burst duration is the same as for the Sequential
 modes, since the entire burst must still fit into the stimulus
 buffer.  Likewise, all bursts will be identical, since the
 buffer contents do not change while running.

 ■  DYNAMIC RTIME:
 By far the most powerful mode, this updates the contents of
 the stimulus buffer in the background to provide what is
 essentially an infinite buffer.  Continuous waves may be
 generated with a N0resolution of 0.000089 Hz at a 48 kHz sample
 rate, or even better at lower rates.  This is limited by the
 precision of the associated variables, not the buffer size.

 Bursts or modulation cycles are likewise limited only by the
 variable sizes, allowing over 24 hours per cycle at a 48 kHz
 sample rate.  Interactions between individual components and
 even individual modulators of a single component can be longer
 still:  If one modulation cycle is 4294967295 samples and
 another is one sample less, their combination will have a
 cycle of 1.84 * 10^19 samples or about 12 million years...
 and you can have up to 4 independent components from each DAC,
 each component with multiple independent modulation cycles.

 Continuous VNrandom noise can be created that takes over 6
 million years before the pattern repeats.  Long VxPlay files can
 be used as signal sources, up to the limit of available system
 memory.

 The DMDigOut system allows totally independent control over each
 bit.  You can have 8 different continuous patterns; they do
 not need to be synchronous in any way, and the individual
 pulse trains can have repeat cycles running to millions of
 years.


Is
 SPEED:

 On slower CPUs, use of the stimulus generator may reduce the
 maximum Xfsample rate possible from a given acquisition board,
 especially a high speed board.  The board driver may be
 limited internally to the maximum acquisition rate specified
 for its Analog-to-Digital Converter (GAADC), but that presumes
 that the CPU can keep up... which it may not be able to do
 along with stimulus generation, especially if multiple outputs
 are active.

 Use of Dynamic RrRTime mode is particularly taxing in this
 regard, so if you have a slower system you may prefer the
 other modes.  Within StDynamic mode, slower operation can
 result from additional computation time for extra component
 pages, modulators, or Ztsteeper noise bands.

 Conversely, faster systems may be able to use the stimulus
 Mfoversampling Factor control to get higher stimulus sample
 rates than the board's ADC allows for acquisition alone.

 In RTime mode, an additional speed loss may come from lack of
 DMA capability during stimulus generation.  RdDMA (Direct Memory
 Access) allows a board to acquire a sample and automatically
 transfer it to memory without software intervention.  It
 allows faster RTime sample rates with most CPUs except 286s.
 However, many laboratory-type boards only have a single DMA
 channel.  This is used for acquisition-only modes, but the
 slower interrupt-driven sampling mode, not DMA mode, must be
 used for RTime operation when STIM3A is active.

 Among sound cards, only those billed as "Full-Duplex" have the
 dual DMA channels needed for simultaneous acquisition and
 signal generation.  Older cards thus don't support STIM3A
 operation at all, and will result in an error message if
 you try to use them.

Id
 DEMO "DUMMY" BOARD:

 You can use the DEMO.ADC "dummy" acquisition board driver with
 the stimulus generator.  When the stimulus is on, certain
 input channels are connected to certain stimulus outputs, as
 follows:

   Input           Signal
    CH0             DAC 0
    CH1             DAC 1
    CH2 -  CH7      Normal DEMO internal signal
    CH8             DOUT bit 0
    CH9             DOUT bit 1
    CH10            DOUT bit 2
    CH11            DOUT bit 3
    CH12            DOUT bit 4
    CH13            DOUT bit 5
    CH14            DOUT bit 6
    CH15            DOUT bit 7

 The "signals" acquired in this way may then be used as though
 they were real-world signals acquired by a real board.  This
 allows testing of preliminary experimental designs, as well as
 the opportunity to become familiar with the spectra of certain
 complex signals.

 And, sessions which use the DEMO driver do not count toward
 the STIM3A I030-trial limit for unregistered Daqarta users.

 HOWEVER, there is one important difference between the STIM3A
 signals created this way and the normal internal DEMO signals:
 When you record these STIM3A signals with the DiDDisk option in
 Direct mode, you will not see any artifacts, even without the
 D!DDISK13A driver.  With the DEMO signals, on the other hand,
 there would be large discontinuities every 32 Kbytes where
 DDisk transfers occur.

 The reason is that the standard DOS disk handler shuts off
 interrupts during transfers, so no samples are generated or
 recorded until interrupts are restored following the disk
 transfer.  With STIM3A, everything is simply put "on hold" and
 resumes exactly where it left off with no discontinuity.  But
 the DEMO signals are derived from an internal timer that keeps
 running during disk transfers, so when sampling resumes it
 is at a later position in the waveform.

 The upshot of all this is that you should use DEMO alone to
 test the need for the DDISK13A driver, whereas you can use
 STIM3A to record a clean waveform for later use, even if you
 don't have DDISK13A installed.


p0
 CONFIGURATION PARAMETERS:

    p1Parameter Overview
    pAAttenuator Mode (Output dB)
    pBBuffer Size
        pbSamples vs. Memory Buffer Size
    Help pFFile Omit
    pRRandomize All Random Sources
    pSSetup Auto-Load
    pUUp Scroll Preference (Output dB)

p1
 PARAMETER OVERVIEW:

 This driver allows you to specify certain parameters on the
 STIM3A.GEN line, which must be located anywhere past the 4th
 line of the UfDQA.CFG file.  Each parameter is given as a letter
 and colon, followed immediately by a value.  Use one or more
 spaces to separate parameters.  For example:

    STIM3A.GEN  B:64  R:1  S:+MYSETUP.S3A

 The order of the parameters is not important.  None of these
 parameters is required; they are all optional.

pA
 A: ATTENUATOR MODE (Output dB):

 When STIM3A loads, it looks for an SB16 or ATN-SB16 module
 with attenuators it can control.  If it finds one, it sets
 the SnOutput dB control to work together with that attenuator,
 and locks the SB16 or ATN-SB16 controls to display-only.
 If not, it defaults to a 0 to -6 dB range, allowing any other
 attenuator to be used manually.

 You can still get 0.01 dB resolution with such a manual
 attenuator, though it's more cumbersome:  You need to set the
 manual attenuator to the next-higher output level it can
 reach, then set Output dB to make up the difference.

 If for some reason you want to use an SB16 or ATN-SB16 in
 this independent mode, change UfDQA.CFG to include:

    STIM3A.GEN  A:2

 Normally, when you start STIM3A or Mlload a new setup file, the
 Output dB controls are forced to 'Mute' regardless of the
 values stored in the setup.  This is intended to prevent an
 unexpected blast of sound.  However, if you don't need this
 safety measure you can use:

    STIM3A.GEN  A:1

 Then when you load a setup, either manually or via the startup
 pSS: parameter, the Output dB values will be as stored.  This is
 handy if you want to change to various setups with particular
 levels.



pB
 B: BUFFER SIZE:

 Longer stimulus memory buffers allow longer stimuli in
 RsSequential mode, or longer cycles in Static RrRTime mode.  The
 default buffer size is 16 Kbytes, which is all that is needed
 for StDynamic RTime mode.  To change the buffer size, change the
 invocation line in UfDQA.CFG to read:

    STIM3A.GEN  B:n

 where n is a number from 16 to 64 representing memory Buffer
 size in Kbytes.

 Alternatively, you may specify the buffer size using the same
 B:n notation on the INIT (first) line of DQA.CFG.  This is
 intended for use with boards like the Sound Blaster SB16/32/64
 that can use DMA for both input and output.  Since DMA
 accesses must never cross an absolute 64K memory boundary,
 Daqarta will take care of the alignment without wasting any
 memory.  It does this by juggling the locations of several
 program segments to get an optimum fit, but it must do this
 before any modules are loaded... thus, the INIT line at the
 start of the configuration.


 pbSAMPLES vs. MEMORY BUFFER SIZE:

 For Sequential modes or Static RTime mode, the maximum number
 of time samples (ie. a sample each from all active outputs)
 versus buffer size in Kbytes is shown in the following table.
 There are no limits in Dynamic RTime mode.

 Memory Buffer size:           16K     32K     64K

                             ----- Time samples ----

 One DAC, 8-bit:              16384   32768   65536
 One DAC, 16-bit:              8192   16384   32768

 Both DACs, 8-bit:             8192   16384   32768
 Both DACs, 16-bit:            4096    8192   16384

 Digital only:                16384   32768   65536

 8-bit DAC + DigOut:           8192   16384   32768
 16-bit DAC + DigOut:          5461   10922   21844

 2 x 8-bit DACs + DigOut:      5461   10922   21844
 2 x 16-bit DACs + DigOut:     3276    6552   13104


pF
 F: HELP FILE OMIT:

 This driver normally attempts to load this associated Help
 file on start-up, and exits with an error message if it can't
 find it.  Setting F:0 on the STIM3A Ufconfiguration line tells
 the driver not to look for the file.  You would probably only
 want to use this option if you are really short of DOS memory,
 since loading the Help file only increases memory use by a few
 hundred bytes for its separate link stack and directory.  (The
 file itself shares the text buffer of the Main Help file.)

 Note that ALL Help files, including main, can be omitted via
 an F:0 parameter on the INIT line (first line) of the DQA.CFG
 file.  If this is present, no individual module Help will be
 loaded.

pR
 R: RANDOMIZE ALL RANDOM SOURCES:

 By default, STIM3A starts the VNrandom generators with the same
 random seeds for each session.  That means that although
 within a session all values are random, the overall session
 can be repeated exactly.  If you use R:1 on the STIM3A.GEN
 Ufconfiguration line, the random generators will be
 started with seeds that differ each time, based upon the
 time, date, and various internal states.

 In many instances there is no need for this, since there will
 be session-to-session variations due to human interactions.
 For example, the time between turning on a noise source and
 starting some operation that uses it will differ between
 sessions, if you perform the operation manually (as opposed to
 using a K0Key Macro).  Since the random generator keeps running
 during this interval, it will typically be at a very
 unpredictable state by the time the operation starts.

 But if you have a standard test series which you run from a
 Mssetup file and Key Macros, there might be no variations
 between sessions.  If you wanted each session to be random,
 use the R:1 parameter.

 Another consideration is setups that use multiple random
 generators, where you want to be sure that they do not always
 start with the same relation to each other.

pS
 S: SETUP AUTO-LOAD:

 A setup file can be loaded automatically at the start of each
 session by means of the S: parameter on the STIM3A.GEN line of
 the UfDQA.CFG file.  This setup can be one that you have
 created via the MsSave Setup option, or from the Q0Quit prompt at
 the end of a session where the setup has changed, or it can
 be a setup that was created on another system.

 There are three different options for this parameter:

   S:+                  ;Loads the default SETUP.S3A file.

   S:+FILENAME.EXT      ;Loads FILENAME.EXT instead.

   S:FILENAME.EXT       ;Sets the default Load name/path only.

 This last option doesn't actually load anything, but it
 changes the default MlLoad Setup file name and path from '*.S3A'
 to whatever you want.  You would typically use this if you
 preferred to use an extension other than .S3A, or if you
 wanted to keep all your setup files in some other directory
 than the default directory that Daqarta resides in.

 Note that while you may load setups from any directory, any
 VaArb and/or VxPlay files included in the setup are assumed to
 reside in the default directory.

 When you auto-load a Setup file at start-up, the SoMaster output
 control is forced Off.  This is a safety feature to prevent
 unintended actions.  Just toggle it on normally whenever you
 want output.  If you really want immediate output on start-up,
 use the KIAuto-Initialization Key Macro to toggle Master on.

 This safety interlock is not present when you load a Setup
 file "manually" with the Load Setup options, since in that
 case the system is always in P0Pause mode after loading.
 If Master was active when you originally saved the Setup, then
 just unPause to start the output.

pU
 U: UP SCROLL PREFERENCE (Output dB):

 By default, the SnOutput dB controls operate like ordinary
 "volume" or "level" controls, where "up" always gives greater
 output.  Maximum output is at 0 GadB, and all other values
 are negative relative to that.  When you start at the default
 'Mute' (maximum attenuation) state, you scroll up to get more
 output.  Output dB then goes from maximum negative to less-
 negative values toward 0.

 Some users prefer "up" to actually increase the attenuation,
 as would be the case with some manual attenuators.  You can
 tell Daqarta to use that convention via the U:1 parameter:

    STIM3A.GEN    U:1

 With this option the maximum output is still 0 dB, but now
 you must scroll DOWN to get to there from the starting 'Mute'
 state.  Attenuation is shown in positive dB.

 This is simply a matter of personal preference.

 Note that for direct entry, you never need to include a minus
 sign... it will be ignored if you do, regardless of which
 option has been chosen.



SM TOP-LEVEL MENUS:

 There are 3 top-level menus.  The main menu comes up when you
 hit CTRL-G, and from there you can reach the Sync and Misc
 menus via the CTRL-Pg keys.

 Main Menu - SiIntroduction:
    SoMaster On / Off

    StStatic / Dynamic

    ScDAC 0 toggle
    SbBits
    SaSetup
    SnOutput dB

    SsSwap
    S0Dual 0
    S1Dual 1

    ScDAC 1 toggle
    SbBits
    SaSetup
    SnOutput dB

    SdDigOut toggle
    SxSetup

 YMSync Menu:
    YmPage Mode
    YySync
    YeMaxErr
    YtDisplay
    YvView
    YdDig Pg
    YpPulse

 MMMisc Menu:
    MtFreq Step Mode
    MtFreq Step Size
    MfFactor, Oversampling
    MsSave Setup
    MlLoad Setup


Si MAIN MENU - INTRODUCTION:

 Before Scactivating any of the stimulus outputs, you need
 to set them to your particular requirements.  You do this
 by entering a special Setup submenu for each output you
 intend to use:  DAC 0, DAC 1, or DigOut.  The appropriate
 submenu will pop up over the main Stimulus Generator menu.

 Each submenu has multiple pages.  For SaDAC 0 and DAC 1, there
 are four main pages each, labeled A through D, which control
 four different components of the stimulus.  You change pages
 via CTRL-PgUp or CTRL-PgDn from the DAC 0 or DAC 1 submenu.

 For SxDigOut there are typically 8 pages, labeled A0 through A7,
 for the 8 individual bits of the output port.  As above, you
 change pages with CTRL-PgUp or CTRL-PgDn.  However, you may
 elect to have four separate SETS of pages (A0-A7, B0-B7,
 C0-C7, and D0-D7 corresponding to the different Pg Mode
 settings) via the YdDig Pg control on the YMSync menu page.
 In that case, CTRL-ALT-Pg keys move between sets.

 NOTE:  The stimulus parameters can only be changed when the
 Stimulus Generator menu is active to rebuild the stimulus
 buffer.  If you go to the X0X-axis menu and double the
 Xfsample rate, for example, the same samples will come out of
 the buffer at twice the rate... doubling the stimulus wave
 frequency and halving its duration.  As soon as you return to
 the Stimulus Generator menu the signal will be updated to
 match the parameters you had previously set... in this case,
 creating twice as many samples to compensate for the doubled
 sample rate.  The rule is thus to set sample rate FIRST,
 then set the stimulus.

 Also note that during DiDDisk recording or signal A0averaging you
 will be prevented from changing the stimulus.  The cursor
 won't move to any output control that actually changes the
 signal.  You can bring up the DAC 0, DAC 1, and DigOut Setup
 submenus in order to review the settings, but the cursor will
 be blanked or will not move to certain items.  It will allow
 you to bring up any lower submenus as needed for review only.



So ■  Master On / Off:

 When Master is On, all selected stimulus outputs are active,
 at the effective Xfsample rate determined by the normal X-axis
 (acquisition) rate times the MfFactor setting.

 In Sequential mode, the trigger source is forced to TGStim,
 so each trace or acquisition run will start in sync with the
 stimulus start.

 This is the only trigger source available for Rssequential
 operation (and probably the only one that makes sense most of
 the time), but for RrRTime operation you can also select the
 TSInternal source to trigger on features of the input signal.
 This might be needed if the response you are observing is not
 highly correlated with the stimulus, such as an increase in
 "spontaneous" responses to a long stimulus tone.

 In StDynamic RTime mode the Stim trigger Nysync can be set to
 any repeating component of the signal, either main wave or
 modulator.

 If you set Master to On but there are no outputs selected,
 there is no change... no outputs are active.

 When Master is Off, all analog and digital stimulus outputs
 are off and the input trigger source reverts to Internal
 instead of Stim.  Trigger mode reverts to Auto.



St ■  Static / Dynamic Mode:

 Static signal generation means that the entire signal waveform
 is pre-computed and stored in a pBbuffer, and signal output
 consists of reading values from the buffer and sending them to
 the DACs.  This is very efficient if the signal is a tone
 burst that repeats exactly, or a continuous wave with a
 frequency such that an exact integer number of cycles can be
 stored in the buffer.

 Dynamic mode allows continuously-changing signals with
 arbitrary frequencies and unlimited durations.  The signal
 buffer is updated in the background such that it always keeps
 ahead of the values needed by the DACs.  Since it is not
 necessary to store the entire signal duration in the buffer
 ahead of time, this mode effectively removes the constraint of
 buffer size.  For example, a noise source generates a sequence
 of random values that takes millions of years to repeat.

 Static and Dynamic generation modes differ in regard to RrRTime
 and RsSequential acquisition modes.  In Sequential mode, either
 Static or Dynamic, the stimulus is turned off between traces
 or acquisition runs, so it is appropriate for tone bursts but
 not for continuous waves.

 In Static Sequential mode, the entire stimulus must fit into
 the buffer.  The stimulus output begins at the start of each
 acquisition pass or trace and continues to the end of the
 specified Npnumber of acquisition samples N or the end of the
 specified stimulus, whichever is greater.  Processing and
 display are then performed, and the cycle is repeated.  If a
 stimulus TgCycle time has been set via the TmTrigger control menu,
 the stimulus and data acquisition start will be delayed until
 the proper time for the start of the cycle.

 If the stimulus is divided into two alternating page pairs or
 four alternating pages according to the Page Mode, then all of
 these pages must fit into the buffer.

 In contrast, Dynamic Sequential mode recomputes the entire
 buffer for each trace.  Each alternating page or page pair may
 thus be as long as the entire buffer.  Furthermore, the
 stimulus may change between traces.  For example, suppose you
 set up a single tone burst.  In Static Sequential mode this
 would be the exact same burst on each presentation, whereas in
 Dynamic Sequential mode the tone starting phase would change
 between presentations to continue where it left off on the
 prior trace.

 Whenever any Sequential stimulus output is active, the
 TGTrigger Source is forced to Stim, making the start of the
 stimulus the effective trigger event.  (A special YpPulse
 option allows the same effect as the normal
 TPTrigger Source Pulse option, if you choose not to use
 the full DMDigital Output capabilities.)

 In Static RrRTime mode, the stimulus output just repeats
 continually.  If the Trigger Source is set to Stim, then the NpN
 samples displayed will be synchronized with the first sample
 of the stimulus.  (In RTime mode you can optionally set the
 trigger source to Intern.)  Continuous background waves may
 be generated by proper setup of the stimulus parameters, but
 the frequencies must be such that an integer number of cycles
 fits into the buffer.  The MnStepN frequency control option
 makes this easy to adjust, but the frequency resolution will
 be governed by the sample rate and buffer size, and will often
 be several Hz... rarely an integer number.  Since the buffer
 contents are static, noise-type outputs are "frozen" and
 repeat exactly, giving a "machine"-like quality.

 In Dynamic RTime mode, the stimulus samples are precomputed on
 a semi-continuous basis, such that they are always at least
 1024 samples ahead of the corresponding acquisition samples.
 So even though this mode allows signals of indefinite
 duration, it only requires a 16 Kbyte pBbuffer (22 Kbytes with
 DigOut).  You may to set continuous waves of any frequency
 down to the N0resolution of the system (typically 0.0001 Hz),
 and continuous noise has no apparent repeat pattern.

 In any mode, you can look at events that take place before
 or after the start of a stimulus cycle by setting the
 TdTrigger Delay to negative or positive values,
 respectively.


Sc ■  DAC 0 or DAC 1:

 Activates or disables the corresponding GDDAC channel output.
 The item will be highlighted when that channel is active.

 To activate any DAC output, at least one of its wave component
 Cxpages must be active or you will get an mAalert and warning:
    'Must have at least one active page per output.'


Sb ■  DAC 0 or DAC 1 Bits:

 The default here is the maximum resolution of the DAC, but you
 may reduce that to simulate operation on another system, or to
 experiment with special effects like ADdither.

 For a dramatic demonstration of dither, start with Bits at
 maximum and set up a Bxcontinuous StDynamic RTime Vssine wave of
 about N0440 Hz on page A with 75% ClLevel.  Next, set up a
 continuous VwWhite noise source on page B with 25% Level, and
 turn that Cxpage Off.  Listen to the output, and you should
 hear a clean sine wave.

 Now set Bits down to 2.  The waveform becomes a staircase of
 4 levels (counting 0), and you hear very strong harmonic
 distortion.  Check the spectrum, and you can see all the
 harmonics.  But toggle page B on and you again hear a lot of
 background hiss, but the sine wave is miraculously
 undistorted.  You can see from the spectrum that the
 distortion components have indeed gone away, not just been
 buried in noise.  Their energy has been redistributed from a
 series of large peaks, down into the lower background noise
 floor.

 You can improve upon this further by using noise with a
 different amplitude distribution, which concentrates more of
 its levels near zero.  This can be done with a VgGaussian
 source, but the most common distribution used in digital
 audio is triangular.  This not only does a good job, but is
 also easy to create.

 To create a triangular noise distribution, you simply add
 together two uniform sources.  Cut the page B Level down to
 12.5%, and set up an identical continuous White source on
 page C, also at 12.5%.  With both of these on, the average
 noise level is lower by 3 dB, but you still get rid of the
 distortion.

 You can verify that the distribution is triangular by using
 the Histogram (AHHist) option in the A3averager control menu.
 (Be sure to turn the sine wave off first.)


Sa ■  DAC 0 or DAC 1 Setup:

 Invokes the CMComponent Page submenu system for each DAC
 channel.  Each channel allows adjustment of up to four wave
 component pages, each page with controls for CxOn/Off,
 CwWaveform, CfFrequency, CmModulation (CbBurst, CaAM, CFFM,
 CpPhase, and CsSweep), ClLevel, and CoOffset.  Use
 CTRL-PgUp or CTRL-PgDn to move between pages, or ESCape to
 return to this Setup item.


Sn ■  DAC 0 or DAC 1 Output dB:

 The only label on this control is the tiny 'dB' to the right.
 This controls the overall level of the DAC output, in GadB, with
 a resolution of 0.01 dB.  Maximum output is 0.00 dB, and all
 other levels are negative by default.  However, you never need
 to enter a minus sign for direct entry.  Scrolling up gives
 greater output, (less-negative dB values).  You can change
 this default direction with the pUU:1 parameter.

 This control works by taking direct control of the SB16
 attenuator, if present, and making coordinated small changes
 to the effective ClLevel settings of each active component
 CMpage.

 The SB16 attenuator has steps of 1.5 or 2.0 dB (depending upon
 model).  This resolution is too coarse for some applications,
 but it does provide attenuation down to -84 or -120 dB (-90
 or -138 dB via ATN-SB16 with a separate lab-type ADC board).

 On the other hand, the individual page Level controls provide
 exceptionally fine resolution, but only at high levels.  For
 example, a setting of 99.88% is equivalent to -0.01 dB. The
 resolution of this system is considerably better than 0.001 dB
 down to settings of 50% (-6.02 dB).

 The problem is that reducing the Level reduces the effective
 number of bits.  At a setting of just under 50% the highest
 bit is never used, so a 16-bit DAC becomes effectively 15.
 Basically, a bit is lost for every 6 dB reduction obtained via
 Level instead of a true attenuator.  By -48 dB the loss would
 be 8 bits.  This causes increased quantization distortion
 since the wave is created with fewer, coarser steps.

 The STIM3A Output dB control solves both problems by combining
 the best features of each system:  The fine resolution of the
 Level system is used only to reach values between the steps of
 the SB16 true attenuator.  For example, to set an overall
 attenuation of -0.01 dB the SB16 is set to 0 dB and the
 effective Level is set to 99.88%.  As the attenuation is
 increased, the effective Level is reduced further... but only
 until the setting reaches the SB16 step size.  At that point,
 Level is returned to 100% and the next step of the SB16
 attenuator is set.  On a model with 2.00 dB steps, the
 effective Level never goes below 79.43% at any setting.

 All of this is done by the Output dB control transparently, so
 you can treat it like a simple attenuator with 0.01 dB
 resolution over the entire attenuation range.  Note, however,
 that this system depends upon the SB16 steps being exactly
 1.50 or 2.00 dB.  If they are a little bit bigger or smaller
 than specified, then the control response won't be smooth down
 to the 0.01 dB resolution of the Output dB control.  A setting
 change of 0.01 dB thus might not give a true attenuation
 change of that amount for values that fall near multiples of
 the SB16 step size.

 The changes that the Output dB control makes to the effective
 Levels are also done transparently, so you won't see any
 differences in the Level control settings.

 If you attempt to adjust Output dB below the most negative
 value supported by your SB16, it switches to 'Mute'.  In this
 state the SB16 attenuator is muted (better than -120 dB in all
 models) and the effective Level is set to minimum (0.003%,
 effectively -90 dB).  You can simply scroll up from there to
 get to the quietest active output setting.

 When STIM3A pSstarts up, or when a new Mlsetup is loaded, the
 Output dB control is set to 'Mute' by default.  This is
 intended as a safety feature, to prevent an unexpected blast
 of sound.  You can use the pAA:1 parameter in DQA.CFG to change
 this behavior so that Output dB jumps to the setup value upon
 loading.

 If you are using a separate non-SB16 attenuator, the Output dB
 control works independently over a range of 0 to -6 dB.  This
 allows you to get fine resolution even with a simple manual
 stand-alone attenuator, although it does require a more
 cumbersome 2-step adjustment process.

 Since STIM3A takes over the SB16 attenuators, the controls in
 the SB16 (or ATN-SB16) menu are locked out:  They show the
 current settings of the SB16 attenuators (only), but you can't
 change them there.  If you want independent controls, you can
 use the pAA:2 parameter to tell STIM3A to ignore the SB16 and
 provide only a separate 6 dB range.

 The overall performance of the Output dB control depends upon
 the exact SB16 model, and whether you use the Line or Spkr
 output.  (In general, you should probably use Line where
 possible.)  The table below is reproduced from the ATN-SB16
 Help system:


Ip ATTENUATOR PERFORMANCE (typical):

 Model:            CT1740          CT3600          CT4170
                    SB16          SB32 PnP        ViBRA 16X
 Output:         Line   Spkr     Line   Spkr     Line   Spkr

 Max Input, Vpp:  2.7   3.3       3.0   3.0       2.3   3.8

 Unity Gain GadB:  -18   -32       -18   -32       -12   -24

 Output Noise (broadband) at unity gain, RMS mV:
                0.18  0.27      0.12  0.18      0.25  0.50

 Frequency
 Response, kHz:
    -1 dB         60    12        29    12        90    75
    -3 dB        110    22        53    22      >140   125
    -6 dB       >140    35        90    35      >140  >140

 Left-Right Leakage, dB:
     1 kHz      >-73   -53      >-70   -54     >-73    -54
    20 kHz       -62   -49       -67   -58     >-73    -54
    40 kHz       -57   -50       -66   -63      -70    -56
    60 kHz       -55   -51       -66   -69      -69    -56
    80 kHz       -50   -52       -67  >-73      -71    -56
   100 kHz       -50   -53       -67  >-73     >-73    -58


 NOTES:

 ■  Leakage measured as Right output re: 1 Vpp Left input,
    with both Left and Right attenuators set to unity gain.
    With Right attenuator set to Off, leakage typically
    decreases by an additional 20 dB.

 ■  Standard 6-foot mini-plug to RCA paired cables were used
    for input and output connections.

 ■  Broadband noise includes high-frequency components from
    video and other system sources.  No attempt was made to
    shield the cards or try other ISA slots.

 ■  CT1740 thumbwheel set to maximum (fully DOWN) for all
    measurements.

 ■  Actual attenuation versus setting was very accurate for
    all models.


Ss ■  Swap:

 This reverses the effective output connections, such that
 the normal DAC 0 signal goes to the DAC 1 output, and the
 normal DAC 1 signal goes to the DAC 0 output.  This control
 and the following Dual controls are provided especially for
 psychoacoustic experiments using headphones.


S0 ■  Dual 0:

 When this is active, the DAC 0 signal goes to both outputs,
 and the DAC 1 signal is ignored.  This requires both DACs to
 be active; if you want to toggle between DAC 0 going to one or
 both outputs, set Dual 0 on and toggle DAC 1.

 If Dual 0 and both DACs are active, and you toggle DAC 0 off,
 the output toggles from both outputs getting the DAC 0 signal
 to only the DAC 1 output active with its own original signal.
 The Dual 0 control will retain its active status, even though
 there is no DAC 0 output, and when you toggle DAC 0 back on it
 will again go to both outputs.


S1 ■  Dual 1:

 When this is active, the DAC 1 signal goes to both outputs,
 and the DAC 0 signal is ignored.  Otherwise, it operates like
 the above Dual 0 control.


Sd ■  DigOut:

 Activates the 8 bit digital output stream.  To do this, at
 least one bit menu Dxpage must be active or you will get an
 mAalert and warning:
    'Must have at least one active page per output.'


Sx ■  DigOut Setup:

 Invokes the DMDigital Output Setup submenu system, with a
 separate menu page for each of 8 output bits.  Use CTRL-PgUp
 or CTRL-PgDn to move between bit pages, or ESCape to return to
 this Adjust item.


YM SYNC MENU:

Ym ■  Page Mode:

 This determines how the four wave component pages specified
 for each DAC channel will be deployed, and likewise enables
 multiple digital output sequences.

 ALL:
 All four CMwave components A, B, C, and D are summed to create a
 single stimulus for each DAC channel.  Only one 8-bit DMdigital
 output sequence is active.

 PAIR:
 Components A and B are summed, and components C and D are
 summed separately to create two stimuli for each DAC channel
 that are presented on alternate traces or NpN-sample acquisition
 passes.  Similarly, the digital outputs can alternate between
 two different 8-bit sequences if the YdDig Pg control is set to
 Ind.

 EACH:
 Each of the four wave components A, B, C, and D is used as a
 separate stimulus on four successive acquisition passes.  Four
 separate 8-bit digital output sequences are also available if
 Dig Pg is set to Ind.


Yy ■  Page Sync:

 If you have set YmPg Mode to PAIR or EACH, the stimulus will
 alternate between traces (NpN-sample acquisition passes).  If
 you only want to acquire the responses to one of these
 stimuli, use this Page Sync option to select the one desired.
 Each time you hit ENTER with the cursor at this option, the
 Sync selection will advance from page A through D and then to
 EVERY.

 The EVERY option will acquire all traces.  This might be hard
 on the eyes if the responses are very different, but it can be
 used to average responses from alternating traces.  One
 typical use for this is in recording a response that has two
 components, one of which mirrors the stimulus phase and
 polarity, and one which is independent of these and only
 responds to frequency and amplitude.  If you use PAIR mode and
 set the two stimuli to be tone bursts that are opposite in
 phase but otherwise identical in all respects, then any
 response that mirrors the stimulus will average to zero with
 the EVERY option, leaving only the other response.

 Note that in PAIR mode the A and B selections give identical
 results, since these pages are presented simultaneously.  The
 C and D selections behave the same way.

 In ALL Pg Mode, there is only one stimulus, so the Page Sync
 option is ignored, and the cursor will not move to this item.
 It will remain set to the same page, so if you return to PAIR
 or EACH mode it will be just as you left it.

 In StDynamic RTime mode, the Page Sync option only works for
 Burst sync on each page, not main wave or modulator sync.


Ye ■  MaxErr:

 In StDynamic RTime mode with TGStim triggering selected, the
 trace or NpN-sample acquisition pass begins at the start of the
 selected NySync source waveform.  This is equivalent to a rising
 slope trigger, with the effective trigger level set to zero.

 However, since Dynamic RTime mode allows completely arbitrary
 waveform frequencies that are unrelated to the sample rate,
 each cycle of the waveform typically does not start with a
 sample actually falling on the zero-crossing.  For example,
 consider a 101 Hz sine wave at a 10 kHz sample rate.  The
 first sample starts at 0, and each sample after that is
 advanced by:

  101 cycles/sec * 360 degrees/cycle
  ----------------------------------  =  3.636 degrees/sample
        10000 samples/sec

 So after 99 samples we are at 359.964 degrees, and the next
 sample is at 363.600 degrees... no sample actually landed on
 zero.  With a conventional external signal and TSIntern trigger
 mode, if we were waiting for a trigger the 363.600 sample
 (3.600 degrees relative to zero) would fulfill the trigger
 requirements.  So that trace would start slightly out of
 alignment compared to a trace that started exactly on zero,
 and the result as this process continued would be a jittery
 trace.

 On the other hand, if we waited to trigger only on cycles
 where the initial sample fell exactly on zero, we would only
 get a trigger every 101 cycles, which may be too infrequent
 for the desired use.  And of course the mismatch could be
 much worse:  Consider that with the signal at 100.001 Hz,
 the exact zero-crossings would only be every 100001 samples!

 So the compromise is to select a Maximum Error (MaxErr) value
 that gives a reasonable trigger rate, but not too much jitter.
 This value sets an upper limit on what the Dynamic RTime Stim
 trigger will accept as a zero-crossing.  The default is about
 1 degree, but you may wish to change that to suit your needs.

 Note that this control only applies to Dynamic RTime Stim
 trigger mode.  It is ignored in all other modes.


Yt ■  Display:

 This controls the image of the stimulus that appears
 superimposed over the 0wtrace area when you are in F0waveform
 display mode.  There is a small "trace" for each Scactive DAC
 channel and for each of the 8 bits of the digital output if
 SdDigOut is active.

 Repeated ENTERs on this item change it between On, Off, and
 Expand.  The Expand mode is intended for use when the MfFactor
 is greater than one.  In that case, Expand shows all the
 output samples, whereas On only shows those that would
 correspond to each input sample.  You would use On to compare
 the response features and timing to features of the stimulus,
 whereas Expand would allow you a better view of the stimulus
 when adjusting its features relative to each other.

 Since the stimulus may often be longer than the number of
 acquisition Npsamples N, especially with the Factor and
 Expand active, you can use Tdtrigger delay to view the later
 portions.

 The Display traces are shown in CAALT trace color, which you can
 change from the main CMcolor control menu invoked by CTRL-C.


Yv ■  View:

 When you are adjusting the individual components of PAIR or
 EACH modes using the main page Adjust options, the component
 being adjusted will always be shown if the Stimulus YtDisplay is
 active.  When you are NOT adjusting anything, the View option
 selects which page the Display will show.


Yd ■  Dig Pg:

 When YmPg Mode is set to PAIR or EACH there are two or four
 complete sets of 8 digital bit pages that must be configured
 for DigOut operation.  However, you may want each set to be
 the same, or nearly the same.  Setting Dig Pg to "Lock A"
 copies the settings from pages A0 through A7 to the other page
 sets, and when you go to the DigOut Adjust submenus you will
 find only pages A0-A7 available... if you use the CTRL-ALT-Pg
 keys you will get an mAalert and the message
    'Dig Out locked to A.'
 Any changes you make to an A bit page will also set the
 corresponding B, C, and D bit pages identically.

 This option would typically be used when you want to alternate
 between different DAC stimuli, and also provide a digital
 output pulse at the start of each trace or NpN-sample acqusition
 pass to synchronize some external device like an oscilloscope.

 When you set Dig Pg to "Ind", then each A-D set of bit pages
 may be adjusted independently, depending on Pg Mode.  If you
 want MOST of the bit outputs to be the same across sets, use
 "Lock A" for the initial configuration, and then switch to
 "Ind" to make any additional changes.


Yp ■  Pulse:

 This provides a simple digital pulse output as an alternative
 to the full digital output system.  If SdDigOut is active, or if
 RrRTime is active, this option is ignored.  This is exactly the
 same TPPulse source option that may be selected from the main
 TmTrigger menu when the Stimulus Generator is inactive in
 RsSequential mode, but here it may be used in conjunction with
 either or both of the DAC outputs.

 Unlike the complete DigOut system, no pBstimulus buffer memory
 is used by Pulse.  Whereas DigOut updates the digital output
 port once per sample from the stimulus buffer, Pulse only
 updates the output line when there is a change... at the start
 and end of the DAC stimulus portion of the trace or
 acquisition pass.  For critical work on systems with poor
 isolation of the digital output strobe line from the signal
 input, the Pulse mode will insure that only a single glitch
 contaminates the input, at a time before any response to the
 stimulus has taken place.

  ┌────────────────────────────────────────────────────────┐
  │ TIP:                                                   │
  │ One difference between this Pulse option and that      │
  │ obtained without the Stimulus Generator is the         │
  │ duration of the pulse:  The Pulse without the Stimulus │
  │ Generator lasts as long as the data run, while this    │
  │ Pulse lasts only as long as the stimulus.  Thus, if    │
  │ you are using this Pulse specifically to avoid the     │
  │ above-mentioned strobe glitches, you must insure that  │
  │ the end of the stimulus does not happen during a       │
  │ desired response time.                                 │
  │                                                        │
  │ The simplest way to do this is usually to make the     │
  │ stimulus longer than the Npnumber of data points N       │
  │ acquired in the run.  If your desired stimulus is a    │
  │ short tone burst, for example you must pad the end     │
  │ with dead time using the Dwell control.                │
  └────────────────────────────────────────────────────────┘

 When Pulse is active, the main TmTrigger menu will show Source
 TPPulse instead of TGStim, and the T+Slope options will be present.
 As with non-stimulus operation, you may select the polarity of
 the pulse via the Slope controls, or have it alternate
 polarities on alternating traces or acquisition passes.

 If the stimulus generator YmPg Mode is set to PAIR, setting
 the Pulse SLOPE to Alt will make the positive pulse coincide
 with the A+B trace, and the negative with C+D.  In EACH mode,
 there will be positive pulses on the A and C traces and
 negative on the B and D trace.



MM MISC MENU:

Mt ■  Frequency Step Mode and Step Size:

 This is a pair of controls to set the mode and resolution of
 N0Frequency adjustments.  The upper control steps the mode
 through Direct, StepHz, StepN, Octave, and Music modes.  For
 each mode, the associated step size can be adjusted by the
 lower control.  The mode control also appears just below each
 main Frequency control in other menus; changing the mode in
 one location changes it in all others as well.  The current
 mode applies not only to main wave frequencies, but also to
 modulator frequencies.  The mode only affects a frequency
 being changed; after the change, the set frequency remains
 even if the mode is changed.


 ■■  Direct Mode:

 In Direct mode, you can always enter any frequency you wish
 by direct entry; the value of the step size here only applies
 if you scroll the item with the normal up an down arrows.
 Note that in Direct mode the step size is applied to whatever
 value is current; there is no quantization as in StepHz or
 StepN modes.

 As with all normal Daqarta 0cscrolled values, you can use
 SHIFT-Up/Dn to get a bigger step size, which in this case will
 be a multiple of the step size selected here.  The default
 multiple is 50, but you can change that via the kfFixed cursor
 step control in the main kmKey Control menu (CTRL-K).  Note that
 the step multiplier affects cursor operations throughout
 Daqarta, however, so use some care if you change it.

 For Direct mode as well as StepHz mode, you may also use
 ALT-Up/Dn to change a frequency by the smallest possible
 amount, independent of the step size set here.


Mz
 ■■  StepHz Mode:

 StepHz mode is similar to Direct mode, except that values are
 quantized to the given step size.  If that step size is 1.0000
 Hz, then any frequency value that is changed will be forced to
 a multiple of 1 Hz (within the intrinsic N0resolution limits of
 STIM3A).  This will apply whether the change is by direct
 keyboard entry or by scrolling:  If the initial frequency
 value is 500.123 Hz, one scroll step up will move to 501 Hz,
 and one step down will move to 500 Hz.  If you directly enter
 503.4567, it will be quantized down to 503 Hz.


Mn
 ■■  StepN Mode:

 StepN mode forces frequencies to take on values related to the
 FFT spectral line spacing.  If the step size is set to 1.0000
 (default), then changes to any frequency will cause it to fall
 exactly on a spectral line, assuming the FFT size is N1024.
 The StepN step size value always assumes that the number of
 samples is 1024, even if you are only using 512 or 256.
 (That way it doesn't jump around when you toggle the N-key.)
 You just have to remember to set StepN to multiples of 2
 for N = 512 and to multiples of 4 for N = 256, if you only
 want waves that land exactly on spectral lines.

 ┌─────────────────────────────────────────────────────────┐
 │  The spectral line spacing is equal to the Xfsample rate  │
 │  divided by the Npnumber of samples N in the FFT data     │
 │  run.  Example:  For N = 1024 samples at a 20 kHz       │
 │  sample rate, it would be 20000 / 1024 = 19.53 Hz.      │
 └─────────────────────────────────────────────────────────┘

 However, you CAN set StepN to get waves that land between
 the lines, with a resolution of 1/64 of a line at N1024.  This
 is equivalent to 1/128 line at N 512 or 1/256 line at N 256.

 The minimum StepN value is limited by the available pBbuffer
 samples to 1024 / BufferSamples.  The equivalent frequency
 step for this value is SampleRate / BufferSamples.

 The ability to place frequency components exactly on spectral
 lines is a very powerful tool, because it can eliminate the
 need for windowing:  There are no tfspectral leakage "skirts"
 whatsoever when viewing these frequencies.  And if a
 fundamental frequency falls exactly on a line, then all
 harmonics will do so as well.  What's more, the
 CIintermodulation distortion products generated by two primary
 tones will also fall on spectral lines.  This can greatly
 increase the ability to resolve low-level products that would
 otherwise be buried in leakage skirts, even when reduced by
 windowing.

 The other powerful advantage of StepN is that it makes it
 simple to use StStatic RTime to generate continuous waves.
 When a frequency falls exactly on a spectral line, that means
 that an exact integer number of cycles fit into each N samples
 acquired.  That's exactly what's needed to insure that there
 are no discontinuities when the buffer playback wraps from the
 last to the first sample to make a continuous wave.

 Although the use of Dynamic RTime allows setting any frequency
 without the need for this StepN trick, you may nevertheless
 still need Static RTime to allow faster sample rates (or even
 Mfoversampling), epecially on slower CPUs.


M8
 ■■  Octave Mode:

 It is often useful to work with octaves rather than linear
 frequencies.  The term "octave" derives from music theory,
 where a step of 8 "whole notes" (white keys on a piano), say
 from one C to the next higher C, represents a doubling of
 frequency.  This is due to the exponential nature of the human
 auditory system, where a change from 500 to 600 Hz, for
 example, sounds the same "size" as a change from 5000 to 6000
 Hz.

 Many physical systems have a response proportional to
 frequency or a power of frequency; a filter whose response
 falls proportional to 1/f will have its output level halved
 (-6 dB) for each doubling (octave) of frequency.  This
 accounts for the common 6 dB/octave response spec of simple
 filters.

 The Octave mode thus allows frequency changes to be made in
 this ratio fashion, expressed in octaves and fractions
 thereof.  If the current frequency is 500 Hz and the Octave
 step size is set to 1.0000 (default), then scrolling up one
 step will give 1000 Hz, or scrolling down will give 250 Hz.
 If the step had instead been set to 0.5000 octave, the
 resulting frequencies would have been 707.107 and 353.553 Hz.

mO
  ┌───────────────────────────────────────────────────────┐
  │                                                       │
  │ RATIOS AND OCTAVES:                                   │
  │ To determine the number of octaves represented by a   │
  │ given ratio, take the base-2 logarithm of that ratio. │
  │ Since your pocket calculator probably only has        │
  │ base-10 (common log) and base-e (natural log or ln),  │
  │ note that:                                            │
  │                                                       │
  │                   log(X)         ln(X)                │
  │     log2(X)  =   --------   =   -------               │
  │                   log(2)         ln(2)                │
  │                                                       │
  │ Conversely, to go from an octave value to a ratio,    │
  │ just raise 2 to that power.                           │
  │                                                       │
  └───────────────────────────────────────────────────────┘

 Octave mode allows direct entry of any arbitrary value; no
 quantization is applied.  Only during scrolling is the octave
 step applied, and the result is always relative to the
 original value.


Mm
 ■■  Music Mode:

 Use Music mode to produce tones that fall on exact musical
 mNnote frequencies, whether you use scrolling or direct entry.
 Equal note spacing is assumed here, with the default being
 the standard "equal tempered" system used in most Western
 music.  This system has 12 twelfth-octave steps per octave,
 each step being 2^(1/12) times the one below it, an increase
 of about six percent (2^1/12 = 1.05946).  The standard
 reference frequency is 440.000 Hz at the A above middle C on
 a piano, sometimes known as "concert A".

 The step size for Music mode is given in "cents", or percent
 of one twelfth-octave step.  The default is 100.00 cents to
 get normal equal tempered tuning.  Most listeners require a
 change of at least 2 cents (about 0.1%) in order to detect a
 difference between two tones under ideal conditions.


Mo
 ■■  Organ Mode:

 This is a special mode that you enter from Octave or Music
 mode.  Begin as though you were going to change the frequency
 normally (hit ENTER), but instead of hitting the up or down
 arrow keys, hit ALT-up or -down.  The mode indicator will
 change to Organ, but there will be no other immediate changes.

 Now the computer keyboard is used like an organ keyboard,
 allowing you to quickly change frequencies just by hitting
 different keys.  The layout is such that the C-key is middle
 C, and the E-key is E an octave above.  "Concert A" (440 Hz)
 is the comma key, while the Z-key is 220 Hz and the Y-key is
 880 Hz.  Think of this as a split keyboard:

     ┌────────────────────────────────────────────┐
     │                                            │
     │   2 3   5 6 7   9 0   =       Black Keys   │
     │  Q W E R T Y U I O P [ ]      White Keys   │
     │                                            │
     │   A S   F G   J K L   '       Black Keys   │
     │    Z X C V B N M , . /        White Keys   │
     │                                            │
     └────────────────────────────────────────────┘

 SHIFT with any key raises the frequency an octave, and ALT
 lowers it an octave.  If you also hit CTRL, the change is
 two octaves.  To exit this mode, hit ENTER or ESC and the
 most recent frequency will be retained.

 Although it is possible to play this Organ like a musical
 instrument, this is really more appropriate for instrument
 tuning or equipment calibration.  There is no "keying"
 function, merely a change in frequency of an ongoing tone.
 The tone doesn't start when you press a key, and doesn't stop
 when you lift it.  If you set up tone bursts, they will repeat
 as ususal whether you press a key or not... they keys only
 change the tone frequency.

 Note that this mode assumes that the Music step size is 100
 Cents.  With another size, the 440 Hz reference used here
 (comma key) will be the nearest quantized step size, and all
 the keys will be crowded or stretched depending on the step
 size.

 If invoked during Octave entry, this mode behaves differently.
 There the reference frequency (comma key) is whatever
 frequency was set before ALT-Up/Dn was hit.  To use similarly
 to Music Organ mode, set the Octave step size to 0.0833333
 (1/12).  This allows equal-tempered tuning with an arbitrary
 reference, equivalent to shifting the keyboard (musically) to
 the right or left.  Setting a larger or smaller step will
 squeeze or stretch the keyboard, as for Music Organ.

 If you want to start with a particular exact note reference,
 first select normal Music, set the note, then go to Octave
 Organ.  Or you may want to start with an exact note from
 Music, then detune it slightly by going to Direct, then go to
 Octave Organ.


Mf ■  Oversampling Factor:

 Allows the stimulus sample rate to exceed the acquisition
 Xfsample rate.  This is important when the stimulus must have
 good time resolution, but where the response to the stimulus
 is much slower.

  ┌────────────────────────────────────────────────────────┐
  │                                                        │
  │ The Factor option is only available on boards that     │
  │ support it.  This currently excludes sound cards,      │
  │ which require the ADC and DAC to run at the same       │
  │ rate.  Future drivers may nonetheless support this by  │
  │ running both at the higher rate, then reducing the     │
  │ effective ADC rate in software by a process known as   │
  │ decimation or sample rate conversion.                  │
  │                                                        │
  │ At present, only boards that can operate via an        │
  │ intrrupt on each sample can use Factor.  This includes │
  │ all lab-type boards, plus the LPTX and DEMO drivers.   │
  │                                                        │
  └────────────────────────────────────────────────────────┘

 A typical application is with auditory evoked responses using
 high frequency tone bursts as stimuli.  If the subject is a
 dog or rodent, for example, you may want to give stimulus tone
 frequencies that are well over 20 kHz, which will require
 running the GDDAC sample rate at well over 40 kHz to get
 decent sine waves without external filtering.  You may also be
 interested in "late" responses that are observed several tens
 of milliseconds after the stimulus onset.

 Suppose you want to deliver 30 kHz tones, so you set the
 sample rate to 80 kHz.  The F0waveform mode display will show
 the first 6.4 msec of the response with the number of
 acquisition Npsamples N = 512, or the first 12.8 msec with N =
 1024.  You could use Tdtrigger delay to observe response
 peaks later than this, but then you would not see the earlier
 responses.  Since the response contains only low frequency
 components mostly below 1 kHz, you could actually acquire the
 data at a much lower rate... say 40 kHz, 20 kHz, or even less,
 if the stimulus sample rate could be kept high.

 The Factor setting specifies the number of stimulus output
 samples per acquisition input sample, or "GOoversampling"
 factor.  In the above example, you could set the acquisition
 sample rate to 20 kHz using the normal X-axis menu item, then
 set the Factor to 4 to get a stimulus sample rate of 80 kHz.
 Depending on the board used, the acquisition will actually
 proceed at the higher rate, also producing a stimulus output
 on each active channel for every input sample.  The driver
 would then discard 3 out of every 4 input samples.

 There are, of course, limits to this.  Since most boards must
 actually acquire samples at the higher rate, that rate is
 limited to the board's maximum acquisition rate.  If the
 oversampling Factor times the normal acquisition Xfsample rate
 exceeds the board limit, Daqarta will retain the factor as
 set, but reduce the acquisition rate to insure that the true
 sample rate remains within limits.  This will be obvious since
 the X-axis will change.

 However, some board drivers (DAS8X, DAS8JR, and DAS16X, for
 example) allow "hypersampling", where the stimulus sample rate
 may actually exceed the limits of the ADC.  This is possible
 since DACs and especially digital outputs are typically much
 faster than the ADCs used on the boards.

 In either case, the amount of oversampling you can use may be
 limited by the speed of your system.  If you try to increase
 the Factor too much at any sample rate, you may get an mAalert
 and an error message:
    'Sample rate overrun!'
 If RrRTime mode is active, it will be switched back to
 RsSequential.  In Sequential mode, however, you must take
 action to reduce either the Factor or the X-axis sample rate.
 The above warning will be repeated after changing either of
 those, if needed.

 Although the Factor multiplies the sample frequency, in
 reality this entails dividing the count of a GPpacer timer by
 the Factor.  Since the actual count supplied to the timer chip
 must be an integer, it is not always possible to apply the
 Factor without affecting the acquisition rate.

 For example, if the board master clock is 10 MHz and the
 acquisition sample rate is 20 kHz, then the pacer counter
 divides 10 MHz by 500 when the Factor is 1.  Setting a Factor
 of 3 would require dividing by 500 / 3 = 166.667, which will
 be rounded to 167 to give an oversampling rate of 59880.24 Hz.
 The acquisition sample period would be 3 * 167 or 501 counts,
 giving a new acquisition rate of 19960.08 Hz instead of 20
 kHz.

 Daqarta will always report the actual acquisition values for
 Xpsample period and frequency in the X0X-axis control menu, and
 will adjust the X-axis as needed, so you might notice a slight
 shift when you change the Factor.  Upon returning to a Factor
 of 1, there will typically be no readjustment of the
 acquisition rate (or the X-axis) back to the initial values,
 since the required pacer count will always be an integer.  In
 the above example, the acquisition sample rate would remain at
 19960.08 Hz.

 When you change the oversampling Factor, the values set in
 the CMDAC wave component and DMDigital Output menu pages do not
 change.  Tones will have the same frequencies (since the Freq
 settings are unchanged), but since duration parameters are
 stored internally in units of output samples, not time, all
 actual durations will change.  The correct duration times
 will always be reported when the BuSmpls/Sec control is in the
 Sec mode.

 So if you increase the Factor from 1 to 2, for example, each
 tone burst will be half as long and have rise/fall durations
 that are half as long as well.  Similarly, all Digital Output
 timing will be twice as fast.  The rule here is thus that you
 should determine the Factor that you need and set it FIRST,
 then set up your particular stimuli.

 Although the N0Freq settings themselves don't change when Factor
 is used, the maximum values are increased proportionally.  The
 limit is always half of the actual DAC output sample rate, so
 with a Factor of 2 (for example) you can set Freq as high as
 the ADC sample rate.

 However, as noted previously the Freq setting is not changed
 when you change Factor.  That means that if you raise the
 Freq setting manually when Factor is active, and then reduce
 Factor, it is possible to get an erroneous Freq value.  For
 example, if the sample rate is 20 kHz you are normally limited
 to Freq values less than 10 kHz (the tANyquist limit).  If you
 set Factor = 2, then you may set Freq values up to 20 kHz
 (half of the new effective DAC sample rate).  Suppose you set
 Freq to 12 kHz, then set Factor back down to 1.  The Freq
 setting is then 2 kHz above the limit, so the actual output
 will be an "alias" tone equal to the difference frequency of
 2 kHz.

mD
  ┌─────────────────────────────────────────────────────┐
  │                                                     │
  │ DDisk and Factor:                                   │
  │ When running in StDynamic RTime mode, only Factor     │
  │ values that divide evenly into 1024 (1, 2, 4, 8,    │
  │ and other powers of 2) will allow the DiDDisk option. │
  │ At other settings DDisk will be shown disabled.     │
  │                                                     │
  └─────────────────────────────────────────────────────┘


Ms ■  Save Setup:

 Since there are a LOT of controls in STIM3A, you may want to
 save all the settings to a file so you can return to the same
 setup by Mlloading the file in another session, or even later in
 the same session. Just toggle this control and you will be
 prompted for a file name for the setup.  The setup file saves
 only information about the configuration of STIM3A, not the
 main Daqarta program.  In particular, it does not save the
 state of the RrRTime option or the current sample rate.

 STIM3A setup files use a default file extension of .S3A,
 though you can use another extension if you prefer.  However,
 sticking with .S3A makes it easy to see what setups you have
 already saved:  Just hit ENTER at the default '*.S3A' file
 prompt, and you will see all the files with that extension,
 without having to edit the prompt string.  The pSS: parameter
 on the STIM3A.GEN line in the UfDQA.CFG file will allow you
 to change the default file extension.

 Each setup file takes about 4500 bytes.

 Note that in addition to this manual Save, you will also be
 prompted at Q0Quit time to save the setup if there have been
 any changes.  However, this prompt will not appear if you have
 only made changes to the setups of DAC or DigOut outputs that
 were not active.


Ml ■  Load Setup:

 You can activate this at any time to change the setup to one
 you have previously Mssaved.  The default file name is '*.S3A',
 so if you just hit ENTER at the filename prompt, you will see
 all the setups you can choose from in the current directory.

 You can change the default file name using the pSS: parameter on
 the STIM3A.GEN line in the UfDQA.CFG file.  You can also use
 this with a '+' notation to load a default file at start-up.

 You may choose to load setups from any directory, but note
 that any VaArb and/or VxPlay files included in the setup are
 assumed to reside in the current directory.

 A setup includes the names of any Arb and Play files it uses,
 and when you load the setup, those files are loaded as well.
 But if those files are no longer present or have errors, the
 load process will report this and prompt you for confirmation.
 You can't ESC from the load at this point, since things would
 be left with an unstable partial setup.  You just have to hit
 a key to confirm the error, and when the setup is done
 loading, any problem files will be missing.  If any had been
 selected to be active on any page of the setup, that page will
 have VsSine selected instead.

 Note that when you are loading Arb/Play files "manually" from
 their respective menus, you can specify an arbitrary path.
 However, only the file name itself is saved in a setup file,
 and the directory is always assumed to be the current
 directory that holds Daqarta.

 The moral of this story is to make sure you don't delete,
 move, or rename any Arb or Play files that you are using for
 a setup.  If you want to run the same setup on another system,
 you must make sure you copy all these files, and keep them
 in the Daqarta directory.

 Another possible source of the above errors is if less of the
 system memory is free.  Arb files use low DOS memory, so if
 you subsequently load TSRs or other resident software and try
 to run Daqarta again, there may not be enough room for all the
 Arb files.  Similarly, Play files use extended (XMS) memory,
 so if you install a RAM disk, or move everything to a
 different system with less total RAM (or no HIMEM.SYS loaded),
 there may not be room for your Play files.

 Since the setup file only saves STIM3A settings, and not the
 state of the main Daqarta RrRTime option, you may need to toggle
 that manually to get the desired overall setup.  Also, you may
 have to adjust the main X0sample rate if the setup was stored
 with a different rate than is currently in use.

 After loading the setup, the system will be P0Paused.  Just hit
 the P-key to unPause, and output will begin... assuming that
 you saved the setup originally with the desired outputs
 active, including the SoMaster output.

 Note that this is different from auto-loading the same setup
 via the pSS:+ parameter.  In that case, the Master output
 control is forced off as a safety feature, to prevent
 immediate output at start-up.  If that's what you really
 want, you will need to use the KIAuto-Initialization Key Macro
 to toggle Master on.


CM
 DAC COMPONENT PAGE MENU:

    CxPage On / Off
    CwWave
    CfFreq

  CmModulation:
        CPPage Modulation
    CbBurst/Continuous
    CaAM
    CFFM
    CpPhase / Slope / Width
    CsSweep

    ClLevel
        CAAttenuation vs Level Table
    CoOffset
        CCCombining Wave Components
        CIIntermodulation Distortion


Cx ■  Component Page On / Off:

 This determines whether the wave component page (A, B, C, D)
 will be present in the output when the Scindicated DAC channel
 is active.  You may have any or all of the components active
 at once.  All active components will be added together to
 build the actual stimulus output for that channel if YmPg Mode
 is set to ALL, while in PAIR mode A and B will be added to
 form one stimulus, with C and D added to form the alternating
 stimulus.  In EACH mode the individual page components are
 presented sequentially.

 For any active DAC output, you must always have at least one
 active page or you will get an mAalert and warning:
    'Must have at least one active page per output.'



Cw ■  Waveform Type:

 The Wave control shows the current waveform type.  If you
 select this control, a submenu pops up showing all the Wave
 options, some of which have their own submenus for additional
 related controls.

  Wave:
    VsSine
    VtTri
    VrRamp (or Staircase)
    VqSquare
    VpPulse

    VaArb
    VxPlay

  VNNoise:
    VwWhite
    VgGauss
    VkPink
    VbBand


Vs Sine Wave:

 Standard sinusoidal waveform.  There is no separate submenu.
 Use the CfFreq menu to control the Npphase if you want both sine
 and cosine waves.


Vt Triangle Wave:

 Standard triangular waveform, with no submenu.  Sometimes
 called a "sawtooth", but that makes it easy to confuse with
 VrRamp waves.  The normal Triangle wave is bipolar, running
 between positive and negative full-scale values.  If you need
 a positive unipolar wave, just set the ClLevel to 50% and CoOffset
 to 50%.  For a negative wave, set Offset to -50%.


Vr Ramp Wave:

 This has its own submenu.  As noted for the Vttriangle, this is
 a bipolar wave, but it can be converted to all positive or
 negative by setting ClLevel to 50% and CoOffset to +50% or -50%,
 respectively.

    RrRise
    RsStairs
    RmMod


Rr ■  Ramp Rise %:

 This controls the percentage of the cycle that the wave spends
 rising; the remainder is falling.  If Rise is set to 50%, then
 the wave is a triangle.


Rs ■  Ramp Stairs:

 When this is set to a non-zero value, the simple continuous
 ramp is converted to a staircase with the specified number
 of steps, plus a baseline or 0th step, for each slope.

 For a 16-bit system, there are a total of 65535 steps
 possible.  A 12-bit system only allows 4095 distinct steps,
 and an 8-bit allows 255, but this control does not change;
 if you set more steps than the DAC supports you will simply
 get a "smooth" ramp, as far as that DAC can produce.


Rm ■  Ramp Mod:

 This toggles the CpPhase Modulation option to become Slope
 Modulation.  With Phase Modulation the waveform simply slides
 back and forth, whereas Slope Modulation effectively modulates
 the RrRise value.  If you set Rise to 50% you get a triangle
 wave, and with Slope Modulation this tilts to the right and
 left.  At 100% modulation, the wave smoothly changes between
 an effective Rise of 0% and 100%.  This effect is easier to
 see at lower frequencies, where there are only a few cycles on
 the trace.


Vq Square Wave:

 Standard bipolar square wave.  Use the ClLevel and CoOffset
 controls to make it unipolar.  This wave has a fixed 50% duty
 cycle;  use the Pulse wave to create other duty cycles
 (rectangular waves).


Vp Pulse Wave:

 Has its own submenu to allow creation of monophasic or
 biphasic pulses with adjustable levels.  The first pulse is
 called A and the second B.  The B pulse always starts
 immediately after the A pulse ends.

 Note that although this is usually by far the most convenient
 method for generating and controlling pulses, you may also
 use the DMDigOut system if you have a lab-type board.  Getting
 controllable Dbbiphasic pulses is more difficult, but sometimes
 that is the most appropriate approach.

    PAA Width
    PBB Width
    PaA Lvl %
    PbB Lvl %
    P00 Lvl %
    PMWidth Mode
    PmMod Type


PA ■  Pulse A Width:

 Depending on the PMWidth Mode setting, this width can be given
 in percent, degrees, samples, or time.  If A Width is set to
 0 then the B pulse is the only pulse, and vice-versa.


PB ■  Pulse B Width:

 Similar to A Width.  However, since it is often desired to
 have the two widths of a biphasic pulse track each other, the
 Pulse B Width control has a special Track option:  When this
 is active, any changes made to the A Width will automatically
 be made to the B Width, which will show only 'Track'.

 To set the Track option, begin by hitting ENTER at the item as
 though you were going to adjust it normally, then ALT-Up or
 ALT-Dn will activate Track mode.

 To exit Track mode, simply enter any B Width value normally.

 If you want to create a monophasic pulse, you would typically
 set B Width to 0.  This gives a rectangular wave with variable
 duty cycle, level, and offset.


Pa ■  Pulse A Level %:

 Sets the level of Pulse A.  The default is +100%, with B Level
 at -100% for a biphasic pulse that starts positive.  If you
 want a biphasic pulse that starts negative, just reverse these
 values.

 If you set A Level to 0 (or to the 0 Level value) you will get
 a delayed Pulse B.  Use A Width to adjust the delay time.

 There is nothing to prevent you from setting both A Level and
 B Level to the same polarity.  There is probably no reason to
 set identical levels, since you would simply get one longer
 pulse that required two different Width adjustments.  But you
 might want to set different levels to get a two-step pulse.


Pb ■  Pulse B Level %:

 Similar to Pulse A Level.  However, since it is often desired
 to have the positive and negative pulses of a biphasic pair
 mirror each other, the Pulse B Level control has a special
 Mirror option:  When this is active, any changes to A Level
 will cause the actual B Level value to be the negative of the
 A Level.  While this is active, the B Level will show only
 'Mirror'.

 To set the Mirror option, begin by hitting ENTER at the item
 as though you were going to adjust it normally, then ALT-Up or
 ALT-Dn will activate Mirror mode.

 To exit Mirror mode, simply enter any B Level value normally.

 Setting the B Level to 0 (or to the 0 Level value) will give
 what appears to be a single monophasic pulse, but this is
 usually not the best way to do that.  It's better to set B
 Width to 0, so that A Width will give complete control over
 the duty cycle.  However, there may be occasions where you
 want to deliberately limit the range of duty cycles, and for
 that you can set B Level to 0 and use B Width to set the
 minimum Off (dwell) time.


P0 ■  Pulse 0 Level %:

 This sets the baseline for the pulse.  It effectively allows
 full-scale offset adjustment without driving the pulse peaks
 out of range.

 This is especially useful for monophasic pulses where you want
 to control the average (DC) value of the overall wave.  For
 example, if the A Level is 100% and the A Width is 10%, the
 average level would be 10%.  You can balance this out by
 setting the 0 Level to -11.111%.  In general, for a pulse of
 width W and level A, the balancing 0 Level value Z will be:

              A * W
    Z  =   -----------      (All units assumed to be %)
            (100 - W)

 Note that this approach does not keep the same base-to-peak
 height as set by the A Level value; as the base goes down
 the effective pulse size rises.  If you are more concerned
 about keeping that constant, use the page CoOffset control
 instead.  In the above example, you would simply set -10%
 to balance out the +10% average of the pulse.  The pulse
 would then go from a baseline of -10 to a peak of +90.


PM ■  Pulse Width Mode:

 This control toggles between Pct, Deg, Smpls, and Time on
 successive hits.  It determines the units that are used for
 entry and display of the two Width values.  You may choose
 whichever is most relevant for your application, keeping in
 mind the effects upon Modulation Type, below.


Pm ■  Pulse Modulation Type:

 This is not really a control, but a status indicator that
 changes according to the above Pulse Width Mode control.  It
 indicates that either Phase or Width modulation is available
 in the main component CpModulation menu.  Pct and Deg allow
 Width modulation, while Smpls and Time allow Phase modulation.

 Pulse Width Modulation (PWM) is commonly used in many areas.
 The output signal can be purely digital, on or off, but the
 average value changes with the modulation.  The digital nature
 makes it easy to send the signal over a simple interface (such
 as an optoisolator), yet it is easy to recover the modulating
 signal via a simple mLlow-pass filter.

 PWM is the traditional method used in high-efficiency Class D
 amplifiers.  Each output device (transistor) is always in
 either the full-on or full-off state, neither of which
 dissipates much power in the device itself, delivering it
 instead to the load.  For audio amplifiers, the basic pulse
 frequency must be high enough so that it is out of the range
 of human hearing (well above 20 kHz).  A simple low-pass
 filter at the output is typically made from an inductor and a
 capacitor.


Va Arb (Arbitrary) Wave:

 Arbitrary waveforms allow you to simply load a file to obtain
 any custom waveform you desire.  These files are analogous
 to the wavetables used for music synthesis.  Each typically
 holds exactly one cycle of the desired waveform.

 The Arb Wave submenu allows up to 8 Arb files to be loaded at
 one time.  These files are available to any component page of
 either DAC, and more than one page can use the same file
 simultaneously but completely independently.

    UwArb 0-7
    UrData (Interp / Round / Step)
        UsRandom selection of Arb values

    UtCreating Arb Files From Text
    UeThe EXPNOTE.DAT Arb File
    UoThe COMPOSER.S3A Setup File


Uw ■  Arb Files 0-7:

 By default, the 8 Arb file locations show as simply Arb 0
 through Arb 7 when Arb files are not loaded.  To load a file
 to a particular location, move the cursor to that spot and hit
 ENTER.  You will be prompted for the name of the file to load.

 Arb files may hold 1024, 2048, 4096, or 8192 samples.  If you
 load a file of a different size, it will be truncated to fit
 the largest of these.  Files shorter than 1024 samples are not
 accepted.

 Files may be either ordinary .WAV files (which includes
 Daqarta DiDDisk files), or Daqarta instantaneous or averaged
 O0waveform files.  Note that these latter would need to be
 from NpN1024 mode.  MfArray files or Afaveraged spectra are not
 allowed.  You may also use custom user-created .DAT files.
 A .DAT file is simply a series of 16-bit signed integer values
 in IF2s-complement binary format.  A special UtTXT2DAT utility is
 provided to allow conversion of plain text files to this
 format.

 The .WAV files may be mono or stereo.  If you load a stereo
 file, it will appear in two adjacent Arb locations.  The .WAV
 files may be either 8-bit or 16-bit.  8-bit files will be
 converted to 16-bit data internally when loaded.

 The actual file extensions are not important here; the loader
 first looks for the .WAV header, and if that is not present
 the file is assumed to be a .DAT file.  There is no .DAT
 header, so all non-WAV files are assumed to be 16-bit mono.
 You can thus use whatever file extensions suit your needs.

 Once the file is loaded, the menu location will change to show
 the first 7 characters of the file name instead of the Arb 0-7
 default.  If you load a mono file, the name will appear in all
 upper-case characters.  If you load a stereo file, the top
 entry (left channel) will be upper-case, and the next (right
 channel) will be lower-case.

 When a file is loaded, it does not become active (shown
 highlighted in inverse video) until you select it.  Note that
 the loading process enters P0Pause mode, so you will need to
 unPause before you can select the file.

 Arb files load into DOS memory below 640K.  They share this
 area not only with the Daqarta program and modules, but also
 with special tables used by any VbNoise Band sources which are
 active.

 You may delete a file to make room for another or to free up
 memory for more or larger Noise Band tables.  To do this, that
 Arb must not be active.  Hit ALT-ENTER with the cursor there,
 and you will be prompted to '(R)eplace, (D)elete, or ESC ?'.

 An Arb file is assumed to hold exactly one cycle of the Arb
 waveform.  If it contains an integer number of cycles the
 overall operation will be the same, but the N0Freq and NpPhase
 controls will be off by that same factor since a single cycle
 is assumed.  Even more important, the resolution is reduced
 needlessly since there are less points per actual cycle at
 the output.

 You can use STIM3A to create 1024-point Arb files.  The best
 way to do that is to use the IdDEMO.ADC driver, which allows the
 STIM3A data to be treated like real-world ADC data.  Make sure
 you have set NpN1024, then set the MnStepN step size to 1.0000 and
 watch the waveform as you reduce the Freq setting.  Since this
 StepN mode will only allow an integer number of cycles per
 1024 samples, it will be easy to see when you have just one.
 Then just save it with O0OutDt.

 Of course, there is not much point in saving one of the
 standard CwWave types as an Arb file.  In addition to being
 redundant, such a 1024-sample file would not have the
 resolution of the native Wave types, which is equivalent to
 8192 samples per cycle.  But you might want to build up a
 composite waveform made from summing several different native
 Wave types, allowing faster operation and/or freeing up
 component pages for other uses.

 You can use modulation in creating your Arb file, but you
 need to insure that the modulator also completes a single
 cycle (or an integer number) in 1024 samples.  Frequency
 sweeps are possible as well, but these can be difficult to
 align so that the start and end splice properly when used
 as a single cycle.  Often, you will be better off using a
 VxPlay file instead.

 Instead of recording the STIM3A output using DEMO.ADC, you
 might want to use a real sound card or acquisition board
 to record the RESPONSE of some system to a stimulus.  This
 assumes that the response tracks the stimulus such that it
 completes one cycle when the stimulus does.  The relative
 phase doesn't matter, since as long as it's exactly one
 cycle there shouldn't be a splice problem on playback.


Ur ■  Data (Interp / Round / Step):

 This control is at the bottom of the Arb menu.  Normally, you
 will want to leave it in Interp mode.  This means that STIM3A
 will interpolate between Arb file values to find the proper
 output value at any given instant of time, just as the normal
 internal Wave types do.  That's especially important if you
 only have 1024 points in the Arb file.

 But sometimes you don't really want that, but instead want
 to have the output go only to the nearest value from the
 file.  That's what Round does.  This might be needed, for
 instance, if the Arb output is used as a test cycle controller
 for some external system (usually with N0Freq set to a low
 value).  The test might require only specific output values,
 so you just build a list of them and convert it to a .DAT
 file with the UtTXT2DAT utility.

 The Step mode is an even more powerful extension of this
 concept, since instead of the Freq control it uses the TMTiming
 menu.  This allows you to Ttstep very slowly through the Arb
 file, holding each value for a fixed time which is a selected
 multiple of up to 65535 sample periods.  You also have the
 option of Tmsmoothing the steps, for example to prevent abrupt
 jolts to mechanical equipment being controlled.

 Often you will want to use the Step Arb output to control
 CP(modulate) another component page.  Suppose you are conducting
 vibration tests on a product, using an electro-mechanical
 shaker system.  Each test cycle consists of several stages
 at different frequencies and amplitudes, then repeats.

 You can set this up using a Step Arb output as the CFFM
 modulation Fmsource for the main output component page that will
 drive the shaker.  At each step the Arb output produces a
 different frequency, the range of which can be adjusted via
 the FdFM deviation and the main N0Freq setting on the output.

 If you want some stages to be longer than others, just repeat
 that value as many times as needed.  Assign each stage a
 duration in samples, such that the total comes to 1024, 2048,
 4096, or 8192.  (But see below for a way to avoid this.)

 In a similar way, a second Step Arb can be used to step
 through various amplitudes by using it as the CaAM modulation
 Amsource on that same output.


Us ■■  Random Sequence, Constant Step Duration:

 Now suppose you want to randomize this same basic test cycle,
 using the same amplitude sequence but presenting the frequency
 steps in a random order.  In other words, you want to select
 random values from that Arb file, rather than just step
 through in sequence.  Consider that the values in the file are
 the points in one cycle of the original output series, so they
 correspond to phase steps.  For example, if there are 1024
 points in the cycle, each would represent 360/1024 = 0.35156
 degrees of phase.

 What you really want to do is select random phases, so you use
 CpPhase Modulation with the WmSource set to a noise page.  Use
 VwWhite noise for a uniform distribution of random values over a
 range.  You can adjust the WdDepth of this modulator, as well as
 the ClLevel of the noise source, to cover as much or as little
 of the full range of values as desired.  If you use less than
 the whole range, then the main NpPhase controls the central
 value.

 You can use a VgGaussian source to concentrate most of the
 samples about one region of your Arb, while still hitting the
 other values occasionally.

 Note, however, that you must NOT set up the Arb to use Step,
 since that allows no Phase Modulation option.  Instead, set
 it to Round, and set N0Freq to 0.  What this means is that the
 output will hold constant at whatever phase is selected, and
 the total phase will include the main Phase setting as well as
 the contribution from the modulation.  By using Round, you
 will select only discrete Arb values; if you instead set
 Interp you can randomly include "in between" values as well.

 With this setup, the duration of each random frequency is
 constant, set by the noise TxTiming Step.  You thus can't
 control the relative duration of different frequency steps by
 repeating values in the Arb file.  Instead, repeated values
 now affect the relative probability of the different
 constant-duration steps.  Of course, since any given Arb
 stage is selected at random, there may be repeated runs of the
 same stage which effectively act as longer durations.

 You can try an entertaining demonstration of this process by
 loading the UoCOMPOSER.S3A setup, which creates "oriental"-
 sounding background music by selecting random notes from the
 "black keys" section of UeEXPNOTE.DAT Arb file.  This setup also
 demonstrates another important feature:  You can have one Arb
 file containing several different regions.  The main NpPhase
 control selects the region, and the modulation WdDepth and noise
 ClLevel control the width of the region that is used.  There is
 no need to repeat anything just to get an even 1024 samples,
 since you can always pad the unused part of the file with
 zeroes.


Ut ■  CREATING ARB FILES FROM TEXT:

 You can use the TXT2DAT utility program to create an VaArb file
 from a list of numbers in an ordinary text file.  This is
 especially useful when the Arb is to be a control sequence
 instead of a waveform that you could simply record.  The
 UeEXPNOTE.DAT file was created this way.

 TXT2DAT accepts a plain mEASCII text file.  The values in the
 file must be INTEGERS in the +/-32767 range.  They may be one
 per line, or separated by commas, spaces, or tabs.  Having one
 value per line makes it easy to keep track of how many you
 have entered, by means of the line number in your editor or
 word processor.

 If you use a word processor or spreadsheet to create this,
 make sure you save it as .TXT or .CSV (Comma-Separated
 Variable), not .DOC, .RTF, .HTM, or any native word-processor
 format.

 You can add comments to your file by starting them with a
 semicolon (;).  The remainder of the line will be ignored.

 To use TXT2DAT, you invoke it from the DOS command line and
 give the full name, including extension, of the target file,
 as in:

    TXT2DAT myfile.txt

 It doesn't matter what extension you use; it doesn't have to
 be .TXT, as long as the file actually contains ASCII text.
 The original file will remain unchanged, and a new file will
 be created with the same main file name but a .DAT extension.

 The .DAT file thus created will be pure IF2s-complement binary.
 You may also create an Arb file by any other means that
 produces this same format.

 TXT2DAT is limited to raw text files no more than 65535 bytes
 in length.  This should be adequate for Arb files up to the
 limit of 8192 values, though you may not have much room for
 comments in the largest files.  Note that TXT2DAT does not
 do anything to force the resultant file to any particular
 length; it is up to you to insure that the raw file contains
 1024, 2048, 4096, or 8192 values for use as an Arb file.

 If you invoke TXT2DAT with no parameters, a short summary
 of the above usage description will be displayed.


Ue
 ■  The EXPNOTE.DAT Arb File:

 This is a 1024-point VaArb file created with the above UtTXT2DAT
 utility.  It contains 7 separate sections, holding values
 corresponding to musical intervals and an exponential curve.

 This file is intended for use with Arb N0Freq set to 0 Hz, and
 the main NpPhase set to select the desired section of the file.
 You then use CpPhase Modulation to cause the output to run
 through the selected values.  The modulator WmSource can be
 another component page, perhaps one of the VNNoise Waves used in
 TtStep Timing mode to randomly select values from the Arb at
 some desired rate.

 The Arb Wave can be set to UrRound to insure that only discrete
 table values are selected, as you might want to do if they are
 used to play musical notes, or to Interp to allow a smooth
 curve to be generated for exponential control of a frequency
 sweep.

 The output of the phase-modulated Arb page would typically be
 used to CPmodulate another page, such as via CFFM to play notes or
 sweep frequencies using the exponential response provided by
 the Arb.

 The seven sections are:

        Degrees             Description
      0.0 to  38.7      111 mNsemitones (all keys)
     39.0 to  61.5      65 white keys (C-scale)
     61.9 to  77.7      46 black keys (pentatonic)
     78.0 to 100.5      65 natural minor scale
    100.9 to 123.4      65 harmonic minor scale
    123.8 to 143.1      56 whole-tone scale
    143.4 to 360.0      616 frequencies at 1/72nd-octaves
                            (1/6th-semitones)

 The Phase Modulator WdDepth and the source page ClLevel must be
 adjusted to keep the excursion within the desired range.
 These two controls act in tandem.  If you want to select only
 the last section of this Arb file, for example, it comprises
 616/1024 or about 60% of the full 360 degree range.  If you
 set the modulating source Level to 60%, then (assuming that
 its wave normally covers the full range of values from
 negative to positive full-scale) this represents the desired
 extent of the Arb cycle.  So you would set the Arb NpPhase to
 the middle of the range (about 251.7 degrees) and set the
 Phase Modulator Depth to 50% to swing +/-50% of the WmSource
 amount in each direction.


Uo
 ■  The COMPOSER.S3A Setup File:

 This setup demonstrates one use of the above UeEXPNOTE.DAT file.
 It "composes" music that has a traditional Oriental flavor,
 using the Pentatonic scale equivalent to the black keys on a
 mNpiano keyboard.  This is also the scale that is used in
 certain traditional folk styles of the British Isles, American
 Mountaineers, and Native Americans.  You may thus be able to
 modify the setup to sound more like one of these, or you
 may experiment with other tunings.

 COMPOSER uses a VwWhite Noise source (page B) to supply
 random values that are then used to select random notes from
 the proper range of EXPNOTE.DAT (page C), which are in turn
 used to modulate the frequency of a VrRamp Wave (page D) to get
 the actual notes.  CbBurst is used on the ramp, set to give a
 different duration than the random note changes to make it
 more interesting.  To add still more dynamics, the ramp slope
 is modulated by a slow random souce (page A).

 Additional modulation could be used, such as by adding CaAM to
 the page D output at a 3-7 Hz "tremolo" rate, or adding a
 similar AM to the random note frequencies of page C to provide
 "vibrato".  All of this uses only DAC 0; DAC 1 is still free
 for a second instrument "voice".

 The basic setup plays a very long "song"... it doesn't repeat
 for over 100 billion years!  Here is a quick summary:

 ■  Set StDynamic RrRTime mode.

 ■  Set page A to:
    ■   VwWhite
    ■   BxContinuous
    ■   TfTiming Slow 1000x
    ■   TmSmooth TC 50 msec
    ■   ClLevel 100%, CoOffset 0

 ■  Set page B to:
    ■   White
    ■   Continuous
    ■   TxTiming Step 450 msec
    ■   Smooth TC 10 msec
    ■   Level 13%, Offset 0

 ■  Set page C to:
    ■   VaArb = UeEXPNOTE.DAT, UrRound
    ■   Continuous
    ■   N0Freq = 0
    ■   NpPhase = 75 degrees (middle of black key range)
    ■   WmPhase Mod Source pg B
    ■   WdPhase Mod Depth = 2%
    ■   Level 100%, Offset 0

 ■  Set page D to:
    ■   VrRamp
        ■   RrRise = 50%
        ■   RsStairs = 0
        ■   RmMod = Slope
    ■   N0Freq = 0
    ■   BxBurst - length different from page B Timing Step:
        ■   BsStart = 0
        ■   BrRise = 100 msec
        ■   BdDur = 150 msec
        ■   BfFall = 50 msec
    ■   FmFM Source C
    ■   FdFM Dev +/-3000 (or as desired)
    ■   WmSlope Mod Source A
    ■   WdSlope Mod Depth = 100%
    ■   Level 100%, Offset 0




Vx Play Wave:

 This allows you to play an entire file as a signal source.
 It is similar to VaArb, but with some important differences:
 Instead of using low DOS memory, it uses extended (XMS) memory
 to hold the Play files.  Since most systems have a lot of
 extended memory available, you can use really large files.

 In order to use Play, you must make the XMS memory available
 to DOS by including HIMEM.SYS in your CONFIG.SYS file.

 Where an Arb file is typically expected to contain a single
 cycle of the desired waveform, the Play file typically
 contains many cycles.  Usually this is a complete recording of
 a complex sound that you want to manipulate, such as an animal
 vocalization.

 Due to this difference, Play files use a N0Rate control instead
 of the standard Freq control.  The playback rate may be set up
 to 512 times higher than originally recorded, though high
 playback factors require greater CPU performance to handle the
 higher number of samples that must be processed.

 Since there can be no meaningful NpPhase control with an unknown
 number of cycles of unknown frequencies, Phase is arbitrarily
 calibrated such that 360 degrees is 1024 samples at x1 Rate.
 As Rate increases, the time represented by these 1024 samples
 decreases proportionally.

 Play files can use the same modulators as Arb files, but some
 of controls behave differently.  CpPhase modulation uses the
 above translation, such that 100% modulation gives +/-1024
 samples of shift in the relative position of the waveform.

 CFFrequency modulation is really Rate modulation, and there is
 an interaction between the FdFM Deviation and the basic Rate
 to keep things within range.  Similar limits apply to CsSweep.

 Play uses linear interpolation to play back files at different
 rates.  This is efficient, but it does introduce a certain
 amount of distortion due to the fact that the straight lines
 used for the interpolation don't always give a good fit to the
 true wave shape.  In general, this situation is improved by
 using more points per cycle of the waveform, which gives a
 better fit.  So the best situation for low distortion is when
 you record low frequencies or use high sample rates.

 Since Play files are loaded into extended memory, they reduce
 the size of file that can be recorded using DMDDisk Memory
 mode.

 Play mode has its own submenu that allows up to 8 Play files
 to be loaded at one time.  These files are available to any
 CMcomponent page of either DAC, and more than one page can use
 the same file simultaneously but completely independently.

    XwPlay0-7
    XsFrom
    XeTo
    XuUnits Smpls / Sec
    XbBurst Single / Repeat
    XfRate Abs / Rel
    XrData Interp / Round / Step


Xw ■  Play Files 0-7:

 By default, the 8 Play file locations show as simply Play0
 through Play7 when Play files are not loaded.  To load a file
 to a particular location, move the cursor to that spot and hit
 ENTER.  You will be prompted for the name of the file to load.

 Files may be either ordinary .WAV files (which includes
 Daqarta DiDDisk files), or Daqarta instantaneous O0waveform files.
 MfArray files or A3averaged files are not allowed.  (Unlike UwArb,
 Play can't use waveform averages.)

 You may also use custom user-created .DAT files.  A .DAT file
 is simply a series of 16-bit signed integer values in
 IF2s-complement binary format.  A special UtTXT2DAT utility is
 provided to allow conversion of plain text files to this
 format.

 The .WAV files may be mono or stereo.  If you load a stereo
 file, it will appear in two adjacent Play locations.  The .WAV
 files may be either 8-bit or 16-bit.  8-bit files will be
 converted to 16-bit data internally when loaded.

 The actual file extensions are not important here; the loader
 first looks for the .WAV header, and if that is not present
 the file is assumed to be a .DAT file.  There is no .DAT
 header, so all non-WAV files are assumed to be 16-bit mono.
 You can thus use whatever file extensions suit your needs.

 Once the file is loaded, the menu location will change to show
 the first 7 characters of the file name instead of the Play0-7
 default.  If you load a mono file, the name will appear in all
 upper-case characters.  If you load a stereo file, the top
 entry (left channel) will be upper-case, and the next (right
 channel) will be lower-case.

 When a file is loaded, it does not become active (shown
 highlighted in inverse video) until you select it.  Note that
 the loading process enters P0Pause mode, so you will need to
 unPause before you can select the file.

 You may delete a file to make room for another or to free up
 extended (XMS) memory for longer DMDDisk Memory files.  To do
 this, that Play must not be active.  Hit ALT-ENTER with the
 cursor there, and you will be prompted with:
  '(R)eplace, (D)elete, or ESC ?'.


Xs ■  From - Play File Start Point:

 Selects the starting sample to be used from the Play file.
 This allows you to start your original recording a little
 early to make sure you get everything, and then edit out the
 initial lag time.  Or you may have several repetitions of a
 sound, and you can use this to select different ones for your
 test.

 The XuSmpls / Secs control (below the following 'To' control)
 allows you enter the starting point in samples or seconds.


Xe ■  To - Play File Stop Point:

 Complementary to the above 'From' control, this sets the end
 of the area to be used from the Play file.


Xu ■  Units (Smpls / Sec):

 This is a global units control.  In the Play menu, it allows
 you to toggle the above From and To controls between sample
 values and seconds values for display and data entry.


Xb ■  Burst (Single / Repeat):

 If you use the Play wave with the CbBurst modulator, this
 control tells what to do when the selected (From  To) region
 is shorter than the total Burst duration.  When set to Single,
 the burst will only play the selected portion of the file once
 per burst; the remainder of the burst will be filled with
 zeroes.  When set to Repeat, the selected portion will be
 repeated throughout the entire burst.


Xf ■  Rate (Abs / Rel):

 If the Play file was recorded at a X0sample rate that differs
 from that currently in use, this control allows you to select
 whether the N0Rate control should show Absolute rate, where
 1.0000 means that the effective playback is the same as
 recorded, or Relative, where 1.0000 means that each output
 sample uses the next Play sample exactly.

 For example, suppose the file was recorded at a sample rate of
 20000 Hz but the current sample rate is 44100 Hz.  If you set
 this control to Rel and set the main Rate to 1.0000, the file
 will play back faster by a ratio of 44100/20000 or 2.205 times
 faster.  You would have to set Rate to 20000/44100 or 0.4535
 in order to get the same effective playback rate as recorded.

 Alternatively, if you set this control to Abs, then the above
 conversion is applied automatically and you get the original
 playback when Rate is 1.0000.

 But note that it's not truly the "original" playback, since
 STIM3A must interpolate between samples to compensate, so
 there will be some distortion due to the linear interpolation.
 On the other hand, playing exactly one file sample for each
 output sample eliminates waveform distortion, but all the
 frequencies will be higher by a factor of 2.205 and the
 duration will only be 0.4535 as long.


Xr ■  Data (Interp / Round / Step):

 This control is similar to the one at the bottom of the UrArb
 menu.  Normally, you will want to leave it in Interp mode.
 This means that STIM3A will interpolate between Play file
 values to find the proper output value at any given instant of
 time, just as the normal internal Wave types do.

 But if you are using the Play file for something other than a
 sound source, there may be times when you want only the exact
 file values, such as when using the file as a test sequence
 generator.  Round mode will always select the nearest exact
 value.

 Step mode is often more useful for sequence generation, since
 it uses the TMTiming menu instead of the N0Rate control.  The
 TtStep Timing option, for instance, allows you to step through
 the Play file using exact data values, but holding each for a
 specified number of samples.

 You can also use the tricks discussed for the Arb file to
 Urselect random values from the set of Play data.



VN NOISE WAVES:

 Noise Waves use random number genertors to create data.  There
 is a separate generator for each component page, 8 in all.
 The generators used in STIM3A are technically "pseudo-random":
 They create what appear to be totally random values, but the
 exact sequence of values eventually repeats.  However, since
 the repeat length is very long, there is no feasible way to
 tell that they are not totally random.  How long is "very
 long"?  The complete cycle is 9.22 * 10^18 samples, so if you
 create one value per output sample (say, with the White noise
 source), and the output sample rate is 48000 samples per
 second, then the sequence will take over 6 MILLION YEARS to
 repeat.

 Since Noise Waves don't have any specific frequency like the
 regular repeating Cwwaves do, the main CfFreq menu is replaced
 with the TMTiming menu.  This allows options like TtStep (to hold
 each value for a selected number of samples), or TlSlow (to
 create an arbitrarily slowed version by interpolation).  You
 can also add TmSmoothing, or TqQuantize the output to a reduced
 number of levels.

 By the same token, since there is no repeating pattern in the
 random output, there is no particular sync interval upon which
 to trigger a trace.  Instead, in Dynamic RTime mode the sync
 period is controlled by the TxStep factor in the TMTiming menu.
 This is the case regardless of whether the current Timing mode
 set to TsSpec, TlSlow, or TtStep.  (In other modes the
 repeat interval is determined by the active buffer size, which
 is related to Burst length or StepN frequency from another
 active page.  If you set Cont alone the default is 512
 samples.)

 Note, however, that Step and Slow timing do affect the noise
 spectrum, since they effectively slow the sample rate and thus
 cause aliasing:  You will see a series of dips and decreasing
 peaks at higher frequencies.  This may be of no consequence
 if you are using the slowed version as a controller for some
 other process, but it might be an issue for certain tests.

 You can use Static RTime mode to produce "frozen" or "looped"
 noise.  This is a short section of noise that is repeated
 without changes.  Set up a CbBurst with no BrRise/BfFall or BsStart/
 BwDwell delays, and set the desired repeat interval with the
 BdDuration control.  When this is short, the noise has a very
 "machine"-like quality.  At medium ranges it may sound
 somewhat like ocean surf, while at long durations it may be
 difficult to detect that there is in fact a repeating pattern.

 Note that the noise used for this is part of the same very
 long sequence mentioned above, and every time you change a
 control (such as Burst Duration) the stimulus buffer will be
 updated with the "next" section of noise from that sequence.
 If you want to keep using the same section, although with
 different lengths, you need to reset the noise generator via
 the TrRand / Copy control in the Timing Menu.  Choose one of
 the 8 noise generators to set aside only as a copy source,
 never activating it directly.  Then just copy that into the
 active generator after any change.

 Since the random sources are really pseudo-random, there are
 also Timing controls that allow you to Trsynchronize two or more
 generators, and to Tdtime-shift their output sequences relative
 to each other to produce delayed versions.


Vw White Noise:

 This is a random number generator with a uniform distribution.
 That means that for any given sample, all possible output
 values (from negative full-scale to positive full-scale) have
 equal probability.  Because the spectrum of such a source has
 equal energy at all frequencies, the term "white" is used to
 describe it in the same sense that white light contains all
 visble light frequencies.

 Besides use as a noise source, this is a good choice when you
 want random values for control of some other component page
 via CPPage Modulation.  For example, the UoCOMPOSER.S3A setup uses
 a White source to provide random selections from a certain
 range of mNmusical note frequencies in the UeEXPNOTE.DAT VaArb file.
 The duration of each note is set via the TxStep Timing control.
 In this setup, the Step value is set to give a 450 msec
 duration at the default 20 kHz sample rate.  This musical note
 sequence won't repeat exactly for over 100 billion years!

 If you add two uniformly distributed White noise sources
 together, you get a Sbtriangular distribution which is commonly
 used for a ADdither source in digital audio.


Vg Gaussian Noise:

 Gaussian noise is really "white", just like the above VwWhite
 noise, in the sense that it has equal energy at all
 frequencies.  But while the frequency distribution may be the
 same, the amplitude distribution is different.  Rather than
 all values having equal probability (as in the uniform
 distribution of the White source), here the values near zero
 are more common, and extreme values are less common.

 This distribution is a good approximation to many real-world
 processes.  Suppose, for example, that you are throwing darts
 at a target:  Most will land near the bulls-eye (depending
 upon your skill), some will be farther out, and there will
 be (hopefully!) very few that are way off the target.  Or
 consider a manufactured part, which is required to be a
 certain length, weight, resistance, or some other measured
 value:  Most parts should be near the desired value, with
 fewer parts falling farther away.

 Statisticians may complain that the proper name for the
 Gaussian amplitude distribution is "normal".  Although that
 might be more intuitive to a statistician, it is easily
 confused with the informal usage meaning "the usual case"...
 not a good label for the control.  And even statisticians
 understand this usage of "Gaussian".

 An amplitude distribution is plotted using a histogram:  As
 the values come out of the generator you sort them into bins
 according to their values X, and record the number of counts
 in each bin as Y.  After you do this for a large number of
 values, you can see the general distribution of a source.
 Where a uniform distribution should show about the same number
 of counts for each value bin, the normal/Gaussian distribution
 has most of them clustered near the 0 bin, smoothly tapering
 down toward zero counts at the extreme ends of the range.
 The formula for this curve shape is:

                  1
        Y = --------------- * e^((-X^2)/(2 * SD^2))
           √(2 * pi * SD^2)

 Here SD is the Standard Deviation, a measure of the amount of
 spread in the central peak.  At low standard deviations, the
 central bins get almost all the data and the peak is very tall
 and sharp.  At high deviations the peak is lower and more
 gently rounded, and more values fall in outlying bins.

 You can view this histogram for yourself by using the AHHist
 option in the A3Averager control menu.  Make sure you have
 StDynamic mode active (so you get new output values computed for
 each trace or NpN-sample acquisition pass), and average about
 256 traces into the histogram.  (The ASaverager control uses the
 word "sweeps" instead of "traces", but that's avoided here to
 prevent confusion with Csfrequency sweeps.)  Compare the Gauss
 source at different GpSD settings, and also look at the uniform
 VwWhite source.  It's instructive to look at the histograms of
 other waves as well, and think about why they have the shapes
 they do.

 STIM3A allows you to adjust the Standard Deviation over a much
 wider range than you are ever likely to need.  Note that in
 one respect this is not a "true" normal distribution, and you
 should be glad of that:  The true normal requires values that
 extend to infinity in both directions, even though they might
 be very infrequent.  Infinite output voltages might be rather
 hard on your ears and speakers, even assuming your sound
 system had the requisite infinite power supplies.  So instead
 STIM3A simply truncates the distribution at the limits of the
 DACs.


Gp ■  Pos Std Dev - Gauss Noise:

 This is the main control for the standard deviation of the
 VgGauss noise source.  It allows values from about 0.0002 to
 16.000, with a resolution of 0.000244.  The default is
 1.0000.


Gn ■  Neg Std Dev - Gauss Noise:

 This control is normally not used, and defaults to 'Track'.
 That allows the above Pos control to be used alone, and
 gives a distribution which is symmetrical about 0.

 However, by entering any value here other than 0, you can
 independently control the negative half of the distribution,
 and the GpPos control will only control the positive half.
 Please check out the AHHist average mode to be sure you know
 what you're getting from this, because it is probably not what
 you might first think:  It is NOT a "skew" control, which
 would shift the mean.  It literally changes only the standard
 deviation of each half (something that is Just Not Done in
 conventional statistics).  That means that there can be a
 sharp discontinuity right at zero, and the positive peak can
 be higher of lower than the negative peak.

 By contrast, a skew control would keep a single peak at zero
 but would give different slopes on each side.  That would
 cause the average value to fall somewhere other than zero.

 Just enter 0 for the Neg value to get back to Track mode.


Vk Pink Noise:

 This is similar to VwWhite noise, but has less energy at
 higher frequencies.  Specifcally, the noise energy falls
 off as the square root of the frequency.  If you plot a
 frequency response of this noise using ordinary spectrum
 averaging, the curve will slope down at -3 dB per octave
 of frequency increase.

 As for White noise, the Pink name is in reference to light:
 Pink light has more energy at low frequencies (the red end of
 the spectrum) than at high (the violet end).

 Pink noise is often used in audio testing because it roughly
 approximates the energy distribution of music and many other
 sounds.  For a given power applied to the system under test,
 this is a more reasonable compromise than White.  In testing
 loudspeakers, for example, White noise would tend to blow out
 high-frequency drivers (tweeters) before the low-frequency
 drivers (woofers) even got warmed up.

 In a system tested with Pink noise, a perfect frequency
 response would show a an averaged spectrum that falls at the
 same -3 dB per octave as the test source.  This is not the
 "flat" response we are used to looking at, and it makes it
 especially difficult to spot a slightly tilted response.
 To simplify this sort of testing, Daqarta provides a special
 YtTilt option in the YMCTRL-Y menu.  This allows you to tilt the
 spectrum up at +3 dB per octave to exactly compensate for the
 Pink source.  Then you can evaluate the spectrum for flatness
 just as you would a conventional frequency response (say, from
 a frequency CsSweep).

 Suppose you want to use this Pink source to control some other
 component page via CPPage Modulation.  Often, for control
 applications, you may be interested in very low (sub-audio)
 frequencies.  The standard Pink source is normally best for
 frequencies in the range of the FFT analysis, but you can
 extend this to arbitrarily low frequencies using the TlSlow
 Timing option.  Since that uses a linear interpolation to
 spread out (slow down) the output data, you can also use the
 TmSmooth option to smooth out the peaks formed by connecting
 straight lines.  Typically, you would set Smooth TC to the
 same number of samples as the TfSlow factor.  (Set TuSmpls / Sec
 to Smpls to do this.)  This will give a good approximation to
 true low-frequency Pink noise.

 If you are interested in "colored" noise, the other color you
 may want to experiment with is "brown" noise, where the energy
 is inversely proportional to frequency (-6 dB/octave), instead
 of the square root of frequency.  There is no specific CwWave
 selection for this, but you can create it easily from VwWhite
 noise by adding a low-pass filter.  The -6 dB/octave curve is
 what you get from a mLsimple R-C filter, which is the same as
 the TmSmooth TC option available in the TMTiming menu.

 Note that the -6 dB/octave portion only applies to frequencies
 above the reciprocal of the Time Constant (TC).  So if you set
 Smooth TC = 100 msec, the Brown spectrum will be correct for
 frequencies above about 10 Hz.  To get to lower frequencies
 you must set larger TC values, but you will find that the
 overall level goes down as TC is raised.  (This is just what
 you should expect from a low-pass filter!)

 You can use the YtTilt option in the CTRL-Y menu to apply a
 correction to the F2FFT spectrum that compensates for a -6 dB
 per octave response by applying a +6 dB tilt.  With this
 option you can use Afspectrum averaging to see how closely the
 spectrum conforms to "ideal" brown noise.

 You might want to experiment with the Slow Timing option.
 Start by setting the Slow factor to the same number of samples
 as the Smooth TC.  You will see a low-frequency peak when you
 use Slow, but you will greatly boost the flat part of the
 reponse at the upper frequencies.  The reciprocal of the
 Smooth TC in seconds will determine how low the flat part of
 the spectrum extends before the peak begins.


Vb Band Noise:

 This allows you to create either a band of noise, or wideband
 noise with a gap.  You can control the rising and falling band
 edge frequencies, steepness, and shape using the Band submenu:

    ZrRise Fc
    ZfFall Fc
    ZtTaps
    ZwWindow


ZrZf ■  Rise Fc / Fall Fc - Noise Band / Gap:

 To create a band of noise between two frequencies, set Rise Fc
 to the lower frequency and Fall Fc to the upper frequency.

 To create a wideband noise with a gap between two frequencies,
 set Fall Fc to the lower frequency and Rise Fc to the upper.

 Unlike all other frequency controls in STIM3A, these only
 accept integer Hz, and don't use the various MtFreq entry modes.

 Although the Rise and Fall controls set the "frequency" of a
 noise band, this is not a value that can be modulated
 directly.  Just like the other VNNoise sources, when Band is
 active, the modulator options are reduced to CbBurst and CaAM
 only... no CFFM, CpPhase, or CsSweep.  However, it is indeed
 possible to create a swept or modulated Band frequency
 under some conditions.

 This technique works best for narrow to moderate width noise
 bands.  Set Rise to 0 and Fall to HALF the desired bandwidth,
 giving a low-pass noise.  Now go to a higher component page
 and set up a Vssine wave whose frequency will be the center of
 the noise band.  Set the AmAM Source on that page to the page
 with the low-pass noise, and set AdAM Depth to 200%.  (That
 changes the AM to straight multiplication.)  AxTurn on AM and
 you will see the low-pass noise band mirrored about the
 selected center frequency.

 To understand what's happening here, consider that when two
 frequencies are multiplied together, the product contains only
 the sum and difference of the original frequencies.  (Check
 out the AM Depth section for the formula.)  That applies to
 the individual low-pass noise frequencies as well, so each
 instantaneous frequency in the original noise becomes two
 frequencies in the product, one above and one below the center
 frequency.

 Now all you need to do is apply a Sweep or FM to the center
 frequency, and it becomes applied to the noise band instead.
 Note that if you use too wide a band, or sweep too far, you
 can run the noise above the tANyquist frequency or below zero.
 In that case the band folds back on itself, which might not
 give the desired result.

 Astute observers might object that a noise band created via
 this mirror technique is not really the same as the equivalent
 band created in the normal way.  The fact that the noise
 components always come in matched pairs means it is not
 totally random.  But unless the band is extremely narrow, such
 that there are not a lot of other components, this fact will
 not be detected via listening tests.  This technique has been
 used for years with real electronic filters, oscillators, and
 analog multipliers to create adjustable narrow noise bands for
 psychoacoustics tests, long before the digital era.

 This approach also works for noise gaps, but is more limited.
 Here you use exactly the same concept, but instead of low-pass
 you use a noise band.  The basic idea is that when you
 multiply this by the center frequency, you will have two bands
 flanking the center.  The distance from the center frequency
 to each band will be equal to the Rise frequency.  (Remember,
 the lower band has been mirrored; it starts from the center
 frequency and runs downward.)

 Now the trick is to adjust the Fall frequency, which controls
 the outer band edges, so that there are no extra gaps at the
 extreme high and low frequencies.  If the gap were to be at a
 fixed frequency in the center of the range, this would clearly
 be no problem; you'd just set Fall to half the total Nyquist
 range and the outer edges would fall neatly at the ends.

 But if Fall is larger than half, the outer edges will wrap
 back into the main range, raising the level of the wrapped
 region by 3 dB.  This is one drawback of this method, but for
 many applications the slight level change may not be a
 problem.

 Next you have to determine how far you will need to move your
 noise gap from the center of the range.  The farther down you
 move it, the more wrap you get at the bottom and the more
 chance for another gap to slip in from the top.  You need to
 make Fall large enough so that when the gap has moved to its
 lowest extreme, there will still be no gap at the high end.
 But if you make it too large, the wrapped portion will fall
 into the desired gap from the bottom.  The exact same
 consideration applies when moving the gap up instead of down.

 This method thus turns out to be best for modest gaps with
 modest motion near the center of the range.  It's cumbersome
 to set up, but nevertheless this does provide a way to get a
 moving gap.


Zt ■  Taps - Noise Band / Gap:

 Taps can be set from 8 to 512 in powers of 2.  The higher
 the Taps setting, the steeper the edges of the selected band.
 However, a higher value uses more DOS memory (which might
 restrict the number of VaArb files you can load), and also slows
 operation.

 The noise band (or gap) is generated by filtering a wideband
 white noise source, using what is known as a Finite Impulse
 Response (FIR) filter.  Conceptually, this consists of a delay
 line that the input noise passes through; each stage of delay
 is one sample period in duration, and after each there is a
 "tap" to tap off the noise at that stage.  That doesn't affect
 the noise at all, just peeks at it on its way through.

 The output of each of these taps is still white noise, just
 delayed differently from the other tap outputs.  To see how
 this might be used to make a filter, consider what happens if
 we add two tap outputs together:  For some frequency of the
 input (which is white noise containing all frequencies), the
 delay between the two taps will be exactly the duration of
 one whole cycle at that particular frequency.  At that
 frequency (and multiples thereof, as it turns out), the two
 outputs will be "in phase" and the amplitude of that component
 will be doubled.  But at some other particular frequency (and
 multiples thereof), the delay will be only a half cycle, such
 that it will be added with a sign change; the output will be
 cancelled at those frequencies.

 The net effect of adding two taps is called "comb-filtered"
 noise, with alternating peaks and dips whose spacing is
 determined by the relative delay.  (See the TdTiming Shift
 section for further discussion of comb-filtered noise.)  To
 get a more useful filter, additional taps can be added, and
 each tap output can also be multiplied by some weighting
 constant before being added into the final output.

 Imagine starting with the multiple peaks and dips of the
 simple 2-tap comb filter, then selecting additional taps and
 constants such that some peaks are boosted further, and some
 are cancelled.  The more taps you have to work with, the more
 peaks can be boosted or cancelled.  By proper selection of
 tap constants, an arbitrary filter shape can be created...
 but using more taps will always allow a better filter.

 Since each tap requires a multiplication by its constant,
 and ALL the taps must be added to get EACH output sample,
 this process can be quite slow.  To avoid multiplying, STIM3A
 uses a trick:  To undertand this, first note that binary noise
 is still white noise; you can verify this by looking at the
 spectrum of the VwWhite source and changing the TqTiming Quant
 value from 0 (no quantization) to 1 (binary)... there is only
 a slight increase in level, but the spectrum remains flat.  In
 listening tests, the binary and ordinary White noise sound
 absolutely identical except for the overall level difference.

 Now consider that binary noise is nothing but a string of 1s
 and 0s (or in this case +1s and -1s).  Multiplication by a
 constant thus turns out to be merely adding or subtracting,
 depending on the data value; this is much faster than a true
 multiplication.  STIM3A further improves on this concept by
 building look-up tables containing the summed output for
 strings of bits, so the final output can be found very quickly
 via a few table look-ups.  (Whenever you change any Band
 parameter, a whole new set of look-up tables is built.)

 So, how does all this affect actual use of the Band source?
 For the vast majority of applications it has no effect at all.
 Use of binary noise only affects the AHamplitude distribution of
 the values, not the spectrum.  Since our ears don't hear
 amplitude distributions, this has no effect on listening
 tests.  What's more, even with binary noise as the input, the
 output of the FIR filter is not in general binary... after
 all, each output value is the sum of many taps, each of which
 has been scaled by a different constant to some non-binary
 value.  So in most respects the final output, including its
 waveform and amplitude distribution, is indistinguishable from
 a noise band produced by any other method.

 However, since the Band source is fully adjustable, it is
 possible to set it to have very little filtering action.
 Clearly, if you set Rise Fc to 0 and Fall Fc to maximum, the
 essentially unfiltered noise will show a binary appearance in
 its waveform.  As you reduce Fall this appearance is less and
 less apparent, and is essentially gone by the time Fall is
 half of maximum (ie. half of tANyquist).  This binary appearance
 happens with low-pass noise; if you set Rise much above 0 so
 you get a band of noise, even with Fall set very high to give
 a really broad band, you won't see it.

 You may also see the binary appearance with gap noise, when
 you set a narrow gap near the top of the range.

 Since this binary appearance is inaudible, the main issue is
 whether there is some other effect it might have.  If you are
 using the Band output to modulate some other source via the
 CPPage Modulation option, for example, then the distribution of
 the values might make a difference.  You might want to add a
 small amount of TmSmoothing to reduce this, although it will
 cause the spectrum to tilt downward.

 (Note that in general you should not use TlSlow or TtStep Timing
 with the Band source.  If you do, you will get a series of
 decreasing "images" in the spectrum:  Copies of the desired
 band that appear due to aliasing, since you have effectively
 reduced the sample rate.)


Zw ■  Window - Noise Band / Gap:

 STIM3A derives the tap constants using a simplified tiFourier
 series approach that assumes an infinite number of taps.
 Since the number of taps is actually limited, the filter
 response would have peaks and dips.  This is similar to the
 way that an FFT looking at a truncated (instead of infinite)
 waveform would show a spectrum with peaks and dips.  The cure
 is the same in both cases:  Window functions.  In the FFT case
 the W0window function is used to taper off the input waveform
 gently to zero at the ends; in the FIR case the window tapers
 off the values of tap constants near the ends of the delay
 line.

 Just like FFT windowing, there are lots of possible window
 functions and lots of opinions on which to use under what
 conditions.  The default here is a Hanning (Hann) window, but
 you can toggle to Hamming, Blackman, Blackman Exact,
 Blackman-Harris, or Rectangular (no window at all).  The best
 bet is to fool around with this control while doing spectral
 Afaverages of the output, to get familiar with the various
 response shapes.

 Note that unlike the ZtTaps control, there is no performance or
 memory penalty related to the Window selection.  It doesn't
 change the number of taps or size of lookup tables, only the
 values in the tables.



Cf ■ Freq Menu:

 This pops up a separate Frequency control menu for the main
 Wave frequency and phase.  For convenience, the Phase,
 Frequency, and Frequency Step Mode controls are also
 duplicated in the CaAM, CFFM, CpPhase, and CsSweep Modulation menus.

  Freq Submenu:
    NySync
    NpPhase °
    N0Freq Hz
    NsFreq Step Mode
    NBReset on Burst
    NSReset on Sweep

 If the CwWave type is set to VxPlay, then the Freq header changes
 to Rate and the submenu controls playback rate (either
 Xfabsolute or relative to the current sample rate).

 If Wave is set to one of the VNNoise types, then the Freq header
 changes to Timing and a special submenu allows you to step
 through the values slowly, smooth them, quantize them, make
 them track another Noise source, or change their relative
 timing.  You can also select this mode for an VaArb or Play wave
 if its UrRound/Interp/Step control is set to Step.

 If the Timing mode is set to Slow or Step, then the main page
 header will change to show the Slow or Step factor.

  TMTiming Submenu:
    TsSpec Mode
    TlSlow Mode
    TtStep Mode

    TfSlow x / TxStep Factor
    TuUnits
    TmSmooth TC
    TqQuant
    ToOrder
    TrRand / Copy
    TdShift


Ny ■■  Sync:

 This control may be toggled on to select the sync source in
 StDynamic RTime mode.  In other modes, the trace trigger sync is
 assumed to be the start of the stimulus buffer, which is also
 the first sample to be output in each trace or Sequential mode
 NpN-sample acquisition pass.  But since Dynamic RTime runs
 continuously and may have many components and modulators that
 are all unrelated, this control allows you to select the
 component you want to trigger on.

 This Sync control is only relevant in Dynamic RTime mode; in
 other modes it is not shown.  Also, it only has an effect when
 the TCtrigger Source is set to TGStim.  It has no effect in
 TSIntern mode.

 When no Cmmodulators are active, the sync defaults to the
 N0main wave frequency and the sync point is the positive
 zero-crossing of the waveform.  This main wave sync can also
 be toggled explicitly via this Sync control in the main Freq
 submenu.

 For modulator menus, the Sync control is not shown unless the
 modulator itself is active.  It is also not shown when the
 modulator Source is set for CPPage Modulation.  When Sync is set
 on a modulator, the sync point is the positive zero-crossing
 of the modulator sine wave.

 If you set main Freq Sync while in CbBurst mode, however, the
 start of the burst will be ignored and sync will be to the
 next available cycle start, regardless of where it falls in a
 burst.  You will probably only find this useful in special
 cases.

 For VNNoise Wave sources there is normally no particular sync
 interval on which to trigger, since there is no repeating
 pattern in the noise source.  Instead, the the sync period is
 controlled by the TxStep factor in the TMTiming menu.  This is the
 case regardless of whether the current Timing mode set to
 TsSpec, TlSlow, or TtStep.  (In modes other than Dynamic RTime,
 the Noise sync interval is controlled by CbBurst length, or by
 some other page with Freq set via MnStepN.)

 This allows you to see the start of each step in Step mode,
 but it has another use as well:  You can slow the trace update
 rate by an arbitrary amount.  Otherwise, the trace would be
 free-running (just as if you toggled the main TtTrig off), and
 wave data would pass by in a blur.

 Only a single Sync source may be active at one time.  When you
 toggle Sync on a particular source, whatever other Sync source
 might have been set is toggled off.  The control only toggles
 'on' to select a sync source... there is no toggle 'off'
 except to toggle another Sync 'on'.  You may select Sync from
 any source, either a Cmmodulator or main CfFreq wave, in any
 CMcomponent page of either DAC, or from a DMDigOut setup page.

 This control is distinct from the YyPage Sync selected in the
 YMSync menu.  That control selects one of the two PAIR pages or
 one of the four EACH pages depending upon how YmPage Mode is
 set.  It is used primarily in RsSequential modes or StStatic
 RrRTime.


Np ■■  Phase ° - Main Component Wave:

 This sets the starting phase of the main CwWave component, in
 hundredths of a degree from 0 to 360.  The actual output
 resolution is one part in 8192 per 360 degrees, or about 0.044
 degree.  If you enter a negative value, it will be converted
 to the equivalent positive value (-90 = 270, etc).

 In CbBurst mode, this is the phase at the beginning of the
 entire Burst interval, including any BsStart delay.  In other
 words, Start does not delay the start of the main wave, it
 just delays the beginning of the burst.

 This control is present in the main CfFreq submenu, and also in
 the CmModulation menus (except Burst) for convenience.  It is
 not available when the main Wave is one of the VNNoise types.


N0 ■■  Freq Hz - Main Component Wave:

 Controls the frequency of the main component Cwwaveform for the
 page.

 Frequency may be set to any value up to the tANyquist frequency,
 which is half the actual X0sample rate.  If MfFactor is active,
 it multiplies the DAC output sample rate, and also the maximum
 frequency that is allowed.

 This control is present in the main Freq submenu, and also in
 the CmModulation menus (except CbBurst) for convenience.  It is
 not available when the main Wave is one of the VNNoise types.

 The maximum frequency resolution is limited by the effective
 sample rate:
                          Sample Rate (Hz)
    Resolution (Hz)  =   ------------------
                           65536 * 8192

 For a sample rate of 48000 Hz, the resolution is thus
 0.000089 Hz.  The sample rate used here is the effective rate,
 which is the main ADC sample rate times the oversampling
 Factor, if active.

 The actual frequency entry process is controlled by the Step
 Mode below it.


Ns ■■  Frequency Step Mode:

 This makes it convenient to set frequencies which will fall
 exactly on tfFFT spectral lines, for example, or to step by
 constant or exponential amounts between frequencies.  The mode
 control appears below each main Freq control, as well as above
 the step size control in the Misc menu; all are effectively
 the same control.

 The mode steps through Direct, StepHz, StepN, Octave, and
 Music on repeated hits of the ENTER key.  The mode set here
 applies to all other Freq adjustments, including modulator
 frequencies (but not Noise Band edges), but only affects
 values during adjustment.

 Each mode may use a different step size and mechanism.  The
 step size for each mode is set in the MtMisc menu, after first
 setting the desired mode in the duplicate mode control there.

 Detailed discussions of each mode are provided in the Misc
 menu section.


NB ■■  Reset on Burst:

 This control only applies to StDynamic mode, although it may
 be changed from Static mode as well.

 In Static mode, each Cbburst presentation is identical since it
 always starts at the selected NpPhase setting.  In Dynamic mode,
 however, the main wave continues to run between bursts, and a
 burst starts at whatever the current phase may be at that
 instant.

 If you toggle this control on, then in Dynamic mode the main
 wave will be forced to the Phase setting at the start of each
 burst, just as in Static mode; every burst will be identical.

 Why would you want ever-changing bursts?  To uncover certain
 behaviors of the system under test.  A typical example is
 where the response of the system contains two separate
 components:  One responds to the instantaneous waveform, and
 the other responds only to the spectrum in a phase-insensitive
 manner.  By varying the starting phase and Awaveraging many
 responses, the contributions of the waveform portion will be
 minimized.  (Sometimes, an even better way to do this is to
 Yyalternate between two bursts with opposite polarities.)


NS ■■  Reset on Sweep:

 When a Csfrequency sweep starts the first time, the main wave
 begins at the NpPhase setting and continues from there.  But
 in StDynamic mode, or in Static mode where the presentation
 includes more than a single sweep, you can control what
 happens on subsequent sweeps.

 When this control is on, each sweep will start at exactly the
 same phase.  If you set EySweep Sync, a recording of the output
 will appear frozen on the trace.

 When this control is off, each sweep will start at whatever
 phase the main wave had when the prior sweep ended.  With
 Sweep Sync active, the trace will roll continuously even
 though the start of the sweep is indeed at the trigger sync
 point.  This might be useful to distinguish between response
 components that are sensitive or insensitive to phase at a
 given instantaneous frequency.



TM ■  Timing Submenu:

 The Timing menu is only available for VNNoise-type Waves, or for
 VaArb or VxPlay Waves if they are set to UrStep (instead of Interp
 or Round).  The upper "radio button" control selects one of 3
 timing modes.  In Slow or Step modes the control immediately
 below sets the Slow or Step factor and is marked accordingly.
 That control has no effect in Spec mode.


Ts ■■  Spec Timing Mode:

 When the mode is set to Spec, the samples from the Wave source
 proceed at the rate determined directly by the DAC sample rate
 (which is the main ADC X0sample rate times the Misc MfFactor
 value).


Tl ■■  Slow Timing Mode:

 Slow mode uses the 'Slow x' control to slow the wave by the
 indicated amount.  This is accomplished by interpolating extra
 samples between the original samples; it does not change the
 sample rate, only the "speed" of the signal.  For VNnoise waves,
 this allows very slowly changing outputs while still keeping
 a large signal level.  This is particularly valuable where you
 want to use the output as a control for some other process.

 Contrast this with simple low-pass filtering, which would
 result in a proportionally smaller level as the bandwidth was
 reduced.  However, although the average output level would be
 smaller, the maximum possible output level would not be
 affected... it would simply be less probable.  This is because
 the random sources have occasional runs of the same value, as
 any true random source should.  So, if you filtered the noise
 to a low average level and then boosted the output, there
 would be occasional high-level runs that exceeded the output
 range.  When that happened the output would be limited to the
 full-scale value, and the suppposedly low-frequency output
 would have high-frequency content due to the "clipping".

 But in Slow mode the output level is not affected as you make
 the signal slower.  However, due to the linear interpolation,
 the output is NOT equivalent to a large low-pass filtered
 version of the raw waveform.  Each of the original data points
 is present, but spread out in time by the TfSlow factor and
 simply connected by straight lines.

 If this is not suitable for your purposes, use the TmSmooth
 function below.  Set the Smooth TC to about the same value
 (in samples, not time) as the Slow factor and you will have a
 fairly decent approximation to a "big, slow" version of the
 source.  The level will be reduced slightly, but WAY less than
 the comparable reduction from filtering.  The Smooth function
 is indeed a simple low-pass filter, but here you only need a
 relatively mild filtering action to remove the straight-line
 distortions, not to provide the entire low-pass action.

 For comparison, you may want to try setting the Slow factor
 to 1x and attempting to do all the low-pass filtering with
 the Smooth control.  Or you may want to try using the Noise
 VbBand source with the frequency range set very low.


Tt ■■  Step Timing Mode:

 In contrast to Slow mode, Step mode does not interpolate but
 merely repeats each input value for the number of samples (or
 time) indicated by the TxStep factor.

 For an example of how this can be used, consider the
 UoCOMPOSER.S3A setup.  This setup plays "Oriental"-sounding
 music, where each note frequency is determined by a randomly
 selected value from a region of the UeEXPNOTE.DAT VaArb file in
 UrRound mode.  The Step factor controls the duration of the
 notes by setting how long each random value should be held.
 The random values are then used to control the EXPNOTE.DAT
 selection by means of CpPhase modulation.

 The Step approach can be used to define how long each stage of
 a test sequence should last.  An Arb file in Step mode could
 provide the sequence of values if a predefined sequence must
 be repeated exactly.  Or one of the VNNoise sources could
 provide random values, either to be used directly as the test
 frequency (or amplitude, etc), or to be used as above with
 Phase modulation to select a value at random from an Arb
 sequence.


TfTx ■  Slow / Step Timing Factor:

 This control changes between Slow and Step factor according to
 the above Timing Mode.  In TlSlow mode, this is always a simple
 multiplier, which can be interpreted as the number of extra
 samples (less one) that are interpolated between each pair of
 original data points.

 In TtStep mode, this factor will be either in samples or time
 units depending upon the TuUnits control below.  In Smpls mode
 it is a simple multiplier giving the total number of output
 samples for each input sample value.  In Sec mode it is the
 duration of each held step.


Tu ■  Units (Smpls / Sec):

 This is a global units control.  It affects the format of the
 above TxStep timing factor if TtStep mode is active, and the
 TmSmooth TC in any mode.  This same control appears in other
 STIM3A menus, and setting the units format anywhere affects
 all menus alike.  This doesn't change anything in the actual
 output, only the display and data entry format.  It can be
 toggled back and forth as needed to see the equivalent samples
 or time.


Tm ■  Smooth TC:

 Smoothing is a simple low-pass filtering operation that
 applies a time-weighted average to new and recent data.  It is
 mathematically equivalent to a mLsingle-stage RC filter.  You
 can set the Time Constant (TC) in either samples or seconds
 depending upon the state of the above TuSmpl / Secs units
 control.

 As with a real RC filter, the output of the smoothing function
 exponentially approaches the average value of the input.  It
 is mainly intended for smoothing the TlSlow or TtStep outputs, but
 it can in fact be used as a low-pass filter in TsSpec mode as
 well.  When the TC value is much higher than the Slow or Step
 Tffactor (or much higher than 1 for Spec mode), there will be a
 large reduction in the output amplitude.  This is normal for a
 low-pass filter since the average value tends toward a
 constant, usually zero with normal bipolar signals.

 For Slow mode, try setting the TC to the same value in samples
 as the Slow factor.  In Step mode, you will probably want a
 much smaller TC (if you want one at all) just to round off the
 sharp corners of step transitions.


Tq ■  Quantization:

 The VNNoise-type Waves produce outputs distributed over the
 entire DAC output range (up to 16 bits), utilizing the full
 resolution.  For example, with VwWhite Noise the output is
 uniformly distributed over 65536 values (with 16-bit DACs).

 The Quant control specifies the number of steps between
 negative and positive full-scale outputs.  When it is set to 0
 (default) it gives the maximum number of steps, regardless of
 the DAC bits.  When it is set to 1, the output is binary:  It
 goes from one extreme to the other in a single step.  Note
 that if you want some number L levels in the output, set Quant
 to L-1.

 Quant has a qualitatively different effect depending upon
 whether you are using TtStep or TlSlow mode.  This is best seen
 with White Noise and Quant = 1 for a binary output.  With the
 TxStep factor = 100 you will see random binary transitions, but
 each interval will be some multiple of 100 samples.  With Slow
 factor = 100 you also see random binary transitions, but there
 is no particular width multiple.  That's because the Slow wave
 may sometimes, for example, just barely peek over the binary
 threshold for a few samples, then return.  You'll have to
 decide which approach is most appropriate for your work.


To ■  Order:

 The normal order of operations is to apply TmSmooth before
 TqQuant (SmQu).  This control allows you to toggle to the
 reverse order (QuSm) when needed.


Tr ■  Rand / Copy:

 This controls the random generators used for the VNNoise
 sources. It allows you to lock two or more generators
 together, or else randomize one or all generators.

 By default, this starts at Ind, which means the generator for
 the current CMcomponent page is Independent of the rest.  As you
 scroll up, the Ind changes to A0, which means the A component
 page of DAC 0, then to B0, C0, D0, A1, B1, C1, D1.

 When you have advanced the selection to the current page, the
 control header will say Rand.  If you hit ENTER then, the
 current page random generator will be randomized.  That
 process uses the current time, date, and system status to
 start the generator at a random place.

 If you advance to a page other than the current one, the
 header will change to Copy.  If you hit ENTER then, the
 current page random generator will become an exact copy of the
 one selected.  Unless or until you specifically change that,
 the two will stay locked together.  This allows you to provide
 the exact same random sequence to different component pages,
 even in different DACs.  It is also the first step to creating
 time-shifted random sources, controlled by the TdShift option
 below.

 If you continue to advance the Rand/Copy control, you will get
 to Copy All.  If you hit ENTER there, it copies all generators
 to match A0.

 The final possibility is Rand All, which randomizes all the
 generators to break up any tracking due to prior Copy
 operations.

 Rand/Copy is unlike other Daqarta controls in that it is not
 "live":  No action is taken until the final ENTER.  This is
 because these operations are not generally reversible.  (There
 is no UNrandomize!)

 Also, note that there must be some change activity in the
 Rand/Copy item or no action is taken.  For example, let's say
 you are in page B0 and have previously set Copy A0.  Perhaps
 in the interim you have changed something and want to renew
 the A0 copy.  If you just hit ENTER to select the existing
 Copy A0 and then hit ENTER again to accept it, nothing
 happnens because no change was perceived by the menu handler.
 Instead, you should scroll from A0 to any other setting and
 then back to A0 before hitting ENTER to accept it.


Td ■  Shift:

 Shifts the current VNrandom generator forward or backward in
 time.  This only has significance if it is a Trcopy of another
 generator, since it then allows you to produce time-shifted
 random sequences.  This is identical to what you would get
 with a single random generator whose output was fed through
 a time delay.

 Why might you want to do this?  One reason might be to obtain
 comb-filtered noise.  Comb-filtering results when you add a
 delayed version of a signal to itself.  At all frequencies
 for which the delay represents an integer number of full
 cycles, the delayed and original signals will be in phase
 and those frequency components will be doubled in level.  At
 all frequencies where the delay represents an odd number of
 half-cycles, the delayed and original will be 180 degrees out
 of phase and those components will cancel.  The resulting
 spectrum thus has a series of alternating peaks and dips, with
 the separation between adjacent peaks (or dips) equal to the
 reciprocal of the delay time.

 For example, if you set the delay to 10 samples and the sample
 rate is 20 kHz, that constitutes a 500 microsecond delay which
 represents 2 kHz.  The spectrum will thus have peaks at 0, 2,
 4, 6... kHz and notches at 1, 3, 5, 7... kHz.  If you listen
 to this noise, it's pretty hard to tell it from normal white
 noise.  But when you scroll the Shift value you hear an effect
 that sounds like a jet plane taking off.  That's because when
 a jet takes off, the noise from its engines reaches your ears
 via different routes; some directly, some after reflecting off
 the runway and nearby buildings.  So you are really hearing
 comb-filtered noise, and when the jet moves the delay changes
 as the noise source gets farther away.

 You will need to set each source's Level to 50%, so that their
 sum will never exceed the full-scale output limits.  Instead
 of adding, you can get the same comb-filtered phenomenon if
 you set one of the Levels to -50%.  Now when the Shift delay
 is 0, you will be subtracting one identical random noise from
 the other, and the output will be 0.  Even a single sample
 shift either way from this point and the output jumps back up
 to cover the full-scale range.

 Shift works in both directions; you can set negative delays
 just as easily as positive.  And you can change Shift on
 either or both noise sources... it's only the relative delay
 that makes a difference.

 Comb filters with variable delays have been used in Rock
 music, and were the basis of the "phaser" effects pedals
 used with electric guitars.  (Many of those used only a
 crude approximation to a true comb filter, however, in that
 they only provided a couple of dips and peaks.)

 Of course, another obvious use for shifted noise is to simply
 give a delayed version of a random stimulus, perhaps to
 simulate an echo.  For example, if the two random sources
 are used as CaAM modulators, the two will track each other
 with the selected delay.

 The Shift value is always given in samples, not time units,
 regardless of the TuSmpls / Sec setting.  This is the number of
 samples provided by the random source, not the number of
 output samples.  When TtStep or TlSlow modes are active, the
 TxSlow/Step factor effectively multiplies the delay time, since
 there are no new random samples created between the original
 data points... just interpolated or repeated data.

 Also, some VNNoise Waves use more random values than others.
 The VwWhite source only takes one value per data sample, whereas
 VgGauss and VkPink take two.  VbBand, on the other hand, only uses
 one random value per eight data samples.  This means that you
 can have Gauss and Pink sources that track, or two different
 Bands, but you can't have tracking White and Gauss, for
 example, or Pink and Band.

 Shift only applies to the source, not the Band filter, so two
 different bands of noise can still track perfectly using
 Shift.


Cm
 MODULATION:

 The overall waveform specified by the CwWave and CfFreq menus may
 be further modified by the Modulation submenus.  You may use
 any or all of these with a given component page.


CP
 PAGE MODULATION:

 The CaAM, CFFM, and CpPhase/Width/Slope modulators allow a selection
 of modulation sources.  Although the default is a sine wave
 with adjustable frequency and phase, you can select another
 page output or combination of pages as the AmSource.

 On the A component page, Sine is the only option.  On the B
 page, you also have the option of selecting page A as the
 source.  Higher pages allow all lower pages, plus all
 combinations:  The D page allows A, B, A+B, C, A+C, B+C, or
 A+B+C.

 When you select another page as a Source, the CxOn/Off control
 at the top of that page changes to Mod, indicating it is in
 use as a modulator source only and does not go directly to an
 output.  That condition remains as long as that page is
 selected as a Source by any modulator on any page, even if
 that other modulator or page is inactive.

 A page that has been selected as a source may be toggled
 off and on at any time.  The Mod (formerly On/Off) control
 will still say 'Mod', but its highlight will change to show
 the current state.  When the page is off, it provides a
 'zero modulation' source to the modulator.  This allows you
 to quickly select from among multiple sources, or lets you
 see the effects with and without modulation.

 When a page is selected as a modulator source, it can be
 shared by other modulators of different types or on other
 pages.

 The AzMod Hz and AgMod φ (Phase) controls are removed from the
 current modulator when the Source is no longer set to Sine.
 Instead, you use the main Freq and Phase on the selected
 Source page or pages.  The AdDepth or FdFM deviation control on
 the modulated page works normally.  The ClLevel control on the
 Source page works in tandem with this to provide the total
 modulation amount.  When you combine two or more pages
 together to serve as a source for a single modulator, the
 source Level controls allow you to set the relative
 proportions of each component, and the depth control on the
 modulated page sets the overall amount.

 You can cascade modulators together, such that page A controls
 a modulator on page B, and the output of B is the source for a
 modulator on page C, and that output is the source for a page
 D modulator.

 This is an extremely powerful and flexible option.  You can
 use it to create noise bands with CFFM or CsSweep (which are not
 allowed directly).  You can use VaArb or VxPlay files as sources
 and step through them slowly to act as test controllers.
 You can use a VNrandom source to select from among a particular
 range of values (phases) in an Arb file to get a random
 selection of known values instead of just random values.

 Suppose, for example, you want to create a frequency sweep
 that goes up and back down again repeatedly.  (The standard
 Sweep modulator is unidirectional.)  You can use a VtTriangle
 wave as the FmFM modulator Source, if you want the up-sweep
 and down-sweep to have equal durations, or the VrRamp source
 if you want them to differ.

 Now suppose you want an exponential bi-directional sweep.  To
 do this, load the UeEXPNOTE.DAT Arb file and select it as the
 CwWave for page B.  This file contains, besides several musical
 scales, an exponential curve extending from a phase of 144 to
 360 degrees.  Use a Triangle or Ramp on page A as the source
 for the CpPhase modulator on page B.  Set the page B main N0Freq
 to 0, and the NpPhase to 251.5 degrees (near the center of the
 exponential portion).  Now the page B output will be a level
 exponentially related to the instantaneous page A ramp output.

 Set the B Phase Modulation WdDepth to 50%, and the main A ClLevel
 to about 60%.  This will cause the B phase to run over the
 entire exponential range.  To insure you have the proper
 Depth, Level, and Phase values, set the A Freq to about 100 Hz
 and monitor the B output.  You should see a U-shaped wave that
 goes down almost to zero and up almost to positive full-scale.
 If you set any of the adjustments too far off, you will run
 into another part of the EXPNOTE.DAT tables and see a spike
 at either extreme of the waveform.

 Now set the A Freq to the actual sweep cycle rate you want.
 Set page C main Freq to slightly less than the lower end of
 the desired sweep range (since the exponential curve doesn't
 go quite down to zero), set the FmFM Source to Page B, and set
 the FdFM Deviation +/-F to the upper limit of the desired sweep.
 Note that although this is shown as plus and minus, since the
 modulator is only positive you are only using that half of the
 range.

 Or, you can create a custom VaArb that includes a single cycle
 of any sweep shape, and use it to drive the FM modulator
 directly.  Or a VxPlay file with a whole series of different
 sweeps to act as a test scheduler.

 ┌──────────────────────────────────────────────────────────┐
 │                                                          │
 │  TIP:                                                    │
 │  If you don't need all four pages in your modulation     │
 │  setup, make D the final page and leave the pages        │
 │  starting with A unused.  That way, if you later want    │
 │  to add another modulator, you can use lower pages to    │
 │  modulate higher pages... but not the other way around.  │
 │                                                          │
 └──────────────────────────────────────────────────────────┘

 Whenever you are trying to figure out how to set up a really
 complex signal or test, chances are that Page Modulation can
 provide the solution.

 The UoCOMPOSER.S3A setup is a good example of several page
 modulation techniques.


 Cb
 ■  Burst / Cont:

 This brings up the Burst submenu, which
 contains controls to toggle Burst on and off, set Sync, and
 adjust the timing and shape of the burst.

 In StStatic modes the entire stimulus sequence must fit into
 the pBavailable buffer, so the length of the overall burst is
 limited.  In Dynamic Sequential mode that's only true in ALL
 YmPage Mode; in PAIR mode each pair of pages can take up the
 whole buffer, and in EACH mode each individual page can, so
 the length limits are increased.

 In Dynamic RTime mode there are no memory constraints.  A
 burst can be as long as desired, subject only to the size
 limits of the 32-bit value storage format... about 4 billion
 samples, or roughly 24 hours at 48000 samples per second.

  Burst Submenu:
    BxBurst / Cont
    BySync
    BuUnits
    BSShape
    BsStart
    BrRise
    BdDuration
    BfFall
    BwDwell
    BpPad


Bx ■■  Burst / Cont Toggle:

 This control toggles between Burst mode and Cont (Continuous)
 mode.  When Burst is toggled off, Cont appears in its place
 in both the submenu toggle control and in the main component
 page CMModulator menu.

 Note that you can only get a truly continuous output in RTime
 mode; in Sequential mode the output stops for data processing
 between NpN-sample acquisition passes.

 Also, in StStatic RTime mode, the output is generated by looping
 through a fixed (static) buffer.  To get a continuous waveform
 you must insure that the buffer contains an exact integer
 number of cycles of the wave.  This is easily achieved by
 setting the frequency using the MnStepN adjust mode.  You will
 be limited in frequency resolution by the StepN step size,
 which is in turn limited by the available pBbuffer size.

 Only in Dynamic RTime mode is continuous output completely
 automatic and independent of buffer size.  You can set any
 frequency you wish, using any frequency adjust mode, down
 to the system N0resolution of about 0.0001 Hz.


By ■■  Burst Sync:

 This control is available whenever BxBurst is active in StDynamic
 RTime mode.  When the TCtrigger Source is set to TGStim (not
 TSIntern), it allows you to set the trace to sync on the start
 of the burst interval.  This will almost always be what you
 want to do when Burst is active.

 The sync point is the start of the overall burst interval,
 which includes the BsStart delay.  Start can thus be used to
 delay the burst relative to the start of the trace.

 There is no "off" toggle:  You must select Sync from some
 other source, either in another Cmmodulator or in the main CfFreq
 submenu, in any CMcomponent page of either DAC, or from a DMDigOut
 setup page.

 Note that the waveform in the burst region will not appear
 stationary unless you have NBReset on Burst active in the main
 Freq menu.  That forces each burst to start at the NpPhase
 setting; otherwise, the burst just starts at whatever phase
 the main wave had at the end of the prior burst interval.
 In that case the burst position will be stationary, but the
 wave will appear to be rolling through it.


Bu ■■ Burst Units (Smpls / Sec):

 Changes the display and data entry format for all of the
 timing-related items, both in the CbBurst menu and the other
 menus that have copies of this control (TMTiming and VxPlay).

 This allows you to work in whichever format you find most
 relevant for your application.  You can toggle back and forth
 as needed to see the equivalent samples or time.


BS ■■ Burst Shape:

 Controls the shape of the BrRise and BfFall portions of the burst.
 It sets the exponent of a cosine-power function used to create
 the shape, from cos^1 to cos^16, plus a special linear mode
 when you set cos^0.  Although Rise and Fall must use the same
 Shape exponent, they may use different widths to obtain, for
 example, a fast attack and slow decay.  Each component page
 allows its own independent Shape setting.

 Although cos^n is the standard notation, the tone is actually
 multiplied by

    (0.5 - 0.5 * cos(Θ))ⁿ

 where Θ goes from 0 to 180 degrees on the rising portion of
 the burst, and from 180 to 0 on the falling portion.  The
 exponent is thus applied after an ordinary cosine is shifted
 and scaled to the 0 to 1.0 range, rather than the normal
 -1.0 to +1.0 range.  (Otherwise, odd exponents would flip the
 polarity of the result.)

 The cosine of 0° is 1.0, so at the start of the rise the above
 formula becomes 0.5 - 0.5 or 0, no matter what the exponent.
 Similarly, the cosine of 180° is -1, so at the top of the rise
 the above formula becomes 1.0, again independent of exponent.
 The tone thus always rises smoothly from 0 to 100% of the
 ClLevel value, but the selection of the exponent controls the
 steepness of this shape.

 The BrRise and BfFall durations also control the steepness of
 this shape by setting the width of the rise/fall areas.  Many
 investigators standardize on one exponent like the cos^2
 default used here, and specify only rise/fall durations.

 If you set cos^0, no cosine function is used.  Instead, the
 rise and fall are simply linear ramps from 0 to 100%, over
 the specified Rise or Fall duration.

 To see the effect of Shape and the interaction with rise/fall
 durations, perform the BErise/fall experiment with different
 Shape exponents.

 The Shape used here is really a "window function" applied to
 the stimulus tone, similar to the functions applied to
 acquired data with the W0Windo option.  The purpose of each is
 the same:  to reduce the "spectral splatter" that would be
 introduced by a sudden onset or offset of a signal, either a
 signal being generated (as here) or one being analyzed, whose
 "onset" and "offset" are artifacts of a finite number of
 analysis samples.

 To compare the cosine-power Shape window to the standard
 Windo option analysis functions, set the BrRise and BfFall
 durations to half the total Npnumber of samples N, and set BsStart
 and BdDuration to zero samples.  In this condition, the cos^1
 Shape is identical to a WnHanning window applied to the same
 wave having Rise and Fall durations set to zero and Duration
 set to N samples.  Verify this for yourself by observing the
 spectra of these two conditions.

 Since applying a window to a continuous wave reduces the
 signal energy seen by a subsequent F?FFT, Daqarta automatically
 applies the appropriate correction factor to the spectrum when
 the Windo option is active.  In the case of the Hanning
 window, this is a factor of exactly two.  (Note that this
 correction is different from the optional Wcbandwidth correction
 used for broadband signals.)  Thus, if you are comparing the
 spectrum of a windowed continuous wave to a shaped tone burst,
 you might want to cut the amplitude of the continuous wave in
 half for a direct comparison.

 You can facilitate comparisons by recording each response in
 M0trace Memory, so you can flip quickly back and forth.  An even
 better comparison can be made by using a MAMemory Array of
 traces, but for this purpose you will need to save spectral
 Afaverages, not instantaneous spectra.  That's because Daqarta
 always saves unaveraged traces, including spectra, as
 WAVEFORMS with no windowing, to allow you to later flip back
 and forth between waveform and spectrum views, and apply any
 window you wish.  Spectral averages, however, are saved with
 the windowing included... even if the "average" is of just a
 single trace or NpN-sample acquisition pass.


Bs ■■ Burst Start

 This is a delay before the burst starts to rise.  Its primary
 use is to delay a component relative to other components, or
 relative to the BySync point at the start of the trace.  For
 example, you may want to generate two or more tone bursts
 during one stimulus interval.  If you want the second burst
 to start 10 msec after the first, simply set the second Start
 time to 10 msec (or the equivalent number of samples, if you
 prefer, depending on the BuSmpls / Secs state).  This is the
 case whether the delay is between bursts on the same DAC
 channel or between DACs.

 Similarly, you could delay a burst to take place after a
 train of digital output pulses (if you have a lab-type
 board that supports DMDigOut).


Br ■■ Burst Rise

 This is the Butime or number of samples the burst waveform
 will take to rise from completely off to completely on.  The
 shape of the rise is typically that of a cosine-power
 function, whose exponent is controlled by the BSShape option.
 However, you may set the exponent to 0 to get a linear shape.

 By making the rise longer, or the exponent smaller (not
 including 0 for linear), you reduce the amount of "spectral
 splatter" or audible click associated with the onset of the
 tone.  In a detection experiment, the click might be audible
 where the tone itself is not, giving a misleading result.

 But if you are determining the subject's detection threshold
 by recording neural responses, you must also take care not to
 make the rise too LONG, either, as explained in the
 BeRise/Fall Practical Example for auditory evoked responses.


BE
  ┌────────────────────────────────────────────────────────┐
  │ EXPERIMENT:  RISE/FALL vs. SPECTRAL WIDTH              │
  │ To see the effects of the rise (and fall) time on the  │
  │ width of the spectrum, look at the stimulus itself by  │
  │ connecting a DAC output to the acquisition input.      │
  │ (Alternatively, you may use the dummy board driver     │
  │ IdDEMO.ADC in place of a real board driver in your       │
  │ UfDQA.CFG file.  When the stimulus generator DAC 0 is    │
  │ active, this driver just passes the stimulus through   │
  │ to DEMO Ch 0 as though it were acquired data.)         │
  │                                                        │
  │ Set BsStart to zero and BdDuration to about 128            │
  │ samples.  With a Xfsample rate of 20 kHz, set CfFreq       │
  │ to 2000.  Set BrRise and BfFall to 128 samples each.       │
  │ In RsSequential mode, you should see a single tone       │
  │ burst which takes up the first 384 samples of the      │
  │ waveform trace.  Flip to the F2power spectrum display    │
  │ with the F-key and Y-key.  Note the width of the       │
  │ spectrum spread on either side of 2000 Hz as you cut   │
  │ Rise and Fall in half to 64 samples each.  Keep        │
  │ cutting these in half and watch the spectrum widen     │
  │ further.  Check out the effects of different BSShapes.   │
  │                                                        │
  └────────────────────────────────────────────────────────┘


Be RISE/FALL PRACTICAL EXAMPLE - Auditory Evoked Responses:

 For auditory evoked responses, a rise time of about 1 msec is
 commonly used.  If you use a shorter rise time, the subject
 will appear to be more sensitive because the wider spectrum
 stimulates the firing of more neurons from adjacent frequency
 regions.  This gives less information about the true
 sensitivity at the frequency of the tone.

 As you lengthen the rise time, however, the response gets
 progressively smaller.  This is because an evoked response is
 the summation of many neurons firing at once.  Since the
 individual firing rates and threshold sensitivities of these
 neurons are not all alike, to get them to fire at the same
 time you must give a stimulus that quickly goes from below all
 neuron thresholds to above many neuron thresholds.

 Each neuron will thus start its pulse train at the same time,
 so all the initial pulses will be superimposed to form the
 evoked response peak.  But subsequent neural pulses will not
 be in synchrony, so the response rapidly falls.  With a slow
 rise time, the different neural thresholds are reached at
 differing times, so the number of pulses superimposing to form
 the evoked response is reduced.


Bd ■■ Burst Duration:

 This is the Butime or number of samples during which the burst
 waveform will remain at its maximum ClLevel.


Bf ■■ Burst Fall:

 This is the Butime or number of samples the burst waveform will
 take to fall from completely on to completely off.  It is the
 reverse of the BrRise portion and uses the same BSShape,
 though not necessarily the same width.  You will probably want
 Rise and Fall to be equal for most experiments, but they need
 not be.  For example, you may wish to simulate a natural
 transient with a fast attack and slow decay.


Bw ■■ Burst Dwell:

 This is the "dead time" after the burst, before it repeats.
 It is included primarily for RrRTime modes; for RsSequential modes
 the TgTrigger Cycle may be a better choice of controls because
 it compensates for varying processing times between traces.


Bp ■■ Burst Pad:

 This is an informational display, not a control.  It is not
 shown in StDynamic RTime mode.  In other modes, it shows only
 '-NA-' unless the component Cxpage is active and the SaDAC is
 active (although the SoMaster control may be Off).

 In most modes, the length of the longest CMcomponent page
 (burst) sets the overall length, and other pages that are
 presented simultaneously via ALL or PAIR YmPage Mode will be
 padded with nulls to bring them up to the same total.

 In StStatic modes, all pages must be the same length regardless
 of Page Mode, and the total length must fit into the
 pBstimulus buffer.  In Dynamic Sequential mode, all pages must
 still be the same length, but any single page can take up the
 entire buffer; the buffer is updated between presentations as
 needed.

 In Dynamic RTime mode, the effective buffer length is
 unlimited.  There is no need to make the parallel pages in ALL
 Page Mode operate synchronously with each other; each page can
 have an independent burst rate (or be continuous), and there
 is no length limit imposed by memory size.  The Pad display
 does not appear here.

 Similarly, there are no limits placed on Dynamic RTime EACH
 mode; each page may have a different length.  (In fact, ALL
 mode can be made to emulate EACH via careful choice of BsStart
 and BwDwell times.)  The Pad display does not appear here,
 either.

 In Dynamic RTime PAIR mode, however, it is necessary that both
 pages that are paired be the same length, though the A+B pair
 may be a different length than the C+D pair, and again there
 are no memory-imposed limits.  The Pad display is thus used
 to show the padding relative to the longer page of each pair.



Ca ■  AM (Amplitude Modulation):

 The AM submenu includes duplicates of the controls in the CfFreq
 menu for convenience, plus controls to select the modulator
 source and modulation depth, as well as to set the frequency
 and phase of the internal sine source if that is selected.

  AM Menu:
    AxAM Mod On/Off
    AySync
    NpPhase  (Duplicate of control in main Freq menu)
    N0Freq Hz  (Duplicate of control in main Freq menu)
    NsFstep  (Duplicate of control in main Freq menu)
    AmSource
    AzMod Hz
    AdDepth
    AgMod Phase


Ax ■■  AM Mod On/Off:

 When this is active, the main CwWave for the CMcomponent page
 is modulated by the specified AmSource.


Ay ■■  AM Sync:

 The Sync control is available whenever AxAM is active in StDynamic
 RTime mode, and the AmAM Source is set to Sine.  When you toggle
 Sync on, it specifies that the T0trigger sync will be to the
 Sine modulator instead of the waveform itself.  You will thus
 see a stationary sinusoidal modulation pattern with the wave
 rolling through it.  This control only has an effect when the
 TCtrigger Source is set to TGStim.  It has no effect in TSIntern
 mode.

 There is no "off" toggle:  You must select Sync from some
 other source, either in another Cmmodulator or in the main CfFreq
 submenu, in any CMcomponent page of either DAC, or from a DMDigOut
 setup page.


Am ■■  AM Source:

 The default AM modulator is an internal Sine wave, whose
 frequency and phase you can control.  On the A CMcomponent page,
 Sine is the only option.  On the B page, you also have the
 option of selecting page A as the source.  Higher pages allow
 all lower pages, plus all combinations:  The D page allows
 A, B, A+B, C, A+C, B+C, or A+B+C.

 When you select one of the other pages as the Source, the
 AzMod Hz and AgMod φ (Phase) controls are removed from the current
 page.  Instead, you would use the main N0Freq and NpPhase on the
 selected modulator page.  The AdDepth control works normally.


Az ■■  AM Mod Hz:

 This sets the modulator frequency when AmSource is set to Sine.
 The main MtFreq Step Mode affects this control as well, but
 there is no MoOrgan mode.

 One unusual use of AM is to produce controllable 2nd-harmonic
 distortion for testing purposes.  If you set the AM Sine
 modulator frequency to match the main (carrier) N0Frequency, you
 can adjust the amount of the 2nd harmonic using the AdAM Depth
 control.  There will also be a DC term (the difference term,
 where both frequencies are equal) which you can control by
 adjusting the relative Agphases.


Ad ■■  AM Depth:

 The AM modulation depth can be set from 0 to 200%.  STIM3A
 uses a special scaling scheme for AM.  Conventional amplitude
 modulation would multiply the main wave (carrier) by the sum
 of one plus the depth-scaled modulator wave:

    sin(carrier) * [1 + Depth * sin(modulator)]

 Under that scheme, 0% Depth gives the unmodulated carrier, but
 100% Depth gives a modulated wave with peaks twice as large as
 the unmodulated carrier.  That would require that the carrier
 be readjusted to prevent overdriving the output.

 Instead, STIM3A uses a slightly different scheme that gives
 identical waveforms, but automatically takes care of scaling
 to insure that the modulated wave exactly fills the available
 range:

    sin(carrier) * [1 - Depth/2 + Depth/2 * sin(modulator)]

 200% Depth is sometimes called "Ring Modulation" by those
 familiar with old analog music synthesis, named after an early
 circuit that used 4 diodes connected head-to-tail in a
 (square) ring to perform multiplication.  The above scheme
 reduces to simple multiplication of the two sine waves in
 this case.

 It is very instructive to view the spectrum of an AM sine wave
 while you adjust depth and Azmodulation frequency.  With Depth
 set to 0, you see a single line in the spectrum at the main
 N0Freq value.  (Use the FFT W0Window function to get rid of
 distracting spectral leakage skirts, or better yet use the
 MnStepN option to set the main Freq to land exactly on a
 spectral line.)

 As you start to raise Depth, you will notice two flanking
 lines around the main one, each at a distance equal to the
 modulator frequency.  They will rise as Depth increases until
 at 100% they are half the magnitude of the main line.  Keep
 going, and they keep rising; somewhere around 133% all three
 components will be the same size, but above that the main
 carrier becomes smaller than the sidebands, until finally at
 200% only the sidebands remain... no carrier at all!  This
 is exactly as predicted by the sine multiplication formula
 from high school trigonometry:

    sin(A) * sin(B) = 1/2 * cos(A-B) - 1/2 * cos(A+B)

 All you have are sum and difference frequencies in the
 product; neither of the original frequencies are present.
 Note that this is not limited to sine wave modulators;
 whatever the modulator spectrum, it will be mirrored about
 the carrier frequency.  (Essentially, you apply the above
 formula to each modulator component separately.)

 This is a powerful tool.  If you use a Zrlow-pass noise for
 the modulator, you will get a band of noise twice that
 width centered about the carrier.  You can then apply CFFM
 or a frequency Cssweep to the carrier, and it becomes FM or
 swept noise.

Ag ■■  AM Mod Phase:

 Controls the phase of the Sine modulator, independent of
 the main wave (carrier) NpPhase.  This is particularly
 useful if you have set AyAM Sync, and want to adjust the
 T0trigger point relative to the modulator cycle.

 If you set the Azmodulator frequency to match the main
 frequency, the result is a wave at the main frequency
 but with strong 2nd harmonic distortion, plus a DC
 component.  Changing the modulator phase allows you to
 change that DC component.



CF ■  FM (Frequency Modulation):

 As for AM, the FM submenu includes duplicates of the main
 Freq menu controls, as well as modulator controls.

 Unlike CaAM and CbBurst, FM is not an available option for
 VNnoise-type waves, or for VaArb or VxPlay waves where the UrStep
 Timing option has been selected.

  FM Menu:
    FxFM Mod On/Off
    FySync
    NpPhase  (Duplicate of control in main Freq menu)
    N0Freq Hz  (Duplicate of control in main Freq menu)
    NsFstep  (Duplicate of control in main Freq menu)
    FmSource
    FzMod Hz
    FdDeviation/Depth
    FgMod Phase


Fx ■■  FM Mod On/Off:

 When this is active, the main CwWave for the CMcomponent page
 is modulated by the specified FmSource.


Fy ■■  FM Sync:

 The Sync control is available whenever FxFM is active in StDynamic
 RTime mode, and the FmFM Source is set to Sine.  This control
 only has an effect when the TCtrigger Source is set to TGStim.
 It has no effect in TSIntern mode.

 When you toggle Sync on, it specifies that the trigger sync
 will be to the Sine modulator instead of the waveform itself.
 You will thus see a stationary sinusoidal modulation pattern
 on the main wave.  Typically, an FM waveform looks like a
 spring being stretched and compressed; when you sync to the
 modulator you see a stationary spring with compressed and
 stretched portions.

 There is no "off" toggle:  You must select Sync from some
 other source, either in another Cmmodulator or in the main CfFreq
 submenu, in any CMcomponent page of either DAC, or from a DMDigOut
 setup page.


Fm ■■  FM Source:

 The default FM modulator is an internal Sine wave, whose
 frequency and phase you can control.  On the A CMcomponent page,
 Sine is the only option.  On the B page, you also have the
 option of selecting page A as the source.  Higher pages allow
 all lower pages, plus all combinations:  The D page allows
 A, B, A+B, C, A+C, B+C, or A+B+C.

 When you select one of the other pages as the Source, the
 FzMod Hz and FgMod φ (Phase) controls are removed from the current
 page.  Instead, you would use the main N0Freq and NpPhase on the
 selected modulator page.  The FdDeviation/Depth control works
 normally.


Fz ■■  FM Mod Hz:

 This sets the modulator frequency when FmSource is set to Sine.
 The main MtFreq Step Mode affects this control as well, but
 there is no MoOrgan mode.

 FM was a popular technique for synthesizing musical instrument
 tones, prior to the dominance of wavetable methods.  It was
 particularly noteworthy for being the first reasonable method
 for creating decent brass-like sounds, and was used in many
 professional keyboard synthesizers.  In recent years the
 technique has been unfairly maligned by association with the
 simplified one-chip synthesizer used in inexpensive sound
 cards.  Among musicians using professional equipment to create
 new sounds (as opposed to simply using the preset sounds or
 "patches" that came built into the intrument), there was the
 additional criticism that the technique was hard to control
 and non-intuitive.  Nevertheless, there is still room for
 exploration.

 FM synthesis typically uses modulation frequencies that are at
 particular ratios relative to the main wave frequency.  If you
 want to experiment with this, try starting with the main wave
 at 440 Hz and the modulator at some particular ratio like 2:1
 (880 Hz), or 3:2 (660 Hz), or 1:2 (220 Hz).  Adjust the FM
 Fddeviation to be around +/-400 Hz as well.  Now to quickly
 screen a number of different main/modulator ratios for a fixed
 deviation, use the main frequency in MoOrgan mode.  Each key you
 press will give a different ratio as well as a different main
 frequency, and you will notice that not only does the pitch
 change but the timbre or tone color changes as well...
 sometimes quite dramatically.  Make a note of the ratio when
 you find an interesting sound, and use it as a basis for
 further explorations with different deviations.

 In FM synthesizers, the modulator is often a wave other than
 a simple sine, so you may also want to try CPPage Modulation to
 explore more exotic modulators.


Fd ■■  FM Deviation/Depth:

 This control is normally configured for frequency deviation
 in Hz.  This is the maximum frequency difference, positive
 or negative, from the initial main wave frequency when the
 modulator is at its positive or negative peak.

 STIM3A allows continuous through-zero modulation, so you
 can set the deviation higher than the main N0Frequency.  When
 the output frequency moves through zero, the effect is to
 "reflect" off of zero by reversing polarity and direction
 of sweep.

 When used with VxPlay Waves, which use Rate factor instead
 of main frequency, this control changes to Depth in percent
 of the Rate factor.  In this case the Depth will be limited
 to prevent the overall rate from going negative (playing
 backwards).


Fg ■■  FM Mod Phase:

 Controls the phase of the Sine modulator, independent of
 the main wave (carrier) NpPhase.  This is particularly
 useful if you have set FyFM Sync, and want to adjust the
 T0trigger point relative to the modulator cycle.



Cp ■  Phase / Slope / Width Modulation:

 As a convenience, this submenu includes duplicates of the main
 CfFreq menu controls, as well as modulator controls.

 This is actually a multi-purpose submenu, which changes to fit
 the CwWave type and certain Wave settings.  The VrRamp Wave
 submenu allows you to select normal Phase modulation or RmSlope
 modulation, and VpPulse Wave allows Phase or PmWidth modulation.

 This is not an available option for VNnoise-type waves, or for
 VaArb or VxPlay waves where the UrStep Timing option has been
 selected.

  Phase / Slope / Width Menu:
    WxPhase Mod On/Off
    WySync
    NpPhase  (Duplicate of control in main Freq menu)
    N0Freq Hz  (Duplicate of control in main Freq menu)
    NsFstep  (Duplicate of control in main Freq menu)
    WmSource
    WzMod Hz
    WdDepth
    WgMod Phase


Wx ■■  Phase Mod On/Off:

 When this is active, the main CwWave for the CMcomponent page
 is modulated by the specified WmSource.


Wy ■■  PM Sync:

 The Sync control is available whenever this modulator is
 active in StDynamic RTime mode, and the WmSource is set to Sine.
 This control only has an effect when the TCtrigger Source is set
 to TGStim.  It has no effect in TSIntern mode.

 When you toggle Sync on, it specifies that the trigger sync
 will be to the Sine modulator instead of the waveform itself.

 With Sync set here, the waveform will appear stationary on the
 trace; otherwise, if you sync to the main wave, the trace
 will roll continuously.

 There is no "off" toggle:  You must select Sync from some
 other source, either in another Cmmodulator or in the main CfFreq
 submenu, in any CMcomponent page of either DAC, or from a DMDigOut
 setup page.


Wm ■■  PM Source:

 The default modulator is an internal Sine wave, whose
 frequency and phase you can control.  On the A CMcomponent page,
 Sine is the only option.  On the B page, you also have the
 option of selecting page A as the source.  Higher pages allow
 all lower pages, plus all combinations:  The D page allows
 A, B, A+B, C, A+C, B+C, or A+B+C.

 When you select one of the other pages as the Source, the
 WzMod Hz and WgMod φ (Phase) controls are removed from the current
 page.  Instead, you would use the main N0Freq and NpPhase on the
 selected modulator page.  The WdDepth control works normally.

 One not-so-obvious use for phase modulation is in conjunction
 with an VaArb file.  For example, the UeEXPNOTE.DAT file holds,
 instead of the usual wavetable, several separate tables of
 values representing various musical note frequencies:  The set
 of all mNnotes on a piano keyboard, the set of just the white
 keys, just the black keys, etc.  The tables are simply
 arranged one after in the file, but Arb treats the file as
 a single circular list; every table thus represents some
 range of phases around this circle.

 If you want to cycle through just one set of these values, or
 randomly select values from just one set, what you really need
 is to select values over that particular range of phases.
 That's a job for phase modulation.  You first set the main
 Frequency to zero, so the output will stay stationary at one
 particular value.  Then set the main Phase to select the
 desired range.  If you now modulate that phase, the output
 will change under modulator control.

 If you use a VNnoise page as the modulator, you will get random
 values from within the selected range.  Adjusting the ClLevel of
 noise and the WdDepth of the phase modulation will control the
 extent of the selected values within the range.  You can set
 the Arb wave to UrRound to the nearest table value if you want
 to avoid interpolated values.  That approach is used in the
 UoCOMPOSER.S3A setup to select only discrete values from the
 'black keys' set; if you use Interp you will get non-musical
 notes, as though playing a keyboard "in the cracks".

 This same approach can be used to set up various test
 schedules, for example, which use random selection from
 within a predetermined set of values.


Wz ■■  PM Mod Hz:

 This sets the modulator frequency when WmSource is set to Sine.
 The main MtFreq Step Mode affects this control as well, but
 there is no MoOrgan mode.


Wd ■■  PM Depth:

 This control works differently depending on the modulation
 type.

 With Phase modulation, Depth is the percentage of a cycle
 traversed by the modulator in each direction.  For example,
 with 50% Depth, the main waveform will slide forward by a half
 cycle (to +180 degrees) and backward by a half cycle (to -180
 degrees).  At 100% Depth, it will move a full cycle in each
 direction.

 With Slope modulation of a VrRamp wave, Depth is the TOTAL slope
 covered by both positive and negative swings of the modulator.
 For example, if you set RrRamp Rise to 50% and this Slope
 Depth to 100%, then the modulator will cover the entire range
 from an equivalent of 0% Rise to 100%.

 Note that if you set Depth too large for the Ramp Rise, you
 can break over into a reversed ramp as the Rise goes below 0
 or over 100%.  For example, with 25% Rise, you would hit this
 if you set Depth above 50% (ie, +/- 25%) because you would
 then go below 0 on the negative modulator peaks.

 Similarly, with PmPulse Width modulation, Depth is again the
 total width coverered by the modulator.  So if you set Pulse A
 PAWidth to 50% and PBPulse B to zero, you will start with a square
 wave.  100% Depth would then take it from fully off (0%
 A Width) to fully on (100% A Width) over the course of the
 modulator cycle.  Likewise, you must not set Depth too large
 for the base pulse widths or the pulse will vanish if the
 overall width goes to 0, or stay high if it goes to 100%.


Wg ■■  PM Mod Phase:

 Controls the phase of the Sine modulator, independent of
 the main wave (carrier) NpPhase.  This is particularly
 useful if you have set WyPM Sync, and want to adjust the
 trigger point relative to the modulator cycle.


Cs ■  Frequency Sweep:

 The Sweep menu is different from the CaAM, CFFM, and CpPhase
 Modulation menus.  Like them, it has duplicates of the main
 CfFreq menu controls, although main N0Freq is here called Start.
 And like the FM and Phase menus, it is also not available for
 VNnoise-type waves, or VaArb/VxPlay in UrStep Timing mode.  But it
 does not allow selection of any modulator source other than
 its own ElLinear / Exponential / Step sweep generator.

  Sweep Menu:
    ExSweep On/Off
    EySync
    NpPhase  (Duplicate of control in main Freq menu)
    E0Start
    NsFstep  (Duplicate of control in main Freq menu)
    EeEnd
    EdDuration
    EuUnits
    ElLin/Exp/Step
    EsStep Size


Ex ■■  Sweep On/Off:

 When this is active, the main CwWave frequency for the component
 page is swept from Sweep E0Start to Sweep EeEnd over the interval
 given by Sweep EdDuration.


Ey ■■  Sweep Sync:

 The Sync control is available whenever ExSweep is active in
 StDynamic RTime mode.  This control only has an effect when the
 TCtrigger Source is set to TGStim.  It has no effect in TSIntern
 mode.

 When you toggle Sync on, it specifies that the trigger sync
 will be to the start of a sweep instead of the zero-crossing
 of the main waveform.

 If the main wave NSReset on Sweep control is active, this will
 result in a stable trace if you are monitoring the signal
 output.  In that case, the main wave phase is forced to the
 NpPhase setting at the start of each sweep.  Otherwise, each
 sweep will start with the wave at whatever phase ended the
 prior sweep; the trace will appear to roll, even though the
 trigger point is indeed at the start of the sweep.  If you
 look carefully, especially on a sweep that covers a large
 frequency range, you can see that the trace appears more
 "open" on one end and more "compressed" on the other.

 There is no "off" toggle:  You must select Sync from some
 other source, either in another Cmmodulator or in the main CfFreq
 submenu, in any CMcomponent page of either DAC, or from a DMDigOut
 setup page.


E0 ■■  Sweep Start:

 This is actually just a copy of the main wave N0Freq control.
 In addition to all its usual features, and use of the NsFstep
 Mode control below it, note that the direction of the sweep
 (up or down) is controlled by the Start-to-End order:  If
 Start is lower than EeEnd, the sweep moves upward.  Reverse the
 order to reverse the direction.


Ee ■■  Sweep End:

 Sets the sweep ending frequency.  This control behaves just
 like the E0Start control in its use of the NsFstep Mode control,
 with the exception that there is no MoOrgan mode.  As noted
 above, if End is lower than Start the sweep direction will
 proceed downward.


Ed ■■  Sweep Duration:

 Sets the duration of the sweep in either samples or seconds,
 depending on the EuSmpls / Sec units setting below.  In StDynamic
 RTime mode the only limit on sweep duration is the 32-bit size
 of the duration variable:  Over 4 billion samples, or roughly
 24 hours at 48000 samples per second.


Eu ■■  Sweep Units (Smpls / Sec):

 This is a global control.  In the Sweep menu it allows easy
 entry of the above Sweep EdDuration in whichever format you find
 most convenient.


El ■■  Sweep Lin/Exp/Step:

 Toggling this control changes the shape of the sweep, or the
 nature of sweep operation.  When set to Lin, the total
 distance of the sweep is simply divided by the duration to
 give a fixed number of Hz per second (or per sample).

 In Exp mode, the frequency at each sample time is the value of
 the prior frequency, times a constant.  Thus, the higher the
 frequency, the faster the motion.  This gives a fixed number
 of octaves per second, rather than Hz per second.

 This is useful for testing many real-world systems which
 exhibit an exponential response; it is necessary to move the
 driving frequency more slowly at lower frequencies to capture
 response details with the same resolution as a faster sweep
 at higher frequencies.

 In Step mode, the basic Sweep operation is changed.  Instead
 of smoothly sweeping from E0Sweep Start to EeSweep End during an
 interval set by EdSweep Duration, the frequency moves in steps
 of size set by the EsSweep Step control.  At each step, the
 frequency stays constant for Sweep Duration, then moves to the
 next step.  The total duration is thus Sweep Duration times
 the number of steps required to move from Sweep Start to Sweep
 End.


Es ■■  Sweep Step Size:

 When the above ElLin/Exp/Step control is toggled to Step mode,
 this control sets the size of each frequency step.  Use this
 just like the Sweep E0Start, EeEnd, or other frequency controls,
 which adhere to the current Mtfrequency adjust step mode (not to
 be confused with this Sweep Step!).  As we'll see below, you
 will usually want to use MnStepN, with the step size set to
 one spectral line.  To do this, go to the MMMisc menu and be
 sure that StepN is active and equal to 1.00 (assuming you are
 using NpN=1024), then return here and set this Sweep Step Size
 to the minimum non-zero value.

 An important application of Sweep Step mode is measuring an
 "ideal" frequency response.  To understand why this is needed,
 consider what happens with a conventional continuous sweep.
 The normal approach is to set up Start and End to cover the
 response region, set the Duration fairly long, and use
 AfSpectral Averaging in A^Peak mode.  By setting the averager
 ASSweeps request to Continuous (by entering 0 or 1), the trace
 will hold the peak value of each FFT.  Over the course of the
 sweep, the peak will move through the entire frequency range,
 and the trace will show the complete frequency response.

 Or will it?  The problem is that unless the FFT sees an exact
 integer number of cycles of an input frequency, it will show
 the spectrum of any fractional cycle as tfleakage from the the
 main peak into adjacent sidelobe or "skirt" regions.  This
 reduces the peak value, with the biggest reduction coming from
 an extra half-cycle, and smaller reductions for smaller or
 larger (closer to the next full cycle) fractions.

 Since the instantaneous frequency is constantly changing, each
 FFT sees a constantly-changing fractional cycle as well, with
 the result that the peak bounces around between the true value
 and something less, giving a ragged-looking response.
 Additional sweeps may result in "filling in" some of the dips,
 but in general this is unsatisfactory.

 The customary way to deal with this leakage problem is to use
 a W0window function with the FFT.  Most window functions are
 designed to give a narrow peak with low sidelobes, but those
 windows still give a sizeable peak error for the "wrong" input
 frequencies.  The WfFlat-Top window has a wider peak and higher
 sidelobes, but gives a fairly flat frequency response when
 used for this purpose.

 However, we can do better.  Using ElSweep Step mode with the
 frequency Step Size set to use unity MnStepN steps, the response
 can be made to proceed through the selected frequencies one
 spectral line at a time.  The response will be absolutely
 correct, and only requires a single pass.

 To use Sweep Step this way, you need to make sure that each
 frequency step lasts long enough for Daqarta to acquire and
 process a full NpN-sample spectrum.  (Note that if you are using
 the response to create a calibration file, you must use 1024
 samples.)  Although it is possible to use StDynamic RsSequential
 mode for this purpose, where the output stops and waits for
 processing after each step, that's not generally the best
 approach.  The reason is that the starts and stops cause
 unwanted transients that could contaminate the response; you
 might get around this using CbBurst mode with a slow BrRise and
 matching TdTrigger Delay, but it would be cumbersome.

 Instead, use Dynamic RrRTime mode so output is continuous.  Set
 the step EdDuration to somewhat longer than 1024 samples; how
 much longer depends upon the speed of your system, but 1500
 samples should be enough for even 486-class systems.  Run a
 few trials with the A^Peak Average to see that you get a
 continuous spectrum.  Missing lines indicate that the system
 is not fast enough for the step duration.

 After you get the complete response, just hit P0Pause whenever
 you want to save it.  (You can save it as a Daqarta data file
 with O0OutDt, a text file with O1OutTx, a bit-map with OsOutSc, a
 Memory trace with MsMemSv, or as a Yvcalibration file.)

 Note that you can greatly speed up the display portion of
 processing by using Line L0display mode (Line1) instead of the
 standard Bar mode (Line2).  In Bar mode you might see a nice
 continuous response at first, and then after a certain time
 you will start to see missing lines.  That happens as the
 filled-in area gets larger and the display requires more time
 to redraw after each FFT.  (The whole display is redrawn, not
 just the new bar.)  Toggling to Line1 can avoid this, without
 the need for longer sweep steps.

 If the response is to go right down to DC (0 Hertz), there are
 additional considerations.  You will of course need to set the
 E0Start frequency to 0, but that simply means that the output is
 a constant voltage for the duration of the first step; it does
 not specify what that voltage will be.  For a sine wave, the
 instantaneous output voltage is determined by instantaneous
 phase, which at 0 Hertz is a constant value.  So if you set
 NpPhase to 90 degrees, the DC output level will be the same as
 the peak of the sine wave.  This is normally what you would
 set for a frequency response, though you might have occasion
 to set 45 degrees.  That gives 0.707 of the peak, which is
 the rmRMS equivalent... it will produce the same heat in a
 resistive element, for example.

 But setting the desired Phase is not quite enough, since this
 only specifies the STARTING phase of the entire stimulus run,
 which may be more than one repetition of the stepped sweep
 series... especially since you will probably want to keep
 repeating the sweep while you make adjustments, etc.  You will
 thus need to activate the NSReset on Sweep option in the CfFreq
 menu, so that the phase is reset to the specified value at the
 start of each sweep.  Otherwise, each sweep will start with
 the same phase as the end of the prior sweep, and the starting
 phase would thus typically change on each sweep.


Cl ■  Level %:

 This scales the full-on level to an arbitrary value.
 It is intended mainly for relative scaling among the wave
 CMcomponent pages.  To adjust overall output level, use the
 SnOutput dB controls.

 Note that Level accepts negative values, which simply indicate
 an inverted version of the signal.  This feature is not only
 more convenient than reversing the output wires, for example,
 but it also allows individual components to be inverted for
 particular auditory tests.  Although simple waves can be
 inverted just by setting NpPhase to 180 degrees, the Level
 method works even with VNnoise-type and VxPlay signals.

 However, this does mean that it is possible to scroll right
 through zero to negative values; there is no "stop" at the
 zero setting.

 Since Level acts on the digital representation of the
 stimulus, it is most definitely NOT a replacement for a
 separate attenuator to control overall level.

 Consider that a full 16-bit DAC would use 65535 steps (+32767
 to -32767) to form a smooth approximation of a sine wave.  If
 you wish to reduce this output by 60 GadB (to 0.1%), the output
 wave would range over only 65 steps... equivalent to a DAC
 with only about 6 bits!  This "chunky" waveform would produce
 considerably more distortion than the original... about 60 dB
 more.

 On the other hand, a separate attenuator that acts on the
 analog output of the DAC can preserve the 16-bit
 approximation and the corresponding low distortion.  This
 could be an internal or external digitally-controlled analog
 0aattenuator (such as the SB16 used with the Output dB
 control), or a manual knob-type unit, or even a simple
 potentiomenter "volume control".

 But attenuators control the overall output level.  If you need
 to control the relative levels of individual component pages,
 you must use the Level controls.  Note that if you have
 multiple components active on the same DAC output, you must
 reduce the Levels of each so that when they are added together
 to produce the final output, the total will not exceed 100%.
 The only exception to this is with bursts that are carefully
 controlled such that they are not fully on at the same time.

 Use the percent values to see that the total is not over 100%.
 If you need further reductions to adjust the levels for your
 application, below is a dB table to guide you.  Note that the
 table is relative to 100% = 0 dB.  If you are starting with
 two components, each initially at 50%, and you want one of
 them to be 3 dB lower, then you must multiply that 50% by the
 3 dB table value of 70.8% to get the final setting of 35.4%.


CA  ──────────────── ATTENUATION VERSUS LEVEL ─────────────────
  dB   Level %    dB   Level %    dB   Level %    dB   Level %
  0.0  100.0      2.0   79.4      4.0   63.1      6.0   50.1
  0.1   98.9      2.1   78.5      4.1   62.4      6.1   49.5
  0.2   97.7      2.2   77.6      4.2   61.7      6.2   49.0
  0.3   96.6      2.3   76.7      4.3   61.0      6.3   48.4
  0.4   95.5      2.4   75.9      4.4   60.3      6.4   47.9
  0.5   94.4      2.5   75.0      4.5   59.6      6.5   47.3
  0.6   93.3      2.6   74.1      4.6   58.9      6.6   46.8
  0.7   92.3      2.7   73.3      4.7   58.2      6.7   46.2
  0.8   91.2      2.8   72.4      4.8   57.5      6.8   45.7
  0.9   90.2      2.9   71.6      4.9   56.9      6.9   45.2

  1.0   89.1      3.0   70.8      5.0   56.2      7.0   44.7
  1.1   88.1      3.1   70.0      5.1   55.6      7.1   44.2
  1.2   87.1      3.2   69.2      5.2   55.0      7.2   43.7
  1.3   86.1      3.3   68.4      5.3   54.3      7.3   43.2
  1.4   85.1      3.4   67.6      5.4   53.7      7.4   42.7
  1.5   84.1      3.5   66.8      5.5   53.1      7.5   42.2
  1.6   83.2      3.6   66.1      5.6   52.5      7.6   41.7
  1.7   82.2      3.7   65.3      5.7   51.9      7.7   41.2
  1.8   81.3      3.8   64.6      5.8   51.3      7.8   40.7
  1.9   80.4      3.9   63.8      5.9   50.7      7.9   40.3

  ┌────────────────────────────────────────────────────────┐
  │ NOTE:  If you set Level to 0.00%, that wave component  │
  │ page goes CxOff and is simply omitted from the output.   │
  │ However, you must always have at least one active      │
  │ component for any Scactive DAC output, so if you try to  │
  │ set 0.00% on the only active page, you will get an     │
  │ mAalert and warning message:                             │
  │                                                        │
  │ 'Must have at least one active page per output.'       │
  │                                                        │
  └────────────────────────────────────────────────────────┘


Co ■  Offset:

 This control will probably be used only rarely by most users,
 if at all.  It shifts the overall waveform up or down by a
 constant (DC) amount.  This will typically require that the
 ClLevel control be reduced correspondingly to prevent the total
 signal from going out of range, which would create clipping
 distortion.

 Since most sound cards block DC from their outputs, an offset
 applied to the signal (assuming no clipping) should have no
 effect.  Lab-type acquisition boards, however, typically do
 allow DC outputs, and this provides a convenient control if
 it is ever needed.

 A more likely use for the Offset control is in conjunction
 with CPPage Modulation, where the signal from one page is used
 to modulate another, rather than being sent directly to the
 output.  For example, if you are using the signal to modulate
 the frequency of another page by serving as its FmFM source,
 the Offset control allows you to bias the modulation so that
 it goes more one direction than the other.



CC COMBINING WAVE COMPONENTS:

 Each wave component page may be set independently, but since
 all components for a given channel are summed, the outputs for
 any components that overlap must not sum to more than 100%.
 For example, if you use two components to create two separate
 sequential tone bursts, you may set both ClLevels to 100%.  If
 the second BrRise starts before the first BfFall is complete, you
 must make sure that the middle of the first Fall comes before
 the middle of the second Rise, or they will total over 100%.
 If they will both be on simultaneously, then you must
 proportion the levels accordingly.

 The stimulus waveform Ytdisplay will show the possible overlap
 areas, but since it is small you should not rely on it to
 insure there is no distortion... compute the sum of Levels if
 there is any doubt.

 If possible, consider putting one component on each output
 channel and sum the DAC outputs externally with a mixer.


CI INTERMODULATION (IM) DISTORTION:

 This is typically a problem when you are generating two tones
 from the same speaker or other source at high sound levels.
 Since any source is nonlinear at high levels, the sound output
 will include not only the two tones you desire (plus harmonic
 distortion products from each), but also intermodulation
 distortion products at inharmonic sum and difference
 frequencies.  You must particularly minimize the
 intermodulation products if you are studying similar products
 that are generated by nonlinearities in the system under
 test... such as an ear or a microphone.

 One approach is to generate the tones from separate DAC
 channels and use them to drive separate amplifiers and
 speakers, with the sound mixed together acoustically.  Since
 air is much more linear than any driver, the intermodulation
 will be greatly reduced.  Some small amount may remain,
 particularly if the sound must be mixed in a closed system,
 due to sound pressure from one source moving the other.
 Note that this technique does nothing to reduce HARMONIC
 distortion, which is generated separately from each source.

 Using the MnStepN mode to generate the two tones will insure
 that they fall exactly on spectral lines, along with all
 harmonic and inharmonic distortion products, to allow simple
 measurements without "tfskirts".


DM
DODigital Outputs (DigOut):
    DxBit On/Off
    DySync
    DuUnits
  PULSE:
    DpPolarity
    DhHigh
    DlLow
  DTTRAIN:
    DsStart Train
    DcCycles
    DwDwell
    DaPad

DbBiphasic Pulse Stimuli - Digital vs DAC


DO
 DIGITAL OUTPUTS (DigOut):

 Use the SxDigOut Setup item on the main menu page to enter the
 setup submenu system.  ESC will return to the main page.

 All 8 digital output bits (bit pages A0-A7, for example) are
 output as a single byte for each sample.  Each bit may be
 independently programmed as a pulse generator that outputs
 either a single pulse of arbitrary polarity and duration, or a
 train of multiple pulses.  Use CTRL-Pg keys to move between
 bit pages.

 Although the DAC VpPulse Wave option can provide easier control
 of levels, and additionally allows Cmmodulation, there are
 numerous applications for a purely digital approach.  In
 particular, the availability of 8 separate outputs and TTL
 drive levels make this a good choice for control tasks, as
 opposed to signal generation.

 In StDynamic RTime mode, the duration of each pulse phase is
 limited only by the 32-bit variable size, which is about 4
 billion samples or roughly 24 hours at a 48 kHz sample rate.
 With one high phase and one low phase, that would give about 2
 days per cycle, but you can create pulse trains with up to 4
 billion cycles... over 23 million years!

 In other modes you are limited by the size of the stimulus
 pBbuffer, which must be shared with DAC outputs as well.  STIM3A
 will prevent entry of any value which would cause the buffer
 limit to be exceeded in these modes.

 When YmPg Mode is set to ALL, there is only one set of bit pages
 available, labeled A0 through A7.

 When Pg Mode is PAIR there are two sets of bit pages, A0-A7
 and C0-C7.  The A set controls the stimulus sequence that will
 be presented at the same time as the A+B components from the
 DACs, while the C set controls the alternate traces when the
 C+D components are being generated.  CTRL-ALT-PgUp or
 CTRL-ALT-PgDn moves between the two sets, while keeping the
 same relative bit page (from A3 to C3, for example).  YdDig Pg
 (in the YMSync menu) must be Ind to allow this independent set
 control, since the Lock A default forces all sets to mirror
 the A set.

 With Pg Mode set to EACH there are four sets of bit pages,
 A through D, corresponding to DAC components A through D.
 As for PAIR mode, the CTRL-ALT-Pg keys move between sets if
 Dig Pg is Ind.


Dx ■  DigOut Bit On / Off:

 This determines whether the bit page (0-7) will be active in
 the output when the main SdDigOut is active.  Setting a bit page
 to Off forces that bit to zero... it does not remain unchanged
 if it was previously set high.

 When SdDigOut is active, you must always have at least one
 active bit page or you will get an mAalert and warning:
    'Must have at least one active page per output.'


Dy ■  DigOut Sync:

 This control is only present in StDynamic RTime mode.  If you
 toggle it on, it selects that DigOut bit page as the main
 trigger sync when TCtrigger Source is set to TGStim.  It has no
 effect in TSIntern mode.

 This is needed in Dynamic RTime mode because all bits are
 completely independent, and may have different repeat
 intervals from microseconds to millenia.  In the other modes,
 bits are independent within a given set of pages, but each
 page is the same duration so the sync is the same for all.


Du ■  DigOut Units (Smpls / Sec):

 This is a global control for the format of timing controls in
 STIM3A.  This allows you to work in whichever format you find
 most relevant for your application.  You can toggle back and
 forth as needed to see the equivalent samples or time.


Dp DigOut Pulse Polarity:

 The Polarity, High, and Low parameters in this section
 define a single pulse interval, which may be repeated as a
 pulse train according to parameters in the DTTrain section.

 When you toggle Polarity from Normal to Invert, the High and
 Low control labels change to indicate the sequence:


 +5   ┌───────────┐
  0 ─ ┘           └─────────────  Polarity Normal
          High           Low



          Low            High
 +5 ─ ┐           ┌─────────────  Polarity Invert
  0   └───────────┘



DhDl ■  DigOut Pulse High / Low:

 The duration, in Dusamples or seconds, that an output bit is to
 remain high or low within each pulse interval.  When DpPolarity
 is Normal, the High phase is before the Low phase, both in
 time and in the menu.  Setting Polarity to Invert reverses
 these.

 If you set only one of these values and leave the other at
 zero, the output will stay at the state of the one you set,
 regardless of the actual value entered.  For example, if Low
 is 0 then any value you enter for High will hold the output
 high.


DT TRAIN:

 The pulse interval defined in the PULSE section above may be
 repeated to form a pulse train:

              ┌──┐    ┌──┐    ┌──┐
 ─────────────┘  └────┘  └────┘  └─────────────────
  │           │ Pulse │ Pulse │ Pulse │           │
                  1       2       3
  │── Start ──│──── Train Cycles ─────│── Dwell ──│

  │─────────── Overall Stimulus Cycle ────────────│



Ds ■  DigOut Pulse Train Start:

 Delay, in Dusamples or seconds, from the start of the overall
 stimulus cycle to the start of the first pulse in the pulse
 train, as defined by the DhHigh / Low durations.  If the pulse
 DpPolarity is set to Invert, the output will be high during the
 Start interval.


Dc ■  DigOut Pulse Train Cycles:

 Number of pulse intervals in the total stimulus, OR, if the
 DuSmpls / Sec units control is toggled to Sec, the total
 duration of these repeated pulses.


Dw ■  DigOut Pulse Train Dwell:

 The delay from the end of the pulse train to the end of
 the overall stimulus cycle.  In RTime modes this is
 contiguous with the DsStart delay of the next cycle.

 In RsSequential modes there will be an additional interval
 between trains, due to processing and display time.  This
 behaves like an extension of the Dwell duration.  Since the
 display time may be variable depending upon the activity of
 the trace, you will probably want to use the TgTrigger Cycle
 control to provide a fixed interval.  You will need to insure
 that the Cycle setting is long enough to include the longest
 display and processing time.  This is best done by increasing
 Cycle until you get SPEC on the 0sSpeed display when the trace
 is as large and as busy as you anticipate, and then add some
 "safety margin" as desired.

 If you have several different pulse trains on different output
 bits, you can use Start and Dwell to control their relative
 timing and Trigger Cycle for overall timing.

 In RrRTime mode, there is no delay for processing and display,
 since that takes place in the background.  You can thus use
 Start and Dwell to control the time between pulse trains.
 (There is no Trigger Cycle option in RTime mode unless you set
 the Trigger Source to TSIntern.)


Da ■  DigOut Pulse Train Pad:

 This is not a control, but an informational display.  Its
 purpose is similar to BpBurst Pad, in that it tells how many
 samples have been automatically added to the effective DwDwell
 to bring the total duration of a bit cycle up to the length of
 the longest concurrent bit cycle.

 Pad is not shown in StDynamic RTime mode.  In other modes, it
 shows only '-NA-' unless the Dxbit page is active and SdDigOut is
 active (although the SoMaster control may be Off).

 This control is not present in Dynamic RTime mode because all
 bits are completely independent.  If you are using this mode
 and specifically want to make a particular bit cycle match
 another bit cycle or the duration of a DAC burst, you can
 toggle RrRTime off (to Dynamic Sequential mode) and note the
 Pad value, then add it to the Dwell value.  That Dwell value
 will then be maintained when you toggle back to Dynamic RTime.

 Note that when using PAIR or EACH YmPage Mode with Dynamic
 RTime, there is not necessarily any correlation between the
 start of the next mode page of one bit output with that of
 another bit or DAC.  Each bit completes the specified pulse or
 train of pulses for page A, then immediately proceeds to the
 next page (B for EACH mode, C for PAIR mode) to begin the next
 sequence.  Use Dwell to force pages to the same alignment.


Db
 BIPHASIC PULSE STIMULI:

 Electrophysiological investigations often use biphasic
 stimulus pulses to avoid delivering a net charge to the
 subject:

   +   ┌─┐         ┌─┐         ┌─┐         ┌─┐
    ───┘ │ ┌───────┘ │ ┌───────┘ │ ┌───────┘ │ ┌────
   -     └─┘         └─┘         └─┘         └─┘

 Typically, the stimulus is given as a current, instead of a
 voltage, so you would need a special voltage-to-current
 source.  Even more importantly, the controlling computer must
 be GIelectrically isolated from the subject.  Special
 transformers or optical isolators may be used to provide the
 electrical isolation, and a separate high voltage battery
 supply is often required to provide the current.

 BIPHASIC STIMULI FROM DIGITAL OUTPUTS:
 If the isolator / current source accepts a proportional
 analog input, this biphasic pattern can be generated by
 summing two mTTTL digital outputs together and using a capacitor
 to remove the resulting DC level:

 +5    ┌─┐         ┌─┐         ┌─┐         ┌─┐       Output
  0 ───┘ └─────────┘ └─────────┘ └─────────┘ └────── A0

 +5 ─────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──── A1
  0      └─┘         └─┘         └─┘         └─┘


 +10   ┌─┐         ┌─┐         ┌─┐         ┌─┐
 +5 ───┘ │ ┌───────┘ │ ┌───────┘ │ ┌───────┘ │ ┌──── Sum
  0      └─┘         └─┘         └─┘         └─┘


   +   ┌─┐         ┌─┐         ┌─┐         ┌─┐         AC
    ───┘ │ ┌───────┘ │ ┌───────┘ │ ┌───────┘ │ ┌──── Coupled
   -     └─┘         └─┘         └─┘         └─┘


 To create the A0 output, set the DhHigh and DlLow controls to get
 the desired pulse width and spacing.  The A1 output will use
 these same values, with a DsStart value equal to the High value
 and DpPolarity set to Invert.  Leave the Train DcCycles set to 1,
 or set both A0 and A1 to the same value to get any desired
 train duration.  A simple circuit to sum these together might
 be something like:


    A0 ──────R0───────┬───────Co──────── AC Coupled
                      │                   Output
    A1 ──────R1───────┤
                      │
                      Rg
                      │
                      │
                     Gnd

 If you want both phases to be equal but opposite (the usual
 case), make resistor R0 = R1.  Typical values might be 10K.
 Resistor Rg attenuates the sum.  If it is the same size as the
 other two, the output will be 1/3 of the TTL levels from the
 digital outputs.  Note that TTL outputs are usually specified
 as a "nominal" 5 Volts, but may in reality be somewhat less.
 They may also contain some low-level high-frequency "trash",
 which wouldn't cause problems in digital circuits but might
 here if the proportional isolator / source you are driving
 can't deal with it.

 Capacitor Co should be made as large as needed to produce
 pulses with tops of acceptable flatness.  If it's too small,
 the flat tops and bottoms of the pulses will tilt like this:

       │\          │\          │\          │\
    ───┘ │ ┌───────┘ │ ┌───────┘ │ ┌───────┘ │ ┌────
         │/          │/          │/          │/


 However, proportional isolator / current sources are rare, due
 to the difficulty of isolating analog signals.  Isolating
 digital signals is much easier, using standard opto-isolators.
 A source using this approach would typically use one digital
 signal to turn the pulse on, and one to invert its polarity.
 Alternatively, it might have a separate input for each
 polarity, though this requires special protection against both
 being active at once.  You can use two Digital Output bits to
 drive either type of device to produce a biphasic stimulus:

 Desired Stimulus from Current Source:
   +   ┌─┐         ┌─┐         ┌─┐         ┌─┐
    ───┘ │ ┌───────┘ │ ┌───────┘ │ ┌───────┘ │ ┌──── Output
   -     └─┘         └─┘         └─┘         └─┘


 Driving Pulse / Invert Source Inputs:
       ┌───┐       ┌───┐       ┌───┐       ┌───┐
    ───┘   └───────┘   └───────┘   └───────┘   └──── Pulse On
         ┌─┐         ┌─┐         ┌─┐         ┌─┐
    ─────┘ └─────────┘ └─────────┘ └─────────┘ └──── Invert


 Driving Separate Polarity Source Inputs:
       ┌─┐         ┌─┐         ┌─┐         ┌─┐
    ───┘ └─────────┘ └─────────┘ └─────────┘ └────── Positive
         ┌─┐         ┌─┐         ┌─┐         ┌─┐
    ─────┘ └─────────┘ └─────────┘ └─────────┘ └──── Negative


 BIPHASIC STIMULI FROM ANALOG (DAC) OUTPUTS:
 If your board has analog output capabilities and you have a
 "proportional" type isolator / current source, you can easily
 create biphasic stimuli using the VpPulse Wave.  This allows
 convenient control over the amplitudes of each pulse polarity,
 as well as use of various Cmmodulators that are not available
 with digital outputs.

 To create a simple pulse train, use the Pulse Wave with the
 CbBurst modulator.  You can set the BrRise and BfFall times to 0
 to give an abrupt onset and offset if you want to emulate the
 digital approach.  The BsStart and BwDwell times are set the same,
 and the BdDuration is set to the equivalent DigOut DcCycle time.


rh
 REVISION HISTORY:

 Version    Released    Changes:

  2.10      8-1-2001    New SnOutput dB allows integrated control
                        of SB16 attenuators and STIM3A output
                        level to give 0.01 dB resolution.

                        pAA: and pUU: configuration parameters
                        added to support Output dB.

                        New EsSweep Step mode allows "perfect"
                        frequency response sweeps without
                        W0window function errors.

                        Interlocks added to prevent certain
                        output toggle sequences from provoking
                        'Too many samples!' error.

                        Bug Fix:  Sample overrun error (due to
                        excessive sample rate on slow system,
                        for example) could cause lock-up.

                        Bug Fix:  NBReset On Burst could remain
                        active after BxBurst was toggled off to
                        Cont mode, causing output glitches.

                        Bug Fix:  Toggling a Cxcomponent page
                        while that DAC was off caused sync
                        loss in the other DAC, if active.

                        Bug Fix:  NpPhase control had no effect
                        in Cont mode.  Although not a problem
                        in most cases, it prevented control of
                        CsSweep starting phase.

                        Bug Fix:  Changes to NySync on Freq or
                        modulators are now properly flagged as
                        setup changes, causing a Mssave prompt on
                        Q0Quit.

                        Bug Fix:  Files opened by STIM3A (VaArb,
                        VxPlay, or MsSetup) were not always closed
                        properly until Quit.  Could possibly
                        have exceeded DOS open file limit.

                        Bug Fix:  STIM3A menu persisted if
                        BiBoard was toggled off, now properly
                        replaced by B1Virtual Source menu.



  2.00a     4-11-2001   Bug Fix:  Use of pSS:+ parameter to
                        auto-load a setup file at session start
                        could cause system lock-up if there was
                        a file error or wrong file format.


  2.00      3-1-2001    Original release of STIM3A, numbered to
                        match required Daqarta version.




 INDEX:
 XfAbsolute Play Rate
 SaAdjust, DAC Components
 SxAdjust, Digital Outputs
 YmAll, Page Mode
 CaAM (Amplitude Modulation) Menu:
 AdA.  Depth
 AzA.  Freq, Modulator
 AxA.  On/Off
 AgA.  Phase, Modulator
 AmA.  Source
 AyA.  Sync
 VaARB Wave:
 UoA.  COMPOSER.S3A Setup File
 UtA.  Creating Arb Values From Text (TXT2DAT)
 UeA.  EXPNOTE.DAT Arb file
 UwA.  File 0-7 Load/Select
 UrA.  Interp / Round / Step Mode
 UsA.  Random selection of Arb values
 pAA: Parameter, Output dB Attenuator Mode
 CAAttenuation vs. Level Table
 SnAttenuator, and Output dB Control
 IpAttenuator Performance Table, ATN-SB16
 pSAuto-Load Setup S: Parameter

 VbBAND / GAP NOISE Menu:
 ZfB.  Fall Fc
 ZrB.  Rise Fc
 ZtB.  Taps
 ZwB.  Window
 VpBiphasic DAC Pulses
 PbBiphasic Pulse Level Mirror
 PBBiphasic Pulse Width Track
 DbBiphasic Stimuli, DigOut and DAC
 SbBits, DAC Resolution
 VkBrown Noise
 pBBuffer Size, Setting with B: Parameter
 pbBuffer Size vs Output Samples
 MnBuffer Size vs StepN
 CbBURST Menu:
 BdB.  Duration
 BwB.  Dwell
 BeB.  Example - Auditory Evoked Resposes
 BEB.  Experiment - Rise/Fall vs Spectral Width
 BfB.  Fall
 BxB.  On/Off (Burst/Cont)
 BpB.  Pad
 BrB.  Rise
 BSB.  Shape
 BsB.  Start
 ByB.  Sync
 BuB.  Units (Smpls / Sec)
 XbBurst Mode, Play Wave (Single / Repeat)
 NBBurst, Reset On

 EsCalibration Files, Creating with Sweep Step
 TdComb-Filtered Noise
 CCCombining Wave Components, Level Considerations
 CMComponent, DAC Page Submenus
 p0Configuration Parameters
 DxContinuous / Burst Control
 StContinuous Waves with Dynamic RTime
 MnContinuous Waves with StepN
 UoCOMPOSER.S3A Setup File
 TrCopy / Randomize Noise Generator
 BSCosine Power, Burst Rise/Fall
 DcCycles, DigOut Pulse Train

 ScDAC 0 or DAC 1 Activate
 SaDAC 0 or DAC 1 Setup Menu, Entering
 SndB, Output Control
 CAdB vs. Level Table
 mDDDisk and Factor
 BsDelay, Burst Start
 DsDelay, Digital Output Pulse Train Start
 TdDelay, Random Generator
 FdDeviation (Depth), FM
 VgDeviation, Standard (Gaussian Noise)
 IdDEMO.ADC "Board" Driver
 AdDepth, AM
 FdDepth (Deviation), FM
 AdDepth, Phase / Slope / Width Modulation
 DMDIGITAL OUTPUT Adjust Menu:
 DcD.  Cycles, Pulse Train
 DwD.  Dwell, Pulse Train
 DhD.  High Duration
 DOD.  Introduction
 DlD.  Low Duration
 DxD.  On/Off, Bit Page
 DaD.  Pad, Pulse Train
 DpD.  Polarity
 DsD.  Start Delay, Pulse Train
 DyD.  Sync
 DTD.  Train
 DuD.  Units (Smpls / Sec)
 SdDigOut Activate
 SxDigOut Setup Menu, Entering
 YdDig Pg, Ind / Lock A
 MtDirect Frequency Adjust Mode
 YtDisplay of Stimulus Traces
 YvDisplay Page, Default (View)
 CIDistortion, Intermodulation
 VgDistribution, Gaussian (Normal)
 VwDistribution, Uniform
 SbDither Demonstration
 S0Dual DAC Outputs
 BdDuration, Burst
 EdDuration, Sweep
 BwDwell, Burst
 DwDwell, DigOut Pulse Train
 StDynamic / Static Mode

 EeEnd Frequency, Sweep
 YeError, Maximum Sync (Jitter)
 BEExperiment, Rise/Fall vs. Spectral Width
 UeEXPNOTE.DAT Arb File
 BSExponent, Burst Rise/Fall Shape
 ElExponential Sweep

 MfFactor, Oversampling
 mDFactor, Sampling and DDisk
 TfFactor, Slow Timing
 TxFactor, Step Timing
 BfFall, Burst
 ZfFall, Noise Band Fc
 IfFeatures, STIM3A
 UwFile Format, Arb
 XwFile Format, Play
 CFFM (Frequency Modulation) Menu:
 FdF.  Deviation (Depth)
 FzF.  Freq, Modulator
 FxF.  On/Off
 FgF.  Phase, Modulator
 FmF.  Source
 FyF.  Sync
 ZfFM / Swept Noise Band
 AzFrequency, AM Sine Modulator
 FzFrequency, FM Sine Modulator
 WzFrequency, Phase / Slope / Width Sine Modulator
 CfFREQUENCY, Main Wave Control Menu:
 N0F.  Freq Control
 NpF.  Phase
 NBF.  Reset on Burst
 NSF.  Reset on Sweep
 NsF.  Step Mode
 NyF.  Sync
 IpFrequency Response, ATN-SB16 Attenuator
 EsFrequency Response Measurement
 MtFrequency, Step Adjustment Modes
 CsFrequency Sweep
 XsFrom, Play Wave Start Point
 VNFrozen Noise

 VbGap / Band Noise
 VgGaussian Noise Source
 GpGaussian Standard Deviation Control
 GnGaussian Standard Deviation, Negative

 pFHelp File Omit, F: Parameter
 DhHigh Duration, DigOut Pulse
 VxHIMEM.SYS for Play Files
 VgHistogram, Gaussian Source
 MfHypersampling, and Sample Factor

 YdIndependent DigOut per Page
 pBINIT Line, Setting Buffer Size
 CIIntermodulation Distortion
 UrInterp / Round / Step Mode
 I0Introduction to STIM3A

 YeJitter (Maximum Sync Error)

 MoKeyboard, Organ Frequency Step Mode
 UeKeys, Musical Note Frequencies in EXPNOTE.DAT

 CCLevel, Combining Wave Components
 PaLevel, Pulse Wave A and B
 PbLevel, Pulse Wave B Mirror
 P0Level, Pulse Wave Zero (Baseline)
 ClLevel, Wave Component
 CALevel, vs. Attenuation
 BSLinear Burst Rise/Fall Shape
 ElLinear Frequency Sweep
 YdLock DigOut to Page A
 DlLow Duration, DigOut Pulse

 SMMAIN MENU:
 SbM.  DAC Bits
 ScM.  DAC Output Toggle
 SaM.  DAC Setup
 SxM.  DigOut Setup
 SdM.  DigOut Toggle
 S0M.  Dual DAC 0
 S1M.  Dual DAC 1
 SiM.  Introduction
 SnM.  Output dB
 SoM.  Master On / Off
 StM.  Static / Dynamic
 SsM.  Swap DACs
 SoMaster On/Off Control
 YeMaximum Sync Error (Jitter)
 pBMemory Buffer
 SMMenus, Top Level
 PbMirror, Biphasic Pulse Level
 MMMISCELLANEOUS Menu:
 MfM.  Factor, Oversampling
 MtM.  Freq Step Mode / Step Size
 MlM.  Load Setup
 MsM.  Save Setup
 ImMode Selection, Dynamic/Static and RTime/Sequential
 CPModulation, Component Page
 PmModulation Type, Pulse Wave (Phase / Width)
 RmModulation Type, Ramp Wave (Phase / Slope)
 CaModulator, Amplitude (AM)
 CFModulator, Frequency (FM)
 CpModulator, Phase / Slope / Width
 MmMusic Frequency Adjust Mode
 UoMusic Composer Setup COMPOSER.S3A
 SnMute, Output dB

 ZfNoise, Band FM/Sweep
 VkNoise, Prown
 TdNoise, Comb-Filtered
 VNNoise, Frozen
 VNNOISE Waves:
 VbN.  Band / Gap
 VgN.  Gaussian
 VkN.  Pink
 VwN.  White
 VgNormal Distribution, Noise

 ToOrder, Timing Smooth / Quant
 MoOrgan Frequency Adjust Mode
 MfOversampling, and Sample Factor
 M8Octave Frequency Adjust Mode
 mOOctaves and Ratios
 SnOutput dB Control

 BpPad, DAC Burst
 DaPad, DigOut Bit Page
 YmPage Mode: ALL, PAIR, EACH
 CPPage Modulation
 p0PARAMETERS, Configuration:
 pAP.  A: Attenuator Mode, Output dB
 pBP.  B: Buffer Size
 pFP.  F: Help File Omit
 p1P.  Overview
 pRP.  R: Randomize All Random Sources
 pSP.  S: Setup Auto-Load
 pbP.  Samples vs. Buffer Size
 pUP.  U: Up Scroll Preference, Output dB
 MlPath, Arb and Play Files
 AgPhase, AM Modulator
 FgPhase, FM Modulator
 NpPhase, Main (Carrier) Wave
 CpPHASE / SLOPE / WIDTH MODULATION Menu:
 WdP.  Depth
 WzP.  Freq, Modulator
 WxP.  On/Off
 WgP.  Phase, Modulator
 WmP.  Source
 WyP.  Sync
 EsPhase, Sweep
 VkPink Noise Generator
 VxPLAY Wave Menu:
 XbP.  Burst (Single / Repeat)
 XwP.  File 0-7 Load/Select
 XsP.  From - File Ptr
 XrP.  Interp / Round / Step Mode
 XfP.  Rate (Abs/Rel)
 XeP.  To - File Ptr
 XuP.  Units (Smpls / Sec)
 DpPolarity, DigOut Pulse
 YpPulse (Digital) Instead of Full Digital Output
 VpPULSE Wave Menu:
 P0P.  0 Level
 PaP.  A Level
 PAP.  A Width
 PbP.  B Level
 PBP.  B Width
 PmP.  Modultion Type
 PMP.  Width Adjust Mode
 PmPWM (Pulse Width Modulation)

 TqQuantize, Noise / Arb / Play
 MsQuit, Prompt for Setup Save

 VrRAMP Wave Menu:
 RmR.  Ramp Modulation (Slope / Phase)
 RrR.  Ramp Rise
 RsR.  Ramp Stairs
 VNRandom Generators
 UsRandom Selection From Arb
 TrRandomize / Copy Noise Generator
 pRRandomize R: Parameter
 XfRate, Play File Playback
 mORatios and Octaves
 NBReset On Burst
 NSReset On Sweep
 rhRevision History
 BrRise, Burst
 ZrRise, Noise Band Fc
 RrRise, Ramp
 BeRise/Fall Practical Example
 BERise/Fall vs. Spectral Width
 BSRise/Fall Shape
 UrRound to Nearest Arb Value
 XrRound to Nearest Play Value

 MfSample Factor (Oversampling)
 BuSamples / Seconds Units
 pbSamples vs Memory Buffer Size
 UsSelect Random Value From Arb
 SaSetup Enter, DAC
 SxSetup Enter, DigOut
 pSSetup File Auto-Load
 UoSetup File, COMPOSER.S3A Example
 MlSetup File Load
 MsSetup File Save
 CMSetup Menu, DAC Component Page
 DMSetup Menu, DigOut Bit Page
 BSShape, Burst Rise/Fall
 TdShift, Random Source Timing
 VsSine Wave Type
 CpSlope Modulation - Ramp Waves
 RmSlope Modulation, Selecting
 TfSlow Timing Factor
 TlSlow Timing Mode
 AmSource, AM Modulator
 FmSource, FM Modulator
 WmSource, Phase / Slope / Width Modulator
 TsSpec Mode, Timing
 MnSpectral Line Alignment of Frequencies
 BESpectral Splatter and Rise/Fall, Experiment
 IsSpeed, CPU vs. Sample Rate
 VqSquare Wave Type
 RsStaircase Wave
 GpStandard Deviation, Gaussian Noise
 BsStart, Burst Delay
 DsStart, Digital Output Pulse Train Delay
 E0Start Frequency, Sweep
 StStatic / Dynamic Mode
 UrStep Mode, Arb Wave
 XrStep Mode, Play Wave
 ElStep Mode, Sweep
 EsStep Size, Sweep
 TxStep Timing Factor
 TtStep Timing Mode
 MzStepHz Frequency Adjust Mode
 MnStepN Frequency Adjust Mode
 BdSustain (Duration), Burst
 SsSwap DAC Outputs
 CsSWEEP Menu:
 EdS.  Duration
 EeS.  End Freq
 ElS.  Lin/Exp/Step
 ExS.  On/Off
 NSS.  Reset Sync
 E0S.  Start Freq
 EsS.  Step Size
 EyS.  Sync
 EuS.  Units (Smpls / Sec)
 NSSweep, Reset On
 ZfSwept / FM Noise Band
 YMSYNC Menu:
 YdS.  DigOut Page
 YtS.  Display Mode
 YeS.  MaxErr (Dynamic RTime)
 YyS.  Page
 YmS.  Page Mode
 YpS.  Pulse Out, Digital
 YvS.  View Page
 AySync, AM
 BySync, Burst
 DySync, DigOut Bit
 FySync, FM
 NySync, Main (Carrier) Freq
 VNSync, Noise Waves (Timing Step)
 WySync, Phase / Slope / Width Modulation
 EySync, Sweep Frequency

 ZtTaps, Noise Band
 UtText-to-DAT File Utility (TXT2DAT)
 VkTilt, Pink Noise Slope Correction
 I0Time Limit, Unregistered Users
 TMTIMING Menu:
 ToT.  Order, Smooth - Quantize
 TqT.  Quantize
 TrT.  Randomize / Copy
 TdT.  Shift Random Source
 TfT.  Slow Factor
 TlT.  Slow Mode
 TmT.  Smooth TC
 TsT.  Spec Mode
 TxT.  Step Factor
 TtT.  Step Mode
 TuT.  Units (Smpls / Sec)
 XeTo, Play Wave End Point
 SMTop-Level Menus (Main, Sync, Misc)
 PBTrack, Biphasic Pulse Width
 DTTrain, Digital Output Pulse
 VtTriangle Wave Type
 SbTriangular Distribution, Noise
 YpTrigger Pulse Output

 VwUniform Distribution, Noise
 BuUnits (Smpls / Sec)

 YvView, Default Display Page

 Uw.WAV Files, Arb
 Xw.WAV Files, Play
 CwWAVE Menu:
 VaW.  Arb
 VbW.  Band, Noise
 VgW.  Gauss Noise
 VNW.  Noise - General
 VkW.  Pink Noise
 VxW.  Play File
 VpW.  Pulse, Mono / Biphasic
 VrW.  Ramp / Staircase
 VsW.  Sine
 VqW.  Square
 VtW.  Triangle
 VwW.  White Noise
 PMWidth Adjust Mode, Pulse Wave
 CpWidth Modulation
 PAWidth, Pulse Wave A and B
 PBWidth, Pulse Wave B Tracking
 BSWindow Function, Compared to Burst Shape
 EsWindow Function, Using With Sweep
 ZwWindow, Noise Band

 VxXMS (Extended Memory System) for Play Files

 Copyright 2001 by Interstellar Research.
 All rights reserved.
00I0IfImIsIdp0p1pApBpbpFpRpSpUSMSiSoStScSbSaSnIpSsS0S1SdSxYMYmYyYeYtYvYdYpMMMtMzMnM8mOMmMoMfmDMsMlCMCxCwVsVtVrRrRsRmVqVpPAPBPaPbP0PMPmVaUwUrUsUtUeUoVxXwXsXeXuXbXfXrVNVwVgGpGnVkVbZrZfZtZwCfNyNpN0NsNBNSTMTsTlTtTfTxTuTmTqToTrTdCmCPCbBxByBuBSBsBrBEBeBdBfBwBpCaAxAyAmAzAdAgCFFxFyFmFzFdFgCpWxWyWmWzWdWgCsExEyE0EeEdEuElEsClCACoCCCIDMDODxDyDuDpDhDlDTDsDcDwDaDbrhABCDEFGHIJKLMNOPQRSTUV:WXKoM╥,═3/<Y=I?TDWH├K¡NαSßZ■^bLjoσ@ü▌êùè≡£╡úφñVº¿Ω¿┌⌐φ⌐Ä¡Γ│(╝Ä└╤┴ä╞[╤n╤∞╫9┌╝ΣrΘSε╜±∙ⁿ,a ╓,[.I1 2░3B5^6793;<╖>Å?jBEfIÜMαNªSvVi<ro}»à╦Ä╦ÿ█ús¼_«⌡«╬»û▒┘╢█║q╚ ═'█▄ÇαX≡t±x±╜0xí$Ñ0║3┘7r;■?yCEFaO╓S┌S@V.X┤\╥aïbÇkk{?|ô└û¢ûƒ1íK▒O┤╠╖╥╜╜┬P├┼=╞/═z╧	╨▐╥g╒╩╫║Γ┬Σ;τ╩τBδ╫φí⌡╖°└∙J²▄²τG
╬ÜL£]H$c<⌠FO1SWå\û]½fhhòj╕kßmσmp▒q≤r╜s²xé~φÆ9¥H¥á≈ó┤ñé⌐J¬╫¡b«»╕»▄»<░ä▒?╡╢┌╢º╗ε╗*╛╩┼X╚û╚╣╚µ╚Θ╩e╧╦">-╫¥₧√