Additional features described below have been added since the document above has been written.
An undersampler which allows for both integer and fractional time compression of wave files has been added. It has two modes of operation. In the integer mode it retains one sample per N samples, N being a user input parameter. This was originally used to allow recording of slow time varying systems. An example is a temperature control chamber which was allowed to heat up and cool down over a period of 10 minutes. This yielded 6.6 millions samples. By using a compression factor of a 1000, the file size was reduced to a more convenient size for analysis. The loss of data was not a problem due to the extremely low frequencies involved. The fractional time compression features allows rejection of one sample per every N samples. I have used this feature extensively to change the pitch of music samples on the scale. The octave on the musical scale consists of 8 logarithmically spaced notes (ABCDEFGA). Rejecting 1 sample in 9 raises the pitch of a sample by a note. To raise further the software module is applied recursively.
The product mixer module, mimics a harmonizer. It takes two files and multiplies the values on a pointwise basis. This effectively amplitude modulates one file with the second. This feature simulates the modulator or mixer as commonly known as a piece of hardware. It can produce some pretty strange sound effects on music and vocals also.
The statistical distribution analysis module, operates exactly as the name suggests. It takes a user inputted N samples and takes a tally in M user inputted "bins" across the magnitude range 0-255. The result is given as a plot of frequency of occurrence in the Y axis versus magnitude "bin" on the X axis. It is useful to see what bias appears on a signal and whether the signal is symmetrical. It also gives a clear picture of the excursions of a signal and the telltale signs of clipping and other non-linear amplitude compression.
The amplitude excursion, headspace test, gives a quick numerical indication of how many bytes in a file lie past a user defined distance away from the zero bias point. This is used as a check to determine is the file will be driven into clipping, before other operations are applied to it.
Preconfigured Low-pass and High-pass filters now appear as software modules. These are TVFIR filters built the same as the main TVFIR module, that automatically generate the (sin(X)/X) coefficients for the user. The user needs only to specify a cutoff frequency in terms of a fraction of the Nyquist limit.
Out of the preconfigured LPF and HPF modules is spawned the multiresolution frequency and time analysis module. This uses the same (sin(X)/X) function as the mother wavelet. The resolution operator is specified in terms of a fraction of the Nyquist limit, as was the case for the preconfigured filters. This couples the resolution with the order of the filter. Higher orders occurring at lower frequencies where they are applicable and can be supported. Supported means, the uncertainty principle comes into play here, so it makes sense to adjust the filter orders according to frequency scale. This adjustment comes naturally out of the way the specification of resolution is made internal to the software. The software module operates by recursively splitting an input wave file into fractional frequency sub-bands which are themselves stored as labeled wave files. By labeled, I mean each one is given a unique letter designator followed by the .WAV extension. These files then can either be analyzed individually by observing them in time domain individually. Or they can be all fed through the time domain display to produce a set of output files which then can compiled for 3D plotting. (12/2/1999)
Below is the main menu for the DFP software I wrote. It illustrates all of the functions
currently available. In the future it will be expanded further to handle
specialized sampling techniques for audio and music.
Original Build Date:07-18-2005
Last updated 12-23-2005