Browse Source

notes.txt : Added section on "Language Notes" and "New Design Notes".

master
kevin 10 years ago
parent
commit
e04751e32c
1 changed files with 58 additions and 0 deletions
  1. 58
    0
      doc/notes.txt

+ 58
- 0
doc/notes.txt View File

@@ -12,6 +12,64 @@ SPAT LAB SETUP:
12 12
     a. TotalMix - select 'DTS_24ch'
13 13
     b. mixer: Recall preset 96 ('24ch firecac ufx')
14 14
 
15
+LANGUAGE NOTES:
16
+The primary goal of the language is to initialize a dataflow system.
17
+Sub-goals:
18
+1) Avoid describing domain specific computation in the language. As much as possible constrain the 
19
+language to describe initialization tasks (e.g. object allocation, object connection, initialization
20
+parameters, preset grouping, thread/process allocation, UI layout, ...)
21
+
22
+2) Network Distrubution
23
+3) UI Layout
24
+
25
+Runtime:
26
++ Extensible data-object system.
27
++ Library organization (application objects, simple objects, vector library)
28
+  
29
+
30
+NEW DESIGN NOTES:
31
++ The current designs fundamental weakness is that it uses callbacks to communicate where sequential program 
32
+  flow would produce a more comprehensible program.
33
+
34
++ Dataflow is a natural way to express DSP programs but if it is implemented in a textual, rather than 
35
+  graphical language, then their are some design princles that must be followed in order
36
+  to produce comprehensible programs.
37
+  1) Limit the number of connections as much as possible.
38
+     - There are many simple UI->param connections - these should be made automatically and UI
39
+     objects should not have to be explicitely created - they should be created by the runtime 
40
+     environment.
41
+     - If multiple pieces of data are part of a single message then they should be sent as a unit
42
+     rather than separately. This decreases the number of connections and also removes timing
43
+     dependencies - where the application programmer has to know the order of transmission of the
44
+     individual pieces. (e.g. MIDI messages always contain {status,d0,d1} rather than having to
45
+     send d0 and d1 followed by status to indicate the end of the message {status,d0,d1} should
46
+     be sent as a single record.
47
+  2) Eliminate as many event ordering issues as possible 
48
+     See the example in 1).
49
+  3) Alllow the connections between objects to be made as part of the object allocation.
50
+  4) Allow subprograms to be made. This decreases the complexity of the programs and because
51
+  it allows the programs to be organized hierarchically.  It also allows the subprograms to
52
+     be tested idenpendently.
53
+  5) A natural way to express object multiplicity is required. (e.g. multiple channels).
54
+     This leads to a way to naturally create parallel/fan-in/fan-out connections.
55
+  
56
++ One way to solve some of the problems of the current program would be to add debugging tools.
57
+  - Generate dataflow diagrams that show execution order and the order of connections.
58
+    The actual sending order of the outputs is not accessible to a static network analyzer because it is
59
+    implementation dependent. 
60
+  - Generate reports of network activity that show the timed order of events.
61
++  The audio system (cmAudioSys) needs to be able to support multiple parallel DSP chains in separate threads.
62
++  UI Related Issues:
63
+   - Automatic UI's should be generated by scanning the objects parameters.
64
+   - Custom UI's should be created by explicitily naming object variables along with layout info.
65
++  Processors should be able to contain their own processing chains - embeddding processors should be possible.
66
+   This naturally leads to a tree address space.  (e.g. fx.filter.param1)
67
++  Communication between threads should not necessarily require serialization. 
68
+   - Use a blackboard approach where object values are read/written from a blackboard. Objects on the same
69
+     thread use the same physical blackboard. Blackboards on remote processes stream data in the background.
70
+   - This scheme may require double buffering of complex objects to prevent accessing invalid data states.  
71
++  Objects that send multiple valued messages should use 'record' based data so that only one connection
72
+   is necessary.
15 73
 
16 74
 STRATEGY:
17 75
 + implement highly parallel version - which can take advantage of multiple processors

Loading…
Cancel
Save