\"  rrelease.roff from ObjectProDSP 0.2
\"  Copyright (C) 1994 1995, Mountain Math Software. All rights reserved.
\"  
\"  This file is part of ObjectProDSP, a tool for Digital Signal
\"  Processing design, development and implementation. It is free
\"  software provided you use and distribute it under the terms of
\"  version 2 of the GNU General Public License as published
\"  by the Free Software Foundation. You may NOT distribute it or
\"  works derived from it or code that it generates under ANY
\"  OTHER terms.  In particular NONE of the ObjectProDSP system is
\"  licensed for use under the GNU General Public LIBRARY License.
\"  Mountain Math Software plans to offer a commercial version of
\"  ObjectProDSP for a fee. That version will allow redistribution
\"  of generated code under standard commercial terms.
\"  
\"  This program is distributed in the hope that it will be useful,
\"  but WITHOUT ANY WARRANTY; without even the implied warranty of
\"  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\"  GNU General Public License for more details.
\"  
\"  You should have received a copy of version 2 of the GNU General
\"  Public License along with this program. See file COPYING. If not
\"  or if you wish information on commercial versions and licensing
\"  write Mountain Math Software, P. O. Box 2124, Saratoga, CA 95070,
\"  USA, or send us e-mail at: support@mtnmath.com.
\"  
\"  You may also obtain the GNU General Public License by writing the
\"  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
\"  USA.  However if you received a copy of this program without the
\"  file COPYING or without a copyright notice attached to all text
\"  files, libraries and executables please inform Mountain Math Software.
\"  
\"  ObjectProDSP is a trademark of Mountain Math Software.
\"  
.H 1 "Release notes for ObjectProDSP version 0.2"

This is the second public beta release of ObjectProDSP. Although this
is a beta release and some problems are to be expected, considerable
effort was put into validating this release to make it
a useful and valuable tool.

\".% start of announce system requirements
.H 2 "System requiremnts"

.H 3 "Memory"

The mimimum memory requirements vary with application. If you have 32 MB total
of physical memory  plus swap space and you can run other X-windows
applications without excessive thrashing you can probably run ObjectProDSP.
We are interested in hearing about configuratins that are or are not
adequate.

.H 3 "Disk space"

Although building and validating the full ObjectProDSP system requires
substantial disk space, little disk space is required to use it.
The binary distribution is 11 MB. If you only use the package for
DSP analysis (no stand alone executables) and only in floating point
you can delete the subdirectories `lib', `src', `scripts', `validate'
and all the files in `bin' except `banner', `opd', `opd_gui_exe' and
`opd_gui_dsp'. If you do this you will only need 6.0 MB of space.

Minimum binary installation (no stand alone executables): 6.0 megabytes

Full binary installation: 11 megabytes

Source float installation: 35 megabytes

Source float and int16 installation: 40 megabytes

The above sizes are total requirements
after you have dearchived the distributions and built
the executables.

There is a signle source distribution that includes all
documentation.

Following are the additional disk space needed to
run the validation tests.

Float only validation: 34 megabytes

Total space for both float and int16 validation: 38 megabytes

.H 3 "Other hardware"

ObjectProDSP can be used (awkwardly) with standard VGA resolution.
The higher the resolution and the larger the monitor the
better. A resolution of at least 1024 x 768 is recommended. A color
monitor and display card is required. The InterViews `monochrome' mode
is not supported and does not work. Although a high performance graphics
card is desirable graphics performance should be reasonable with almost
any card.

Hardware floating point is recommended.

.H 3 "Software requirements"

The binary distribution requires XFree86 3.1.1 or later and a version of
Linux that supports it. Earlier versions may work but have not been
tested. If you want to create stand alone executables you also need
g++ from gcc 2.6.3 and a compatible version of libc and libg++.

The binary release for version 0.2 is currently available only
for Linux. Work has started on porting to other systems. However other
ports will probably not be done until I have converted from
InterViews to Fresco.

\".% end of announce system requirements
.H 3 "Using gdb"

You can run either or both of the two ObjectProDSP processes with
the GNU debugger.  If large numbers of programs are not compiled with
the `-O' option
under gcc the executable become large and difficult to work
with using the debugger. This is due to the large number of inline
functions defined inside class definitions. These are made into
static functions in each module if `-O' is not used.

.H 2 "DSP Node library and target code efficiency"

Although there are many nodes in the existing library this is one
area that we hope to expand quickly. For example we do not yet have
an IIR filter or a FIR filter for non integer resampling. The list
of possibilities is almost endless. It is usually straightforward
and simple to
make an ObjectProDSP node from an existing C or C++ kernel algorithm.
If you are aware of public domain or GPL licensed code that would
make good candidates let us know. Everyone is encouraged to write
their own nodes and release them under the GPL.

The easiest way to write a node is to use routines `ReadWord' and
`WriteWord' for every input and output operation. This is simple but
results in fairly inefficient code. Most of the exiting nodes are written
in this way. It is not difficult operate on chunks of data in
buffers and this significantly improves performance.
Routines are available to determine
the amount of consecutive input and output available and there are
special classes to simplify using this information.
We hope to convert most of the nodes to operate on chunks of data
in the near future. The existing nodes will usually not
be suitable for demanding real time applications or other applications
where high performance is critical.

.H 2 "Supported targets"

All nodes are translated into two C++ programs.
One is suitable for interactive use and the other for dedicated
applications. You can automatically generate a stand alone executable
of any network you create interactively.

This facility has been used to generate code for the TI TMS320C30
processor. The C++ code that ObjectProDSP generates was translated
to C with the front end of a C++ compiler and this in turn was compiled
with TI's C compiler.
The stand alone target code should be portable to any system with a 
C++ compiler. With a C++ to C translator the
code should be usable on any processor with a C compiler.

Currently there is no custom support for target processors. You must make
any modifications needed for a particular target to the generic
C++ code generated. The support for the TMS320C30 used a proprietary
board and driver software for a customer of Mountain Math Software.

.H 2 "Filter design"

Currently there is no filter design software integrated into ObjectProDSP.
There are public domain packages available and it is simple to edit the
output from these and to use as coefficients for a filter. We would
eventually like to integrate one of more of these programs.

To use a filter designed elsewhere define the coefficients
for a filter with a statement like the following:

\".LINE \verb"MachWord * coeff[] = {.1, .2, .8};" \\
MachWord * coeff[] = {.1, .2, .8};

Then define a complex fir filter with the following statement:

\".LINE \verb"CxFir filter( 1, 0, 0.0, 0, coeff);" \\
CxFir filter( 1, 0, 0.0, 0, coeff);

The above can be typed in the DSP++ statement entry window or can be
entered in a file and read with the `read state' option in the `state'
menu.

Alternatively you can use the `create' option and when you are prompted
for the filter coefficients you can enter the name of the array `coeff'.
(To create a `CxFir' node select `objects', `dsp processing' and
`CxFir'. Then click the right mouse button with the cursor over
the `CxFir' button.)

.H 2 "Bugs"

There is a know bug in the pop up menus. If a new window obscures a pop
up window while it is the process of appearing, subsequent behavior
of the menu bar is erratic and, if the window is rebuilt, ObjectProDSP
can crash.  If this happens you should immediately `save and exit' and then
read the state back in and continue working. This problem is rare and
can be avoided by not using the pop up windows when new windows are
being created by the DSP process at the start of execution of a network.

.H 2 "Deleted TargetSystem capability"

Previous versions had a `TargetSystem' capability that was used extensively
in a previous project.
We have not had time to test and update this 
so we removed it. Code that references and supports 
`TargetSystem' is still present. We only removed the user interface
`.usr' files.  We plan to restore this capability in a future
release. `TargetSystem' refers to combining
several networks in a single Target module. The generation of Target
stand alone code for a single network is extensively tested in the
validation suites.
