An Object Oriented Approach to a Digital Signal Processing Environment
Going through old papers, I found this paper I wrote in but never published in 1991. Gosh, I've been poking away at these problems for a long time. Unfortunately, only part of the first page survives. I've transcribed it here verbatim.
Abstract Building upon two basic object classes, Graphic Objects and Actions, it is possible to rapidly implement complicated environments whose functionality is specified in terms of the interactions between the Graphic Objects and Actions. In addition, object oriented principles are used to construct a class of Digital SIgnal Processing (DSP) objects called Filters which allow easy procedural specification of DSP dataflow. In order to demonstrate the simplicity of this approach, we shall consider the difference between functional specifications and procedural specifications by examing Graph Objects, Actions, and Filters in detail. Introduction This paper reports observations on object oriented programming design during the design, implemenation, and use of an interactive Digital Signal Processing environment. Many versions were tried and tested over a period of two years, finally resulting in the system presented here. The project was prompted by the need to have certain facilities readily available in a context where algorithms and functionality would be easily prototyped and developed into standalone packages comprising the desired functionality and an attractive user interface. An object oriented approach was adopted because of the perceived ease of reusability, and the fact that encapsulation of data and methods within individual object instances would shift the onus for responsibility for memory management, scoping, and data manipulation from the programmer building the final application to the programmer who designs the object classes. C++ was selected as the implementation language because of the ready availability of compilers, and the widespread acceptance of C++ by programmers and engineers doing DSP work in the realm of applications. All classes in this report have been developed using Borland's Turbo C++ package. Nowadays this approach is a widespread standard practice. I found it amusing to come across a paper analyzing why this sort of system might be a good idea!