doc/new_dsp.txt : Initial commit.

This commit is contained in:
kevin 2015-09-03 17:57:14 -04:00
parent ca2818935c
commit daed9ab3a3

124
doc/new_dsp.txt Normal file
View File

@ -0,0 +1,124 @@
ain audio_in chs:2 gain:[.5 .3]
lpf bquad chs:2 type:[lpf hpf] fc:100 Q:3.2
aout audio_out chs:2 gain:.4
igain.val -> gain.ain
ain.out -> in.lpf.out -> in.aout
-> in.oscope
ain.out[0] -> [0].in.lpf.out ->in.aout
Built-in Data Types:
--------------------
bool
int
uint
float
double
symbol
string
boolM
intM
uintM
floatM
doubleM
symbolM
stringM
function
array : mixed type arrays
struct : user definable structures
Support Functions:
copy()
toString()
fromString()
Math Op's.
String Op's.
Custom ops of the form: function( const struct* inputs, struct* outputs ).
Functions:
----------
List of named inputs and outputs, implemented according to the
above data types, along with known functions:
Constructor() : Allocate object based on resource struct.
Destructor() : Release object.
Setup() : Determine runtime configuration based on input types.
Exec() : Audio rate execution.
SetInput() : Control rate updates.
GetValue() : Query state values.
StoreState() : Store the current state of the object as a preset.
RestoreState() : Recall a previously stored preset.
User Interface:
---------------
The user interface is formed by instantiating user interface
elements for function inputs. In this way most user interface
elements do not have to be explicitely connected because they
are inherently connected. This does not preclude either
connecting the same control to other functions or the use
of UI-only functions.
Sub-Programs:
-------------
Generic System Changes:
-----------------------
1) Error handling:
- Use a predefined set of generic error codes with the possiblity of
adding custom codes.
- Use a generic error handler macro which jumps to 'errLabel' on fail.
cmErrTry( err, rc, function_returning_error_code() )
cmErrTryMsg( err, rc, function_returning_error_code(), "Error msg %i ", value );
- Global functions, (i.e, those functions which do not have a manager) should
take optional error object points. These functions include memory mgmt,
file mgmt, text mgmt, ...
2) Develop a transparent, multi-dimensional, matrix class.
3) cmCtx_t extensions.
- The cmCtx_t context should be considered a singleton global object, whose
life extends for the entire program. This will eliminate needing to duplicate
the context.
- Possibly add a JSON tree to pass global program cfg. information.
4) Simplify the low level processing object design.
- Eliminate the alternative cmCtx type and use the cmCtx_t class.
- Eliminate the distinction between allocation and initialization.
5) Make use of thread local memory for allocating scratch memory
which does not need to be deleted.
6) Add a cmMemPrintf() function to create dynamcially allocated formatted strings.
7) Figure out the text encoding thing.
8) Eliminate the cmXXXIsValid() function - this can be provided
by a generic function (or macro).
9) Make the documentation work from the start.