Browse Source

Remove old notes files and copy contents to jrnl/piano.pd

master
kevin 1 year ago
parent
commit
6dcb74c411
3 changed files with 0 additions and 1024 deletions
  1. 0
    53
      doc/kc_play_directions.txt
  2. 0
    124
      doc/new_dsp.txt
  3. 0
    847
      doc/notes.txt

+ 0
- 53
doc/kc_play_directions.txt View File

@@ -1,53 +0,0 @@
1
-0) Log-in to Mac as 'kevin'.
2
-
3
-1)  Setup hardware
4
-  a. Turn on MOTU Traveler (MOTU Audio Setup window shows up on Mac)
5
-  b. Turn on mixer.
6
-      Channel 1: Transformation Left  (Mute button down)
7
-              2: Transformation Right (Mute button down)
8
-	      3: Dry Piano Left       (Mute button up)
9
-	      4: Dry Piano Right      (Mute button up)
10
-      
11
-2) Start Ivory
12
-   a. Insert ILOK
13
-   b. Select Ivory Standalone from Mac Menu.
14
-   c. Select 'Program Preset' "German Concert D Grand"
15
-   d. Audio | Device = Soundflower (2ch)
16
-
17
-3) Start 'kc'
18
-   a. Right click on: src | kc | build | osx | debug | bin | kc
19
-      and select 'Open'.
20
-      
21
-   b. The grey 'kc' window will open and a white terminal window
22
-      will open behind it.  The terminal window will end with
23
-      the message:
24
-      "UDP Network error: The JSON 'udpnet' element was not found. (RC:9)"
25
-      (Contrary to what it says this is a not an error message.)
26
-      
27
-   c. Select the 'Enable Audio' checkbox. Some text will be printed
28
-      to the terminal window.  
29
-   
30
-       mode:1
31
-       mode:1
32
-       wsn:2048 hsn:512
33
-       wsn:1024 hsn:256
34
-       wsn:2048 hsn:512
35
-       wsn:1024 hsn:256
36
-       mode:1
37
-       mode:1
38
-       /Users/kevin/temp/score_temp.mid : 0
39
-       A7 : 0
40
-       /Users/kevin/temp/score_temp.mid : 0
41
-       A7 : 0
42
-
43
-    d. Select the 'Main' tab.
44
-    
45
-    e. Push the 'Start' button to begin playback.
46
-       If playback does not start and errors show up in the
47
-       terminal window goto a.
48
-
49
-    f. By default playback begins from measure 1.
50
-       To begin playback from a different measure
51
-       enter the measure number in the edit box
52
-       labelled 'meas' and preset enter.
53
-     

+ 0
- 124
doc/new_dsp.txt View File

@@ -1,124 +0,0 @@
1
-
2
-
3
-
4
-
5
-
6
-ain   audio_in chs:2  gain:[.5 .3]
7
-lpf   bquad    chs:2  type:[lpf hpf] fc:100 Q:3.2
8
-aout  audio_out chs:2 gain:.4
9
-
10
-
11
-igain.val ->  gain.ain
12
-
13
-ain.out -> in.lpf.out -> in.aout
14
-                      -> in.oscope
15
-
16
-
17
-
18
-ain.out[0] -> [0].in.lpf.out ->in.aout
19
-
20
-
21
-Built-in Data Types:
22
---------------------
23
-bool
24
-int
25
-uint
26
-float
27
-double
28
-symbol
29
-string
30
-
31
-boolM
32
-intM
33
-uintM
34
-floatM
35
-doubleM
36
-symbolM
37
-stringM
38
-
39
-function
40
-
41
-array   : mixed type arrays 
42
-struct  : user definable structures
43
-
44
-
45
-Support Functions:
46
-copy()
47
-toString()
48
-fromString()
49
-Math Op's.
50
-String Op's.
51
-Custom ops of the form: function( const struct* inputs, struct* outputs ).  
52
-
53
-
54
-
55
-Functions:
56
-----------
57
-List of named inputs and outputs, implemented according to the
58
-above data types, along with known functions:
59
-
60
-Constructor()  : Allocate object based on resource struct.
61
-Destructor()   : Release object.
62
-Setup()        : Determine runtime configuration based on input types.
63
-Exec()         : Audio rate execution.
64
-SetInput()     : Control rate updates.
65
-GetValue()     : Query state values.
66
-StoreState()   : Store the current state of the object as a preset.
67
-RestoreState() : Recall a previously stored preset.
68
-
69
-
70
-User Interface:
71
----------------
72
-The user interface is formed by instantiating user interface
73
-elements for function inputs.  In this way most user interface
74
-elements do not have to be explicitely connected because they
75
-are inherently connected.  This does not preclude either
76
-connecting the same control to other functions or the use
77
-of UI-only functions.
78
-
79
-
80
-Sub-Programs:
81
--------------
82
-
83
-
84
-
85
-Generic System Changes:
86
------------------------
87
-1) Error handling:
88
-  - Use a predefined set of generic error codes with the possiblity of
89
-  adding custom codes.
90
-
91
-  - Use a generic error handler macro which jumps to 'errLabel' on fail.
92
-    cmErrTry( err, rc, function_returning_error_code() )
93
-    cmErrTryMsg( err, rc, function_returning_error_code(), "Error msg  %i ", value );
94
-
95
-
96
-  - Global functions, (i.e, those functions which do not have a manager) should
97
-    take optional error object points.  These functions include memory mgmt,
98
-    file mgmt, text mgmt, ...
99
-
100
-2) Develop a transparent, multi-dimensional, matrix class.
101
-
102
-3) cmCtx_t extensions.
103
-  - The cmCtx_t context should be considered a singleton global object, whose
104
-  life extends for the entire program.  This will eliminate needing to duplicate
105
-  the context.
106
-
107
-  - Possibly add a JSON tree to pass global program cfg. information.
108
-
109
-4) Simplify the low level processing object design.
110
-  - Eliminate the alternative cmCtx type and use the cmCtx_t class.
111
-  - Eliminate the distinction between allocation and initialization.
112
-
113
-5) Make use of thread local memory for allocating scratch memory
114
-   which does not need to be deleted.
115
-
116
-6) Add a cmMemPrintf() function to create dynamcially allocated formatted strings.
117
-
118
-7) Figure out the text encoding thing.
119
-
120
-8) Eliminate the cmXXXIsValid() function - this can be provided
121
-   by a generic function (or macro).
122
-
123
-9) Make the documentation work from the start.
124
-

+ 0
- 847
doc/notes.txt View File

@@ -1,847 +0,0 @@
1
-CONTENTS:
2
-
3
-1) TODO List
4
-2) OSX Install Notes
5
-
6
-
7
-SPAT LAB SETUP:
8
-+ 1. Stereo
9
-    a. TotalMix - select 'diff. stereo' snapshot
10
-    b. mixer: Recall preset 91 ('stereo diff')
11
-+ 2. Direct - 24 channels - each channel goes in and out on same number.
12
-    a. TotalMix - select 'DTS_24ch'
13
-    b. mixer: Recall preset 96 ('24ch firecac ufx')
14
-
15
-=============================================================================
16
-Equipment List:
17
-
18
-1) Two DPA 4011 cardioid mic's.
19
-2) Two boom mic. stands.
20
-3) FMR Audio RNP8380 pre-amp.
21
-4) Presonus Audiobox 181VLS.
22
-5) Mackie 1604 or equivalent mixer.
23
-6) One MIDI cable (15-20 feet)
24
-7) Four 25 foot power extension cables.
25
-8) Two power strips.
26
-9) Eight short (3-4 ft) balanced 1/4" cables.
27
-10) 8 (25 ft) XLR mic cables.
28
-11) 4 balanced 1/4" to male XLR cables (10 ft)
29
-12) 2 balanced 1/4" to female XLR cables (10 ft)
30
-13) One set of the best headphones you can give me.
31
-14) Diskclavier remote control,power supply, and manual.
32
-
33
-0) Contact Mics
34
-1) MIDI interface and USB
35
-2) MIDI cable
36
-3) MIDI barrel adapter
37
-4) Speakers
38
-5) Speaker power cables
39
-6) Tape for contact mics 
40
-7) Scissors for contact mics
41
-
42
-=============================================================================
43
-Take sequence builder development notes.
44
-
45
-1. The MIDI file implementation should not overload the use of the
46
-   'dtick' field in cmMidiTrackMsg_t to contain multiple possible
47
-   meanings of time (e.g. tick,microsecond,seconds,samples etc) or at
48
-   the very least the current meaning of the field should be held as a
49
-   flag in the MIDI file.  As it i s the field is ambiguous and it can
50
-   be difficult to tell what the meaning of the field is in any given
51
-   algorithm that processes it.
52
-
53
-2. Sostenuto pedal should be added to the score and then implemented
54
-   in cmMidiFileCalcDurations().  When the sostenuto pedal is down
55
-   only notes that are playing when the pedal is depressed are
56
-   sustained.
57
-
58
-3 As current written the UI control architecture supports only one
59
-  user interface element (kcApp.h::ctl_t) per DSP instance. This
60
-  limitation is manifest in kcApp.h::find_ctl() which has no way
61
-  to distiguish which of multiple ctl_t's to return from a given
62
-  instId. In fact this problem probably goes deeper into the 
63
-  way that Fl_Widgets and DSP instances are assocated.
64
-
65
-4. TODO:
66
-  a) When pedal events are inserted via cmGrTksrFltk the inserted event
67
-  is shifted backward in time.
68
-
69
-  b) Test the save/restore function of TakeSeqBldr render takes.
70
-  c) TakeSeqBldr load should be threaded.
71
-  d) Eliminate direct communication between cmGrTksb/rFltk and cmTakeSeqBldr.
72
-  All communcation should be serialized.
73
-  e) Run with valgrind to see if cmGrGksb/rFltk has any obvious bugs.
74
-  f) bar select / take select logic is difficult.
75
-  g) There is often a NAN shown in the position select display UI.
76
-  h) Add bars to the cmGrTksrFltk view.
77
-
78
-=============================================================================
79
-CHANGES TO SIMULATE MODE TO ALLOW MIDI FILE PLAYER TO DRIVE SCORE
80
-FOLLOWER DIRECTLY RATHER THAN FEEDING SCORE FOLLOWER FROM MIDI INPUT PORT:
81
-
82
-CHANGE:
83
-  LINE 1150 cmDspSysInstallCb(h, siRt, "f-out-1", sfp,  "smpidx",NULL );
84
-       1154 cmDspSysInstallCb(h, d0Rt, "f-out-1", sfp,  "d0",    NULL );
85
-       1160 cmDspSysInstallCb(h, d1Rt, "f-out-1", sfp,  "d1",    NULL );
86
-       1166 cmDspSysInstallCb(h, stRt, "f-out-1", sfp,  "status",NULL );
87
-
88
-BACK TO:
89
-  cmDspSysInstallCb(h, siRt, "f-out-0", sfp,  "smpidx",NULL );
90
-  cmDspSysInstallCb(h, d0Rt, "f-out-0", sfp,  "d0",    NULL );
91
-  cmDspSysInstallCb(h, d1Rt, "f-out-0", sfp,  "d1",    NULL );
92
-  cmDspSysInstallCb(h, stRt, "f-out-0", sfp,  "status",NULL );
93
-
94
-
95
-=============================================================================
96
-Session Notes 3/28/15
97
-1. 34-38-49-54 (good take sequence)
98
-2. Try combining bins in the SpecDist algorithm as a variaion on the spectral distortion algorithm.
99
-   For example the bins coud be combined using a Bark grouping.
100
-
101
-
102
-Session Notes 12/12/14
103
-1. Write a tool to create multiple MIDI preformances of the piece.
104
-  a) Map each segment to the score using the score follower.
105
-  b) Where parts overlap allow interactive selection of which part should be selected.
106
-  c) Where parts are missing - insert notes from the score.
107
-  d) Display the pedal and allow it to be edited.
108
-  e) Allow parameter changes to be assigned to performance locations.
109
-
110
-
111
-Session Notes 11/08/14
112
-1.  127 dynamic level values are not adequate. 
113
-    we loose quiet notes.  the new Steinway instr. should have more velocity bits.
114
-
115
-2. Display the next target score location of cmScModulator() so that it is clear
116
-   that cmScoreModulator() is waiting for a score location in the expected place.
117
-   Adding a button to dump the cmScModulator() score might also be useful.
118
-
119
-3. JSON parser errors are being sent to the terminal output not the console
120
-   output - so they are not easy to not notice. 
121
-
122
-4. We need transitsions
123
-   We need to be able to audtion presets faster
124
-   We need to insert missing pedal information.
125
-   
126
-5. Build a complete MIDI version of the piece so that long sections can be run.
127
-
128
-Session Notes: 10/18/14
129
-1) Contact and air mics ogain all set to 1.0
130
-   Sometimes igain on air mics reduced to control feedback.
131
-   Speakers are 10 ft in front of piano
132
-
133
-   AudioBox Gains all at 10 oclock.
134
-   FMR Preamp 2nd notch on air mics
135
-   Mixer 2.5 kHz 10 oclock, 80 Hz 9 oclock.
136
-   Mixer in gains 11 oclock w/ 75 Hz low cut engaged
137
-
138
-2) Need input Eq for contact mic's. LP,BP,HP with adjustable xover Fc and Gain.
139
-
140
-3) Preset G works best. With 'offset' used to control radicalization between 20 and 80.
141
-
142
-4) Add a control cmSpecDist() to interpolate between the input and output
143
-   spectrum.  This would allow a smooth transition between transformed
144
-   and untransformed signal.
145
-
146
-   The interpolation can be made to be frequency dependent.  This could
147
-   also be used to counter the bass boost which the transform tends
148
-   to produce.
149
-
150
-5) Add 'offset' as a modulator variable.
151
-6) Are the dynamic modulator parameter controls working: line, sline
152
-7) Many of the modulator file labels are redundant - can they be left out?   
153
-   (When modulator file values are missing they  should default to their last set value).
154
-
155
-8) When the score follower triggers a change the change seems to come
156
-   before the Disklavier note sounds due to Disklavier system latency.
157
-   Add a delay to the input of scMod to compensate for this delay.
158
-
159
-9) The scMod data file would be easier to work with if it was in columnar form.
160
-
161
-Session Notes: 9/28/14
162
-1) Problems with feedback were mitigated by brining down the input gain.
163
-   In generate the input/output gain were set to:
164
-      In Gain:  0.7 0.2
165
-      Out Gain: 2.0 2.0
166
-2) Turning the piano away from the microphones also reduced feedback; probably
167
-   due to the fact that the piano lid sheilds the mic's from direct path
168
-   from the speakers.
169
-3) Increasing the threshold and and use of mode 4 (Bump Mode) produced the
170
-   best transformations.  See Preset G in mod_44_45.js
171
-4) Input signal conditioning needs to be added to keep the piano signal 
172
-   in the effective range of the transform.
173
-5) The Sine Tracking feedback controller is in an uncertain state.
174
-    a. The attenThresh setting range needs to be verified.
175
-    b. The scoring function was changed and then not verified.
176
-    c. The algorithm which compares the trajectory of a given harmonic
177
-    to the trajectory of the overall sound needs to be writen.  
178
-    Harmonics that are increasing relative the overall envelope
179
-    should be attenuated.
180
-6) A noise gate might help the reberberation feedback problem (i.e.
181
-   the dense wash of sound with tends to build with time)
182
-7) The transform algorithm needs to be developed further to increase
183
-   it's reliability and range of effect.
184
-8) Changing window length from the score didn't seem to be working.
185
-
186
-Session Notes: 8/24/14
187
-0) Investigate using omni mic. in front of speakers to feed input to cmFrqTrk.
188
-1) Feedback from Mark 178, m144, Preset C.
189
-
190
-
191
-Session Notes: 5/24/14
192
-1) Move mic's back from the Disklavier to decrease damper noise.
193
-2) The head phone signal sounds correct.
194
-3) The the L410 computer is running out of time in release mode.
195
-4) Better quality speakers are required.
196
-5) Build a spectrum analyzer and bank of notch filters or graphic EQ to deal with feedback.
197
-6) The DPA 4011 mics and FMR Audio RNP8380 preamp work well.
198
-7) Whenever the speaker signal gets to the point where the transform can be heard 
199
-   the feedback begins to occur.
200
-
201
-Session Notes: 1/14/14
202
-1) The non-grace evenness notes should include a tempo quality evaluation 
203
-   based on using the 'tfrac' values from column S of the score.
204
-2) Sliver fade outs are currently tied to the reat-time performance not the captured performance.
205
-   In the event that the score follower is lost after beginning a sliver playback
206
-   and therefore misses the programmed fade out times begin fading out the 
207
-   sliver after the attack of the last captured note.  This means that 
208
-   the time location of the captured notes must be accurately indicated
209
-   in the sliver.
210
-3) Allow fades to be tied to the capture notes - this is easy if 2) is done first.
211
-
212
-
213
-LANGUAGE NOTES:
214
-The primary goal of the language is to initialize a dataflow system.
215
-Sub-goals:
216
-1) Avoid describing domain specific computation in the language. As much as possible constrain the 
217
-language to describe initialization tasks (e.g. object allocation, object connection, initialization
218
-parameters, preset grouping, thread/process allocation, UI layout, ...)
219
-
220
-2) Network Distrubution
221
-3) UI Layout
222
-
223
-Runtime:
224
-+ Extensible data-object system.
225
-+ Library organization (platform independent UI description, application objects, app-independent objects, vector library)
226
-  - Platform independent UI description is a protocol for describing a UI object and a runtime protocol
227
-  for communitcating with the UI which is independent of the UI implementation itself.  The UI should be
228
-  implementable in FLTK, or Javascript.  The UI will always run in separate thread and may run in a 
229
-  separate process.
230
-  - Application objects are plug-ins which follow a similar design to the cmDspProc() objects.
231
-    + xs
232
-
233
-NEW DESIGN NOTES:
234
-+ The current designs fundamental weakness is that it uses callbacks to communicate where sequential program 
235
-  flow would produce a more comprehensible program.
236
-
237
-+ Dataflow is a natural way to express DSP programs but if it is implemented in a textual, rather than 
238
-  graphical language, then their are some design princles that must be followed in order
239
-  to produce comprehensible programs.
240
-  1) Limit the number of connections as much as possible.
241
-     - There are many simple UI->param connections - these should be made automatically and UI
242
-     objects should not have to be explicitely created - they should be created by the runtime 
243
-     environment.
244
-     - If multiple pieces of data are part of a single message then they should be sent as a unit
245
-     rather than separately. This decreases the number of connections and also removes timing
246
-     dependencies - where the application programmer has to know the order of transmission of the
247
-     individual pieces. (e.g. MIDI messages always contain {status,d0,d1} rather than having to
248
-     send d0 and d1 followed by status to indicate the end of the message {status,d0,d1} should
249
-     be sent as a single record.
250
-  2) Eliminate as many event ordering issues as possible 
251
-     See the example in 1).
252
-  3) Alllow the connections between objects to be made as part of the object allocation.
253
-  4) Allow subprograms to be made. This decreases the complexity of the programs and because
254
-  it allows the programs to be organized hierarchically.  It also allows the subprograms to
255
-     be tested idenpendently.
256
-  5) A natural way to express object multiplicity is required. (e.g. multiple channels).
257
-     This leads to a way to naturally create parallel/fan-in/fan-out connections.
258
-  
259
-+ One way to solve some of the problems of the current program would be to add debugging tools.
260
-  - Generate dataflow diagrams that show execution order and the order of connections.
261
-    The actual sending order of the outputs is not accessible to a static network analyzer because it is
262
-    implementation dependent. 
263
-  - Generate reports of network activity that show the timed order of events.
264
-+  The audio system (cmAudioSys) needs to be able to support multiple parallel DSP chains in separate threads.
265
-+  UI Related Issues:
266
-   - Automatic UI's should be generated by scanning the objects parameters.
267
-   - Custom UI's should be created by explicitily naming object variables along with layout info.
268
-+  Processors should be able to contain their own processing chains - embeddding processors should be possible.
269
-   This naturally leads to a tree address space.  (e.g. fx.filter.param1)
270
-+  Communication between threads should not necessarily require serialization. 
271
-   - Use a blackboard approach where object values are read/written from a blackboard. Objects on the same
272
-     thread use the same physical blackboard. Blackboards on remote processes stream data in the background.
273
-   - This scheme may require double buffering of complex objects to prevent accessing invalid data states.  
274
-+  Objects that send multiple valued messages should use 'record' based data so that only one connection
275
-   is necessary.
276
-
277
-STRATEGY:
278
-+ implement highly parallel version - which can take advantage of multiple processors
279
-  to do more - acoustic pitch tracking, source separation based fades
280
-
281
-TODO:
282
-+ When a cmMsgList item is selected it should send out the selected index 
283
-  after the individual data items rather than before them - this way the index
284
-  can be used as a definitive signal to perform some action on the previously
285
-  transmitted data items.
286
-+ cmJson and cmLex should report the name of the file when with syntax error messages.
287
-+ Use CSV for mod score file format (to eliminate need for labels)
288
-+ Autoload of default pgm cfg, program, enable audio, sequence, score location.
289
-+ (done) Circuit switcher patch.
290
-+ Review and document the app threading and locking during audio file loading.
291
-+ Remove old performance evaluation code from cmScore.
292
-+ All programs should be able to reload without crashing via enabling/disabling audio.
293
-+ (in new version) Select and save audio devices.
294
-+ (done) Mac Conversion
295
-+ (done) Live MIDI - to test audio/MIDI delay.
296
-+ (done) As threshold increases overall volume decreases - add a compensation algorithm.
297
-+ There are unintialized variable warnings on the release build.
298
-+ Add preset delete.
299
-+ All uses of va_copy() should have a complimentary va_end() 
300
-+ The list boxes do not show the currently selected item.
301
-+ (done)MIDI note messages are sent but do not trigger notes on OSX. 
302
-
303
-*** Usage Notes
304
-live     - Disconnects WT cmd input   (WT will not receive an 'on' msg)
305
-           Disconnects TL reset input (TL will not receive a 'reset' msg)
306
-	   Disconnects MFP sel input  (MPF will not receive an 'on' msg)
307
-	   Switches audio input to KR from WT to AIN.
308
-	   Turn the 'meas' checkbox 'on'.
309
-	   
310
-simulate - Turn the 'audio in' checkbox 'on'.
311
-	   Switch MFP output from SF to Nano. 
312
-           (SF MIDI input then comes from the MIDI port.)
313
-
314
-audio in - Switch audio input to KR from WT to AIN.
315
-meas     - Instruct the SF to generate measurement outputs for the active meas. unit.
316
-	   Otherwise the measurements must be loaded from the recorded measurment list.
317
-print    - Print a report from the SF.
318
-quiet    - Turn off SF output.
319
-
320
-LA Secs  - Fragment recd/play unit look-ahead time in seconds.
321
-Fade DbpSec - Framgent recd/play unit fade out time 
322
-              (time to fade to 0 following a fade msg)	
323
-
324
-*** Cross-fade Notes
325
-Cross-fades are initiated by sending any msg to the 'AvailCh.trig' input.
326
-The 'AvailCh' object then  toggles the parameter router channels and xfader gates.
327
-Only after this should the new parameter values be transmitted either from
328
-the 'ActiveMeas' object (through the scale range chains) or directly from the
329
-'ScMod' object.
330
-
331
-Sending parameter values prior to triggering the 'AvailCh' will result in the
332
-parameters being sent to the currently active 'Kr'. This will result in two
333
-possibly unintended effects: 
334
-1) The effect of the parameter will be heard immediately - possibly resulting in distortion.
335
-2) If a subsequent trigger is sent to 'AvailCh' the parameters will be routed to
336
-   the fade-out (current) channel rather than the fade-in (next) channel.
337
- 
338
-
339
-****  Live Test Score
340
-+ Line 1048 has a red G#5 immediiately following another G#5. Is this correct?
341
-  For now the second G#5 has been marked as a 'skip'.
342
-+ Changed Tempo sections 25,26,27 to 40,47,47a
343
-+ Measurements are taken for sections 51-54 but these sections follow bar 136 and
344
-  are therefore outside the test.  These sections have therefore been redirected
345
-  to the downbeat of 201-204.
346
-
347
-*** Testing Notes:
348
-+ Equipment List:
349
-   Four Microphones: Four performance/ Four recording
350
-                     2 inside          2 inside
351
-                     2 overhead        2 overhead
352
-
353
-   4 powered speakers
354
-   2 Mixers   (1 performance 1 recording)
355
-   
356
-   Performance Computer (harpo)/ Audio Interface (delta1010) / MIDI interface (Fastlane)
357
-   Recording Computer (crel)   / Audio Interface (delta 1010) / MIDI interface (???)
358
-   Sensor Strip	      
359
-
360
-+ Performance Setup
361
-   
362
-                     +------ +
363
-    Mic0 ----------->|       |
364
-    Mic1 ----------->|       | sends  +-----+       +-------+
365
-    Mic2 ----------->|       |------->| A/D |       |       |        +------+      +--------+
366
-    Mic3 ----------->| Mixer |------->|     |------>| harpo |<-------| MIDI |<-----| sensor |    
367
-              aux    |       |        |     |       |       |        +------+      | strip  |
368
-    Spkr0 <----------|       |<-------|     |<------|       |                      +--------+
369
-    Spkr1 <----------|       |<-------|     |       +------ +
370
-              main   |       |        |     |
371
-    Spkr2 <----------|       |<-------| D/A |
372
-    Spkr3 <----------|       |<-------|     |
373
-                     +-------+        +-----+
374
-      
375
-+ Software Development
376
-  - Create Score File
377
-
378
-  - Create Recording Program (test with long MIDI playback generating audio - look for drift)
379
-     Record the index of each MIDI event at it's location in an audio channel.
380
-
381
-  - Allow all variables and patch connections to be set from the scMod script and have 
382
-     multiple scripts with varynig effects setups. 
383
-
384
-  - When scanning past ramping variables in scMod the end value should be
385
-    taken as the next variable(???) - this is not necessarily correct 
386
-    because one never knows where a timed change may end - maybe ramped
387
-    variables should include a 'skip value' giving the next ambient value
388
-    for the ramped variable - experiment with this to figure out what works.
389
-
390
-  - Add comb filters tuned according to the current MIDI notes as an additional effect.
391
-  - Add EQ output stage (use mixer).
392
-  - Add an input Compressor.
393
-
394
-  - The dry signal should be able to be routed to seperate output channels - around the compressor.
395
-     (Better would be to output a delayed version of the dry signal that was in sync with the transformed
396
-      signal - this might mean simply passing the dry version as separate outputs from KR). 
397
-
398
-  - Create a mode in scMod which increments values based on an onset detector. So that
399
-    changes only happen on attacks. This still doesn't help if the pedal is down (or
400
-    if notes are sustained) but otherwise might be a better way to ramp parameters.
401
-
402
-  - (DONE) The ability for the measurements to be called at the correct time must be built in.
403
-     (or alternatively to use stored effects).
404
-
405
-  - (DONE) Effects applied to the playback fragments.
406
-
407
-  - (DONE?) CROSSFADE BUG - This may be fixed by the change to cmDspAvailCh which
408
-     handles the case where no channels are available by sending an error message
409
-     but not actually changing the state of the cross fader.
410
-
411
-
412
-+ Experiments:
413
-  1) Speaker placement and live/electronics mix.
414
-  2) Sliver mix level
415
-  3) Try varying degree's of effects
416
-
417
-   
418
-
419
-*** 11/19
420
-+ The recd/play fade should be able to trigger from a capture note as well as 
421
-  playback note.  An offset might also be useful.
422
-  (Should be a default fade for each fragment - keyed to the input. This
423
-  will be the fade that will occur when 
424
-+ Allow setting fade time in the score. 
425
-+ Allow setting fade rate based on 1.0 to 0.0 from fade point to end point.
426
-+ Allow for multiple fades markers per fragment. (what does this mean?)
427
-+ Write code to ignore playback when the score follower is not stable -
428
-  or to throw out fragments where there is a mistake.
429
-+ At the end of each fragment recording the fragment should be truncated by the look-ahead time
430
-  to avoid capturing the attack of the marked note.
431
-+ Part 2 data analysis: analyze the order of notes in counter rhythms.
432
-+ Allow  'evenness' sequences to have non-even relationships.
433
-
434
-*** 11/1
435
-+ Change the wavetable to read stereo files or add a second wavetable to play the other channel.
436
-+ The console window is not always updating from the bottom.
437
-+ The 'Dump' button results are not going to the console window.
438
-+ Put dry signal into separate output channels.
439
-+ Add 'adaptive' mode parameters to scale/range mappings.
440
-+ The 'meas'->'parameter' mappings should changable from scMod (mod0.js)
441
-+ The 'adaptive' mode parameters (e.g. offset and invert) need to be connected in the patch.
442
-+ Create a mode in scMod which increments values based on an onset detector. So that
443
-  changes only happen on attacks. This still doesn't help if the pedal is down (or
444
-  if notes are sustained) but otherwise might be a better way to ramp parameters.
445
-+ Mark all notes in the score according to how well they would act as places to transition.
446
-  Notes held while the pedal is down would not be good places to transition.
447
-  These indicators would then be used to determine where a section change can occur
448
-  when the actual section change is missed.
449
-+ (done) All score_loc's and event indexes in meas0.js that beginning with 
450
-  score location 743 must be decremented by two.  (e.g. loc 743 becomes 741 ...)
451
-  (score_loc_1.txt is now the correct score file)
452
-+ When scanning past ramping variables in scMod the end value should be
453
-  taken as the next variable(???) - this is not necessarily correct 
454
-  because one never knows where a timed change may end - maybe ramped
455
-  variables should include a 'skip value' giving the next ambient value
456
-  for the ramped variable - experiment with this to figure out what works.
457
-
458
-  
459
-
460
-*** 10/17
461
-    Select bar 129.
462
-    Start on F5 before 129.
463
-    Score follower jumps to loc. 978 then backs up to 973.
464
-
465
-*** 9/27
466
-* (DONE) Implement live recording for use in part 2.
467
-* Implement a delay between when a new section is set to trigger and when 
468
-it actually does.   This might allow transitions to be set up prior to when they are heard.
469
-* (DONE) OS-X version crashes when the printf("PROCSET ...) is removed from _cmScProcSets().
470
-* Add ability to set mappings and perf. measure settings to scMod.
471
-* The scMod should play through all changes up to the cur starting location so that
472
-  we can mimic the state of playing the piece through but allow starting from any location.
473
-* Experiment with changing settings using the scMod ramping functions.
474
-* Make a source separation based fade using an filter/inverse filter based on the
475
-  spectrum prior to the cross-fade.  As an extra feature notice the state of the pedal
476
-  and decay appropriately.
477
-* The electronic score needs the ability to specify that the output is sent to the audible
478
-cross-fade channel rather than the inactive channel.
479
-* Add a score mode that performs some action (e.g. incr/decr) on each incoming score follower
480
-event.  
481
-* In AvailCh what happens when no available channels are found - this may be the cause 
482
-of the cross-fade cut-out problem.
483
-* Add eq stage to output.
484
-
485
-* Setting the upper slope to a negative value is effective.
486
-
487
-* Demo Material: Seq 8 Mark 204 (1024-4 2048-4) Fade 10ms Cost->Threshold.
488
-- recd7  Mark 151
489
-- recd8  Mark 145 - same settings a previous take.
490
-- (recd9) Mark 145 - w/ changing xfade switch to mode 4 at 38 
491
-- recd10 Mark 145 - same w/ no mode change
492
-- recd11 Mark 145 - a. 3 different takes w/ score constant - no perf. parameters used - fixed threshold=65 
493
-- recd12 Mark 148   b.(same settings as recd9)
494
-- recd13 Mark 151   c.
495
-- recd14 Mark 161  Section 40 - fixed changes see mod0.js for note 
496
-- Seq 6 Mark 145 M-92 (38,39,39a) (recd16) (recd17) (recd18) (recd19)
497
-- Seq 7 Mark 167 M-100
498
-
499
-*** 8/13
500
-* Cross-fade was cutting out during demo.
501
-* Missing takes between seq 7 and seq 8.
502
-* The MIDI is mis-aligned against the audio.
503
-* Are cost / tempo working?  ... test changing mode.
504
-* Add an automatic volume adjustment to prevent parameter changes from causing large volume changes.
505
-* What can we actually do between after a MIDI note is received? Is it already too late to 
506
-  send parameters w/o affecting the attack of the note.
507
-
508
-* Live Test material
509
-
510
-     Part 1: Meas:76 - (one measure) to get measurments for later sections
511
-     Part 1: Meas:94 (sect 38 (Seq 6)) through Meas:136 (include 136 stop at 137).
512
-
513
-     Part 2: ("/Users/kevin/temp/piano score part 2 draft 1 master m 232 - 241 1st 2 bts.sib")
514
-	 	  	 The downbeat of part two aligns with the 3rd beat (in 4/4) of 122 in the first part.
515
-			 Ends on measure 131 at end of beat 3. 
516
-  
517
-     MISSING MIDI for measures 114:126
518
-
519
-*** July 10
520
-** (done) Make separate mappings and scale/range controls for left and right.
521
-** Add EQ output stage.
522
-** Work out the speaker setup.
523
-** Add capture/playback.  Analyze notes on capture and do not play if there are
524
-   any wrong notes. (Skipped notes however are acceptable.)
525
-** 
526
-
527
-** When a section transition is occurs late - (e.g. due to dropped notes) do not apply
528
-the transformation all at once - instead either ramp it in or step it in on subsequent
529
-attacks.  Section transitions which are positively identified are intended to have 
530
-dramatic changes so applying the updated parameters immediately is acceptable - but
531
-when the parameters are changed mid-section they should be much applied subtely.
532
-
533
-
534
-
535
-
536
-** (done) Build a database of measurements and setup the program to be able to
537
-   apply a given measurement at it's assigned section.
538
-
539
-** Redevelop spectral distortion algorithm to use a spline as the transform.
540
-
541
-** use Log frequency frequency transform instead of FFT.
542
-
543
-** Allow for a continous window size via zero padding.
544
-
545
-** Add a 'write' preset file button - so the preset file can be saved prior to next crash.
546
-
547
-** measurement values can generate MAX_DBL - be sure that are not being sent through to the audio algorithm.
548
-   (see ln:965 cmDspKr.c for a hack to fix this)
549
-
550
-** add invert to scale/range  to cause output to go in opposite direction.
551
-
552
-** non-grace eveneess are used to generate a measurement value from previous tempo calibration section. 
553
-   (non-grace evenness notes therefore have two scores: 'evenness' and 'overall-duration').
554
-
555
-** note that the default setting for dyn and even.
556
-
557
-** add dyn,even,tempo,cost number boxes to allow artificial setting of these parameters.
558
-   add dyn,even,tempo,cost as modulator variables to allow them to be set from the modulator
559
-   With these additions we can simulate apply measurements at the 'application' section.
560
-
561
-** add begining and ending measure numbers to 'seq' labels
562
-
563
-** Gain compensation for mode 4.
564
-
565
-** Do IFFT using cos()^c + i * sin()^c - these bases are orthognal but cause harmonic distortion.
566
-   To be efficient this might involve writing an FFT function.
567
-
568
-// May 22
569
-
570
-** Crashers (Should be tested but are probably already fixed following score follower debugging.)
571
-Seq 2  m24 Mark 36 & 38 
572
-Seq 4: Mark 115
573
-Seq 4: m76-79 Mark 129 (W/ meas: even & dyn -> thresh change min Thresh to 40) - use 4th seq w/ b1
574
-Seq 6: m92 Mark 143
575
-Seq 7: m103 Mark 173
576
-Seq 7: Mark 172 Meas 103 - always crashes on playback.
577
-Seq 4: Mark 76  Meas 40  - crash!
578
-Seq 2: First mark meas 23
579
-  Crash seems to happen in cmProc4.c: _cmScMatchInitMtx() ln:1311.
580
-  It looks like a memory overrun.  Looks like the first line is wrong
581
-  shouldn't:
582
-    if( rn >p->mrn && cn > p->mcn )
583
-  be	
584
-	if(rn*cn > p->mrn*p->mcn)
585
-
586
-
587
-
588
-BUGS:
589
-// Apr 20
590
-The tempo measurement can produce invalid values.  Set score to 22 then play Mark 38.
591
-First tempo measurement is a non-sense value - probably produced by an div by zero.
592
-Also: Mark 8, Meas 10.
593
-
594
-Crash on playing Mark 37.
595
-
596
-Click on list control outside below list item - crash!
597
-
598
-Select Mark 171 (Seq 7) Section 43, m103 crash
599
-
600
-
601
-// Feb 27
602
-+ Audio seems to preceded MIDI by around 250ms this probably arises
603
-from a delay that was inserted by 'mas'. Can the delay be removed?
604
-
605
-// Feb 25
606
-+ Fix the audio file input/output ports 
607
-
608
-//
609
-// Feb 6 & 7 
610
-//
611
-+ Performed notes which arrive which about 50ms could be
612
-considered chords.   Extra notes notes which were not part of
613
-the chord are probably common and should be discounted during
614
-the cost analysis.
615
-
616
-+ (done) Add alignment cost as a 4th variable along with dyn,even,tempo.
617
-
618
-+ (done) In the score print out (score_loc.txt) Section 2 is starting on Bar 5
619
-when it should start inside Bar 7.
620
- 
621
-+ In Take 1 the 2nd dynamics set is not triggered.
622
-
623
-+ In Take 3 Eveness 2 the C2 and F#4 are NOT missing althrough they are in the 
624
-evalation.  Also E7 which ends that set is not marked with an 'e'.
625
-
626
-+ It is possible to have even-non-grace sets where the note rythm value's are not
627
-all the same (e.g. bar 20 ) 
628
-
629
-+ User soft-thresholds for the dynamics categories.
630
-
631
-+ Set 39 even measure 25 shows the first note as G#2 when it should be C#1
632
-
633
-+ Missig MIDI note sounded: 
634
-C1   score-loc:132
635
-A#2            140
636
-A5             173
637
-C#2            195   Marker 36
638
-E5,G33,A#2,C#1 212-218 Marker 36
639
-E3             185     Marker 37
640
-F5,C#4,G#5     986     Marker-Down 204     
641
-
642
-=============================================================================
643
-Sequence Editor Design
644
-
645
-1) Performance pre-processing:
646
-  For each annotated performance section align the performance to the score.
647
-  and fill in the 
648
-   sectionArray :
649
-   [
650
-     section :
651
-     {
652
-       seq    : 1           // time-line this section resides in   
653
-       marker : 12          // time-line id of this sections begin marker 
654
-     
655
-       eventArray :
656
-       [
657
-         event : 
658
-         {
659
-
660
-	   // score tracking status
661
-	   // aligned   = event matches a score location (scloc is valid)
662
-	   // inserted  = inserted note that does not match the score (scloc is not valid)
663
-	   // pitch_err = matches score with the wrong pitch (scloc is valid)
664
-	   // order_err = matches score but not is out of order (scloc is valid)
665
-	   status: aligned | inserted | pitch_err | order_err
666
-
667
-	   // score location this event is associated with
668
-	   // or -1 if the note does not match a score event
669
-           scloc:    154      
670
-
671
-	   // performance sample index as an offset into the time-line sequence
672
-	   smpIdx:   134689   
673
-
674
-	   // performance event duration
675
-	   durtn:    234567  
676
-	   
677
-	   // optional note event information
678
-	   note : 
679
-	   {
680
-	     pitch: 60
681
-	     vel:   110
682
-	   }
683
-
684
-	   // optional pedal event information
685
-	   pedal :
686
-	   {
687
-	     label: quiet, sust, damp
688
-	     down : true
689
-	   }
690
-         }      
691
-       ]
692
-     }
693
-   ]
694
- 
695
-2) Create a new sequence by combining sections:
696
-
697
-  a. Load the section array file created in step 1).
698
-  b. Select a set of sections to form the basis of the new sequence.
699
-  c. Resolve overlapping notes by disabling extra notes that share the
700
-     same score location.
701
-  d. Insert missing notes by selecting a note(s) from the score.
702
-  e. Increase or decrease the inter-onset interval between two notes.
703
-     (this will adjust the absolute time offset of all subsequent notes)
704
-  f. Edit the velocity of a note.
705
-  g. Shift the position of a pedal down or up event.
706
-  h. Insert a pedal event.
707
-  i. Write the sequence to a file.
708
-  j. Load a sequence from a file.
709
-
710
-3) User Interface:
711
-  Two Views:
712
-  a. Single Frame View: 
713
-     Display score bars and sections (same as score window) and overlay 
714
-     section boxes. Select sections to include in a new sequence.
715
-     Select Edit | Create Sequence.
716
-
717
-  b. Single Frame View: 
718
-     The begin marker of each frame includes the section label.
719
-     Selecting the begin section marker selects all events in the section.  
720
-       (this does not have to be done explicitely)
721
-     Each note in each section is displayed piano-roll style.
722
-        The notes are colored according to their 'status'.
723
-	Overlapping notes are shown in red.
724
-	Disabled notes are shown as hollow boxes.
725
-     A strip at the bottom shows the pedal state.
726
-     
727
-
728
-     Menu:
729
-       Show/Hide selected events / sections.
730
-       Enable/Disable selected events.
731
-        
732
-     
733
-=============================================================================
734
-
735
-                                  
736
-                                      
737
-                             a                   b
738
-    piano --> mic ----> adc --> fbctl --> xform -+-> dac --> spkr --> room --+
739
-     ^         ^                  ^              |                           |
740
-     |         |                  |              |                           |
741
-     |         |                  +--------------+                           |
742
-     +---------+-------------------------------------------------------------+
743
-
744
-fbctl Design:
745
-
746
-      
747
-
748
-1. Measure the spectrum of the room impulse response.
749
-   a. Generate a sine sweep, or Max. length sequance, s,  with a non-symetric envelope.
750
-               
751
-   b. Playback s and record the result N times
752
-      using different mic. positions.
753
-      
754
-   c. S = STFT(s)
755
-      R = sum(STFT(r_i) / N
756
-      
757
-   d. Align S and R using PHAT.
758
-   e. RIR = mean(S - R)
759
-
760
-
761
-2. Find the delay, d, which minimizes sum(a-b)
762
-
763
-       a ----------> DFT() --\
764
-                              - --->  
765
-       b --> z^d --> DFT() --/
766
-       
767
-
768
-=============================================================================
769
-
770
-  1. Use spectral flux to generate an impulse signal: f.
771
-  2. f' = 1-f correlates to the level of time dependency in the signal.
772
-     Frames with a high time dependency contain more reberberated signal.
773
-  3. Setup a 2xT NMF problem  Y = HE
774
-  4. Initialize spectrum 1 as the f weighted avg. of all spectra.
775
-  5. Initialize spectrum 2 as the f' weighted avg. of all spectra.
776
-  6. Initialize env. 1 as f
777
-  7. Initialize env. 2 as f'
778
-  8. Allow all other variables, other than f', to vary - spectrum 2
779
-     is the impulse response.  
780
-
781
-   alternatively use gradient descent, or alternating LS, rather than NMF
782
-
783
-
784
-=============================================================================
785
-
786
-New vector library:
787
-1. Use type generic pre-proc feature.
788
-2. Explicit matrix representation.
789
-3. Use BLAS and LAPACK.
790
-
791
-
792
-=============================================================================
793
-
794
--------------------------------------------------------------------------------
795
-OSX - Install Notes
796
--------------------------------------------------------------------------------
797
-1. Install XQuartz (from xquartz.macosforge.org)
798
-0. Install Xcode
799
-1. Install macports  (export PATH="/opt/local/bin:/opt/local/sbin:$PATH")
800
-2. sudo port install autoconf
801
-3. sudo port install automake
802
-4. sudo port install libtool
803
-5. sudo port install fftw-3
804
-6. sudo port install fftw-3-single
805
-7. port select --list gcc (which gcc is active)
806
-8. sudo port install gcc47
807
-9. sudo port --set gcc mp-gcc47 (6/15/15 the default, mp-gcc5, works without this stp)
808
-   sudo port intsall gdb  (then edit /System/Library/LaunchDaemons/com.apple.taskgated.plist <string>s<string> to <string>sp<string>.
809
-10. sudo port install fltk
810
-11. sudo port install xorg-libX11 
811
-12.sudo port install git
812
-13.sudo port install emacs +x11
813
-14 install ~/Library/Preferences/org.larke.kc.txt (this is not required)
814
-15 create ~/Library/Preferences/kc
815
-16 Install ~/Library/Preferences/time_line.js, time_line_preset.js, time_line_preset.csv
816
-
817
-
818
-A. In System Preferences | Keyboard | Shortcuts replace Ctl-<left> with Ctl-Alt-Left in the
819
-Spaces shortcut. This allows emacs to use C-<left> for word-back.
820
-
821
-B. Set keycodes in xmod_apple_keymap to force 'Alt' to be emacs meta key.
822
-
823
-keycode <Cmd> = Super_L NoSymbol Super_L NoSymbol
824
-keycode <Alt> = Alt_L Meta_L Alt_L Meta_l
825
-
826
-Replace <Cmd> with command code of Command key.
827
-replace <Alt> with command code of Alt key.
828
-Use 'xev' to get the keycodes.
829
-
830
-
831
-C. Uncheck enable key equivalents under X11 to prevent Cmd-W from closing window in emacs.
832
-
833
--------------------------------------------------------------------------------
834
-Linux - Install Notes
835
--------------------------------------------------------------------------------
836
-1. autoconf
837
-2. automake
838
-3. gcc-c++ (to get g++)
839
-4. blas-devel x64
840
-5. atlas-devel x64
841
-6. lapack-devel x64
842
-7. download fftw-3:  ./configure --prefix=/usr 
843
-8. fftwf-3        :  ./configure --prefix=/usr --enable-single
844
-9. fltk-devel x64
845
-
846
-
847
-

Loading…
Cancel
Save