DIGITAL SIGNAL PROCESSING (DSP) OPERATIONS
Generate a Pure Tone
To generate a pure sine wave digital signal, select DSP/Generate Pure Tone from the menu. A Wave Generator dialog will appear with default frequency, sampling rate, and number of samples. Change these to anything you like. Click on OK. The newly created digital signal will then be created and exist in program memory. To visualize the data vector, click on the View Data button. This data can be saved as a WAV or AIF file using the File/SaveAs menu selection. You will be prompted to enter a sampling rate, bits per sample, and number of channels. To have the WAV file accurately reproduce the synthesized tone on playback, you must enter the same sampling rate that you designated when you built the data set, always use 16 bits per sample, and 1 channel. Note that the data set is represented by sine wave function with varying amplitude roughly between -32767 and 32767 which are arbitrarily selected maxima and minima to avoid distortion. A sampling rate of 44100 means that continuous (analogue) sound data was sampled 44, 100 times each second to produce the digital data set. The current program only allows for sampling rates of 44100, 22050, and 11025. The designated frequency, say 440, means that the sine wave data has playback frequency of 440 kHz. Only 16 bit samples are allowed.
Plot Wave Data
While the primary purpose of the application is to generate 3D surfaces, it is often useful to visualize sound samples in 2D. This is particularly true if you wish to analyze a recorded sound for inherent frequencies, or if you just want to see what a certain sound sample looks like. Using the polyline approach with a single cycle, you can plot a 2D waveform. SoundPlot provides another alternative that utilizes the accompanying LineGraph application module.
To view a 2D plot of sampled data, first load in the data file (WAV, AIF, or MTX). Next, you will want to sample to size the data set so that it is no greater than 4000 samples (LineGraph will not handle larger samples). Then, select DSP/Plot Wave Data from the menu. A 2D plot of your sample will appear. For example, the 2D plot of a chirp of 256 samples appears as follows.

You should consult the LineGraph help files for more detailed information on how to use the plotter.
Sampling Data
SoundPlot provides three methods for sampling digital data.
Sample Data By Interval
Given a digital sample consisting of of 100 sample frames,
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . . . | | | | | | | | | |
Sampling this data set by interval, where the starting frame is 1 and the interval is 2 will produce a digital sample consisting of 50 sample frames since every other one of the original frame set is preserved in the new sample.
| | | | | | | | | | | | | | | . . . | | | | |
Sample Data To Size
It is often desirable to obtain a sample of a specific size. The algorithm that SoundPlot uses to accomplish this uses a uniform sampling interval of 2 (samples every other sample frame), and automatically calculates where to start from in the original data set in order to end up with a new sample of the specified size.
Sample Data Segment
Should you wish to sample a contiguous segment of a data set, you can accomplish this by designating the start and end frames. For example, given a digital sample consisting of of 100 sample frames,
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . . . | | | | | | | | | |
if you select the start frame as 10 and the end frame as 20, you will produce a new sample containing 11 sample frames which will include both the 10th and the 20th frame of the original sample.
| | | | | | | | | | |
The Fast Fourier Transform
Very briefly, a time domain graph shows how a signal changes over time, whereas a frequency domain graph shows how much of the signal lies within each given frequency band over a range of frequencies. A frequency-domain representation can also include information on the phase shift that must be applied to each sinusoid in order to be able to recombine the frequency components to recover the original time signal. The instantaneous or local phase of a complex-valued function x(t) is the real-valued function phi(t) = arg(x(t)). The arg function is a logical function that extracts the angular component (sometimes called the phase angle) of a complex number or complex-valued function. The angular component is also referred to as the argument. This can be computed for any complex number z = (x + i y) as arg(x + i y) = atan(y / x).
Time Domain Graph

Frequency Domain Graph

Note: The frequency domain plot above was obtained by plotting the real values of the FFT:Time To Frequency Domain results. The spike at 110 cps is the dominant frequency present in the signal. The spike at about 440 cps is a prominent harmonic frequency.
Values of the FFT : Time to Frequency Domain
| Time Domain | Frequency Domain | |
| Real Value | Real Value | Imaginary Value |
| 28423.000 | 21534.000 | -3763.000 |
| 31955.000 | 21701.428 | -4013.755 |
| 29491.000 | 21888.767 | -4275.856 |
| 14132.000 | 22066.056 | -4547.624 |
| -7405.000 | 22242.996 | -4814.573 |
| -25705.000 | 22427.406 | -5098.462 |
| -32766.000 | 22589.765 | -5359.787 |
| -25501.000 | 22769.312 | -5640.208 |
| -7086.000 | 22951.168 | -5935.068 |
| 14427.000 | 23128.258 | -6213.420 |
| : | : | : |
Note: The process can be reversed by invoking the FFT:Frequency to Time Domain operation which converts the data back into the time domain by using the inverse FFT. However, the result of this process leaves the data in a complex format. You may notice that this form is simply the original time domain data displayed alternately as real and imaginary values. This format is a product of the standard FFT algorithms used. You can fully restore this complex data (spectra) to the original signal sample by use of the FFT:Store Complex Spectra operation. The inverse operation, FFT:Unpack Complex Spectra, can be used to represent stored complex spectral data as separate real and imaginary data vectors.
Wavelets and Wavelet Packet Transforms
A wavelet is a mathematical function used to divide a given function or continuous time signal into different frequency components and study each component with a resolution that matches its scale. A wavelet transform is the representation of a function by wavelets. The wavelets are scaled and translated copies (known as "daughter wavelets") of a finite-length or fast-decaying oscillating waveform (known as the "mother wavelet"). Wavelet transforms have advantages over traditional Fourier transforms for representing functions that have discontinuities and sharp peaks, and for accurately deconstructing and reconstructing finite, non-periodic and/or non-stationary signals. For more information and examples, see Wavelets.