doc/new_dsp.txt : Initial commit.
This commit is contained in:
parent
ca2818935c
commit
daed9ab3a3
124
doc/new_dsp.txt
Normal file
124
doc/new_dsp.txt
Normal 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.
|
||||
|
Loading…
Reference in New Issue
Block a user