Digital Delay

Table of Contents

Quick Start

What's New

Introduction

Delay Parameters

Options Menu

Usage Notes

Miscellaneous

Copyright ©1995, Ted Felix.

This is Freeware.  Enjoy it!


Quick Start

Since you are viewing this help file, I assume you have unzipped the ddelay??.zip file into a directory.  To hear what it can do, plug a microphone into the Line Input, not the microphone input, of your Mwave-based sound board.  Assuming a set of powered speakers is attached to the Line Output of the Mwave board (and turned on), run delay.exe either through File Manager, or from Program Manager (File | Run).  Once it is running, click on Options, then click on Instrument.  Talk into the microphone.  Play with the various parameters.  Don't push the feedback too high, or you may damage more than your ears.


Introduction

Digital delay is an effect that is more commonly known as echo.  It is used in recording to add depth to sound.  It can also be used for many other applications.  The Delay Time parameter is the time between echoes.  Feedback allows you to specify how much of the echo effect should be fed back into the input so that it continues to echo.  Mix Level sets the amount of effect sound to be mixed with the direct input (100% is all effect/no direct, 0% is all direct/no effect).  Output Level will let you set the volume of the output.

Two input levels are selectable via the Options pulldown menu.  Line Level is for inputs like a CD player plugged into the back of the sound card.  Instrument is perfect for an electric guitar, or keyboard.  Microphones will also work at Instrument level, although they might sound a bit quiet.  See usage notes for more details.

Always keep the feedback and output level parameters at reasonable levels.  Increasing the feedback too high can cause runaway echoes that will build up to the point of clipping.  This does not sound pleasant, not to mention what it can do to speakers.  The output level has an extremely (perhaps absurdly) wide range.  Use this parameter with care.  Feedback on the sound card may occur when the Output Level is too high.


Delay Parameters

Parameter		Description
Delay Time (msec)	-	Time between echoes.
Feedback%	-	Amount of echo fed back into the input causing repeating echoes.
Effect Mix%	-	Amount of echo signal versus the original signal.  100% is all echo effect.  0% is no echo effect, all original signal.  50% is an even mix of the two.
Output Level%	-	Volume level of the output.


Options Menu

Two input level options are available in Digital Delay, Line Level and Instrument.  Use Instrument to play around with a microphone.  It's a little quiet, but it works.  I have found the mic preamp in the WindSurfer (and OfficeF/X) to be a bit noisy and sensitive to crosstalk with the output.  For Pro-Audio applications, this is unacceptable, so I've limited the selection.  When I add digital input attenuation, a "mic level" input selection may be made available.  See the Introduction for more info.


Miscellaneous

Files

DELAY.HLP	-	What you are reading
MWAVE.TXT	-	Contains info on IBM's Mwave* technology.
README.TXT	-	Covers installation points.
LEGAL.DOC	-	The legal disclaimers, and copyright notice.
DELAY.EXE	-	The Windows executable
DELAY.DSP	-	The DSP executable module
WPP.DLL	-	The Windows++ Object-Oriented Class Library (see the usage notes)
DELAY.INI	-	Created in the \WINDOWS directory to keep delay parameters from one run to the next.

Specifications

This program uses the 44.1kHz Analog-Digital, Digital-Analog converters on the IBM WindSurfer* board.  The specs of the board are the specs of this effect.  The WindSurfer* was rated in PC Magazine (April 12, 1994) as follows:

Frequency Response	:	20Hz-20kHz (+0.5, -2.0dB)
Total Harmonic Distortion	:	.017%
Signal to Noise Ratio	:	Better than 73dB unweighted

Effect Parameter Ranges...

Parameter		Range
Delay time	:	Approximately 0-700msec (Depends on free DSP memory)
Feedback	:	-100% to +100%
Effect Mix Level	:	0-100%
Output Level	:	+ or - 12,799%  Although I don't recommend it!


What's New

Version 1.1

Small scrollbars to the right of the parameter fields to make "Spin Boxes".  Windows 95 has these as standard controls.  I wish Windows 3.1 did too.

Dynamic allocation of memory.  It should work on an AudioVation adapter now.

This help file.  I spent a day or so learning how to create help files.  It's not as bad as anyone says it is.  As a matter of fact, it's fun.

An INI file.  Now the last set of delay parameters is saved on exit and restored at startup.  The Line/Instrument Level setting is also saved.


Usage Notes

 (In no particular order)

Conflicts with the "Mwave Audio Control" application may occur.  Depending on the version of Audio Control (the mixer), one of two things might happen:

If the mixer has reserved the Line In and Out ports exclusively, Digital Delay will complain that someone else is using the ports ("Input Connection failed.  Another application is using the Line Input...").  Try clicking on the "Audio" button in the Audio Control window.  This should release the exclusive reservation.

Some versions of Audio Control go for shared reservation of the Line In and Out ports.  This means that as long as the "Aux" slider is turned up (and the Master), the input will always go directly to the output.  Digital Delay will still work, but setting the Effect Mix % to 100 will not eliminate the direct signal.  The solution is to simply turn down the Aux slider in the Audio Control window.

Clipping will occur, and it will be very harsh.  Instead of normal clipping (stopping at max a.k.a. "saturation"), this will wrap around (from full negative to full positive and vice versa), making clipping extremely noticeable.  Version 2.00 of the WindSurfer software included a really nice standalone Peak Meter that could be used to monitor the raw input.  That has unfortunately been removed from v3.00.  Looks like another project for me.

Input is from the Left channel only.  Output is to both Left and Right.

Version 1.1 and above do dynamic allocation of DSP memory.  Note that many other Mwave functions also dynamically allocate DSP memory.  As an example, Digital Delay can be brought up in its default state while the Mwave modem is up.  Now try to use the modem.  It will complain about a lack of resources.  The Mwave modem uses very little memory when idle.  When making a connection, it apparently allocates more memory than the 512 bytes that Digital Delay leaves available by default.

At this moment, playing the MIDI synth, or WAV files through Digital Delay is not possible.  Due to the lack of a standard for the way MIDI synth and the WAV audio drivers talk to the card's outputs, this would be rather difficult to implement.  MIDI synth and/or the WAV drivers would need to be routed to Digital Delay's inputs, and Digital Delay's outputs to the card's outputs.  Hopefully, IBM will standardize a way for breaking/making connections that exist within their own drivers.  In the meantime, we'll have to wait.

Parameters are now saved in an INI file and recalled at startup.

An "INI file only" parameter will appear after Digital Delay is first run.  In the [Hack] section, you will see a DelaySize= entry.  This will allow you to play with the size of the delay line allocated by Digital Delay.  A negative number means, "allocate the largest possible delay line minus this many samples."  A positive number means, "allocate a delay line this many samples long."  In the future, this will probably be accessible to the user in a more friendly fashion.

The option to save sets of parameters would be nice, especially when more effects are added (like equalization, reverb, stereo chorus...).

Uses a heavily modified version of Paul Dilascia's Windows++ Library for C++.  See his book "Windows++" for more details.  Windows++ has a few more features than Borland's Object Windows Library (OWL).  It is, however, buggy, and needs a bit of work to be used in a final product.  Overall, I am very satisfied with it, and learned a lot about Windows in the process of incorporating it.  I highly recommend the book.  It is a great lesson in Object Oriented design and implementation in C++.  This program was written entirely in C++ using Object Oriented Analysis and Design to model the various Mwave* concepts (modules, tasks, segments...).  Because of its high degree of reuseability, I'm hoping that future effects will be trivial to implement.

The Latest Version

The latest version of Digital Delay will always be available from the SimTel repository at:

ftp://oak.oakland.edu/SimTel/win3/sound/ddelay??.zip.

Contacting me

Internet	:	tfelix@clark.net http://www.clark.net/pub/tfelix/html/ ftp://ftp.clark.net/pub/tfelix
BBS	:	Waldo's Magic, 301-929-1722   My User ID: Felix
Mail	:	Ted Felix 18700 Walker House Rd. #607 Gaithersburg, MD 20879-2556
Phone	:	(703)-904-9007 (Work) (301)-926-9774 (Home)

I fully support the Freeware concept.  If, however, you want to support my efforts, feel free to send large amounts of currency.  A note that you are using it would be equally appreciated.  The more notes, the more likely new effects will be implemented.

Mwave, AudioVation, and WindSurfer are registered trademarks of International Business Machines Corporation.  OfficeF/X is a registered trademark of Spectrum Signal Processing.