Programmable real-time audio signal processing application
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

notes.txt 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. CONTENTS:
  2. 1) TODO List
  3. 2) OSX Install Notes
  4. SPAT LAB SETUP:
  5. + 1. Stereo
  6. a. TotalMix - select 'diff. stereo' snapshot
  7. b. mixer: Recall preset 91 ('stereo diff')
  8. + 2. Direct - 24 channels - each channel goes in and out on same number.
  9. a. TotalMix - select 'DTS_24ch'
  10. b. mixer: Recall preset 96 ('24ch firecac ufx')
  11. STRATEGY:
  12. + implement highly parallel version - which can take advantage of multiple processors
  13. to do more - acoustic pitch tracking, source separation based fades
  14. TODO:
  15. + When a cmMsgList item is selected it should send out the selected index
  16. after the individual data items rather than before them - this way the index
  17. can be used as a definitive signal to perform some action on the previously
  18. transmitted data items.
  19. + cmJson and cmLex should report the name of the file when with syntax error messages.
  20. + Use CSV for mod score file format (to eliminate need for labels)
  21. + Autoload of default pgm cfg, program, enable audio, sequence, score location.
  22. + (done) Circuit switcher patch.
  23. + Review and document the app threading and locking during audio file loading.
  24. + Remove old performance evaluation code from cmScore.
  25. + All programs should be able to reload without crashing via enabling/disabling audio.
  26. + (in new version) Select and save audio devices.
  27. + (done) Mac Conversion
  28. + (done) Live MIDI - to test audio/MIDI delay.
  29. + (done) As threshold increases overall volume decreases - add a compensation algorithm.
  30. + There are unintialized variable warnings on the release build.
  31. + Add preset delete.
  32. + All uses of va_copy() should have a complimentary va_end()
  33. + The list boxes do not show the currently selected item.
  34. + (done)MIDI note messages are sent but do not trigger notes on OSX.
  35. *** Usage Notes
  36. live - Disconnects WT cmd input (WT will not receive an 'on' msg)
  37. Disconnects TL reset input (TL will not receive a 'reset' msg)
  38. Disconnects MFP sel input (MPF will not receive an 'on' msg)
  39. Switches audio input to KR from WT to AIN.
  40. Turn the 'meas' checkbox 'on'.
  41. simulate - Turn the 'audio in' checkbox 'on'.
  42. Switch MFP output from SF to Nano.
  43. (SF MIDI input then comes from the MIDI port.)
  44. audio in - Switch audio input to KR from WT to AIN.
  45. meas - Instruct the SF to generate measurement outputs for the active meas. unit.
  46. Otherwise the measurements must be loaded from the recorded measurment list.
  47. print - Print a report from the SF.
  48. quiet - Turn off SF output.
  49. LA Secs - Fragment recd/play unit look-ahead time in seconds.
  50. Fade DbpSec - Framgent recd/play unit fade out time
  51. (time to fade to 0 following a fade msg)
  52. **** Live Test Score
  53. + Line 1048 has a red G#5 immediiately following another G#5. Is this correct?
  54. For now the second G#5 has been marked as a 'skip'.
  55. + Changed Tempo sections 25,26,27 to 40,47,47a
  56. + Measurements are taken for sections 51-54 but these sections follow bar 136 and
  57. are therefore outside the test. These sections have therefore been redirected
  58. to the downbeat of 201-204.
  59. *** Testing Notes:
  60. + Equipment List:
  61. Four Microphones: Four performance/ Four recording
  62. 2 inside 2 inside
  63. 2 overhead 2 overhead
  64. 4 powered speakers
  65. 2 Mixers (1 performance 1 recording)
  66. Performance Computer (harpo)/ Audio Interface (delta1010) / MIDI interface (Fastlane)
  67. Recording Computer (crel) / Audio Interface (delta 1010) / MIDI interface (???)
  68. Sensor Strip
  69. + Performance Setup
  70. +------ +
  71. Mic0 ----------->| |
  72. Mic1 ----------->| | sends +-----+ +-------+
  73. Mic2 ----------->| |------->| A/D | | | +------+ +--------+
  74. Mic3 ----------->| Mixer |------->| |------>| harpo |<-------| MIDI |<-----| sensor |
  75. aux | | | | | | +------+ | strip |
  76. Spkr0 <----------| |<-------| |<------| | +--------+
  77. Spkr1 <----------| |<-------| | +------ +
  78. main | | | |
  79. Spkr2 <----------| |<-------| D/A |
  80. Spkr3 <----------| |<-------| |
  81. +-------+ +-----+
  82. + Software Development
  83. 1) Create Score File
  84. 2) Create Recording Program (test with long MIDI playback generating audio - look for drift)
  85. Record the index of each MIDI event at it's location in an audio channel.
  86. 3) (DONE) The ability for the measurements to be called at the correct time must be built in.
  87. (or alternatively to use stored effects).
  88. 4) Effects applied to the playback fragments.
  89. 5) Allow all variables and patch connections to be set from the scMod script and have
  90. multiple scripts with varynig effects setups.
  91. 6) All 4 input mic's should go through the computer in order that they remain in phase
  92. (even though the overhead mics will not be used in the effect).
  93. 7) Add comb filters tuned according to the current MIDI notes as an additional effect.
  94. 8) Add EQ output stage (use mixer).
  95. 9) Compressor on input (???).
  96. 10) The dry signal should be able to be routed to seperate output channels - around the compressor.
  97. 11) CROSSFADE BUG - (DONE?) This may be fixed by the change to cmDspAvailCh which
  98. handles the case where no channels are available by sending an error message
  99. but not actually changing the state of the cross fader.
  100. 12) Create a mode in scMod which increments values based on an onset detector. So that
  101. changes only happen on attacks. This still doesn't help if the pedal is down (or
  102. if notes are sustained) but otherwise might be a better way to ramp parameters.
  103. 13) When scanning past ramping variables in scMod the end value should be
  104. taken as the next variable(???) - this is not necessarily correct
  105. because one never knows where a timed change may end - maybe ramped
  106. variables should include a 'skip value' giving the next ambient value
  107. for the ramped variable - experiment with this to figure out what works.
  108. + Experiments:
  109. 1) Speaker placement and live/electronics mix.
  110. 2) Sliver mix level
  111. 3) Try varying degree's of effects
  112. *** 11/19
  113. + The recd/play fade should be able to trigger from a capture note as well as
  114. playback note. An offset might also be useful.
  115. (Should be a default fade for each fragment - keyed to the input. This
  116. will be the fade that will occur when
  117. + Allow setting fade time in the score.
  118. + Allow setting fade rate based on 1.0 to 0.0 from fade point to end point.
  119. + Allow for multiple fades markers per fragment. (what does this mean?)
  120. + Write code to ignore playback when the score follower is not stable -
  121. or to throw out fragments where there is a mistake.
  122. + At the end of each fragment recording the fragment should be truncated by the look-ahead time
  123. to avoid capturing the attack of the marked note.
  124. + FX on fragments.
  125. + MUST be able to record synchronized audio and MIDI during test performance.
  126. + Part 2 data analysis: analyze the order of notes in counter rhythms.
  127. *** 11/1
  128. + Change the wavetable to read stereo files or add a second wavetable to play the other channel.
  129. + The console window is not always updating from the bottom.
  130. + The 'Dump' button results are not going to the console window.
  131. + Put dry signal into separate output channels.
  132. + Add 'adaptive' mode parameters to scale/range mappings.
  133. + The 'meas'->'parameter' mappings should changable from scMod (mod0.js)
  134. + The 'adaptive' mode parameters (e.g. offset and invert) need to be connected in the patch.
  135. + Create a mode in scMod which increments values based on an onset detector. So that
  136. changes only happen on attacks. This still doesn't help if the pedal is down (or
  137. if notes are sustained) but otherwise might be a better way to ramp parameters.
  138. + Mark all notes in the score according to how well they would act as places to transition.
  139. Notes held while the pedal is down would not be good places to transition.
  140. These indicators would then be used to determine where a section change can occur
  141. when the actual section change is missed.
  142. + (done) All score_loc's and event indexes in meas0.js that beginning with
  143. score location 743 must be decremented by two. (e.g. loc 743 becomes 741 ...)
  144. (score_loc_1.txt is now the correct score file)
  145. + When scanning past ramping variables in scMod the end value should be
  146. taken as the next variable(???) - this is not necessarily correct
  147. because one never knows where a timed change may end - maybe ramped
  148. variables should include a 'skip value' giving the next ambient value
  149. for the ramped variable - experiment with this to figure out what works.
  150. *** 10/17
  151. Select bar 129.
  152. Start on F5 before 129.
  153. Score follower jumps to loc. 978 then backs up to 973.
  154. *** 9/27
  155. * (DONE) Implement live recording for use in part 2.
  156. * Implement a delay between when a new section is set to trigger and when
  157. it actually does. This might allow transitions to be set up prior to when they are heard.
  158. * (DONE) OS-X version crashes when the printf("PROCSET ...) is removed from _cmScProcSets().
  159. * Add ability to set mappings and perf. measure settings to scMod.
  160. * The scMod should play through all changes up to the cur starting location so that
  161. we can mimic the state of playing the piece through but allow starting from any location.
  162. * Experiment with changing settings using the scMod ramping functions.
  163. * Make a source separation based fade using an filter/inverse filter based on the
  164. spectrum prior to the cross-fade. As an extra feature notice the state of the pedal
  165. and decay appropriately.
  166. * The electronic score needs the ability to specify that the output is sent to the audible
  167. cross-fade channel rather than the inactive channel.
  168. * Add a score mode that performs some action (e.g. incr/decr) on each incoming score follower
  169. event.
  170. * In AvailCh what happens when no available channels are found - this may be the cause
  171. of the cross-fade cut-out problem.
  172. * Add eq stage to output.
  173. * Setting the upper slope to a negative value is effective.
  174. * Demo Material: Seq 8 Mark 204 (1024-4 2048-4) Fade 10ms Cost->Threshold.
  175. - recd7 Mark 151
  176. - recd8 Mark 145 - same settings a previous take.
  177. - (recd9) Mark 145 - w/ changing xfade switch to mode 4 at 38
  178. - recd10 Mark 145 - same w/ no mode change
  179. - recd11 Mark 145 - a. 3 different takes w/ score constant - no perf. parameters used - fixed threshold=65
  180. - recd12 Mark 148 b.(same settings as recd9)
  181. - recd13 Mark 151 c.
  182. - recd14 Mark 161 Section 40 - fixed changes see mod0.js for note
  183. - Seq 6 Mark 145 M-92 (38,39,39a) (recd16) (recd17) (recd18) (recd19)
  184. - Seq 7 Mark 167 M-100
  185. *** 8/13
  186. * Cross-fade was cutting out during demo.
  187. * Missing takes between seq 7 and seq 8.
  188. * The MIDI is mis-aligned against the audio.
  189. * Are cost / tempo working? ... test changing mode.
  190. * Add an automatic volume adjustment to prevent parameter changes from causing large volume changes.
  191. * What can we actually do between after a MIDI note is received? Is it already too late to
  192. send parameters w/o affecting the attack of the note.
  193. * Live Test material
  194. Part 1: Meas:76 - (one measure) to get measurments for later sections
  195. Part 1: Meas:94 (sect 38 (Seq 6)) through Meas:136 (include 136 stop at 137).
  196. Part 2: ("/Users/kevin/temp/piano score part 2 draft 1 master m 232 - 241 1st 2 bts.sib")
  197. The downbeat of part two aligns with the 3rd beat (in 4/4) of 122 in the first part.
  198. Ends on measure 131 at end of beat 3.
  199. MISSING MIDI for measures 114:126
  200. *** July 10
  201. ** (done) Make separate mappings and scale/range controls for left and right.
  202. ** Add EQ output stage.
  203. ** Work out the speaker setup.
  204. ** Add capture/playback. Analyze notes on capture and do not play if there are
  205. any wrong notes. (Skipped notes however are acceptable.)
  206. **
  207. ** When a section transition is occurs late - (e.g. due to dropped notes) do not apply
  208. the transformation all at once - instead either ramp it in or step it in on subsequent
  209. attacks. Section transitions which are positively identified are intended to have
  210. dramatic changes so applying the updated parameters immediately is acceptable - but
  211. when the parameters are changed mid-section they should be much applied subtely.
  212. ** (done) Build a database of measurements and setup the program to be able to
  213. apply a given measurement at it's assigned section.
  214. ** Redevelop spectral distortion algorithm to use a spline as the transform.
  215. ** use Log frequency frequency transform instead of FFT.
  216. ** Allow for a continous window size via zero padding.
  217. ** Add a 'write' preset file button - so the preset file can be saved prior to next crash.
  218. ** measurement values can generate MAX_DBL - be sure that are not being sent through to the audio algorithm.
  219. (see ln:965 cmDspKr.c for a hack to fix this)
  220. ** add invert to scale/range to cause output to go in opposite direction.
  221. ** non-grace eveneess are used to generate a measurement value from previous tempo calibration section.
  222. (non-grace evenness notes therefore have two scores: 'evenness' and 'overall-duration').
  223. ** note that the default setting for dyn and even.
  224. ** add dyn,even,tempo,cost number boxes to allow artificial setting of these parameters.
  225. add dyn,even,tempo,cost as modulator variables to allow them to be set from the modulator
  226. With these additions we can simulate apply measurements at the 'application' section.
  227. ** add begining and ending measure numbers to 'seq' labels
  228. ** Gain compensation for mode 4.
  229. ** Do IFFT using cos()^c + i * sin()^c - these bases are orthognal but cause harmonic distortion.
  230. To be efficient this might involve writing an FFT function.
  231. // May 22
  232. ** Crashers (Should be tested but are probably already fixed following score follower debugging.)
  233. Seq 2 m24 Mark 36 & 38
  234. Seq 4: Mark 115
  235. Seq 4: m76-79 Mark 129 (W/ meas: even & dyn -> thresh change min Thresh to 40) - use 4th seq w/ b1
  236. Seq 6: m92 Mark 143
  237. Seq 7: m103 Mark 173
  238. Seq 7: Mark 172 Meas 103 - always crashes on playback.
  239. Seq 4: Mark 76 Meas 40 - crash!
  240. Seq 2: First mark meas 23
  241. Crash seems to happen in cmProc4.c: _cmScMatchInitMtx() ln:1311.
  242. It looks like a memory overrun. Looks like the first line is wrong
  243. shouldn't:
  244. if( rn >p->mrn && cn > p->mcn )
  245. be
  246. if(rn*cn > p->mrn*p->mcn)
  247. BUGS:
  248. // Apr 20
  249. The tempo measurement can produce invalid values. Set score to 22 then play Mark 38.
  250. First tempo measurement is a non-sense value - probably produced by an div by zero.
  251. Also: Mark 8, Meas 10.
  252. Crash on playing Mark 37.
  253. Click on list control outside below list item - crash!
  254. Select Mark 171 (Seq 7) Section 43, m103 crash
  255. // Feb 27
  256. + Audio seems to preceded MIDI by around 250ms this probably arises
  257. from a delay that was inserted by 'mas'. Can the delay be removed?
  258. // Feb 25
  259. + Fix the audio file input/output ports
  260. //
  261. // Feb 6 & 7
  262. //
  263. + Performed notes which arrive which about 50ms could be
  264. considered chords. Extra notes notes which were not part of
  265. the chord are probably common and should be discounted during
  266. the cost analysis.
  267. + (done) Add alignment cost as a 4th variable along with dyn,even,tempo.
  268. + (done) In the score print out (score_loc.txt) Section 2 is starting on Bar 5
  269. when it should start inside Bar 7.
  270. + In Take 1 the 2nd dynamics set is not triggered.
  271. + In Take 3 Eveness 2 the C2 and F#4 are NOT missing althrough they are in the
  272. evalation. Also E7 which ends that set is not marked with an 'e'.
  273. + It is possible to have even-non-grace sets where the note rythm value's are not
  274. all the same (e.g. bar 20 )
  275. + User soft-thresholds for the dynamics categories.
  276. + Set 39 even measure 25 shows the first note as G#2 when it should be C#1
  277. + Missig MIDI note sounded:
  278. C1 score-loc:132
  279. A#2 140
  280. A5 173
  281. C#2 195 Marker 36
  282. E5,G33,A#2,C#1 212-218 Marker 36
  283. E3 185 Marker 37
  284. F5,C#4,G#5 986 Marker 204
  285. -------------------------------------------------------------------------------
  286. OSX - Install Notes
  287. -------------------------------------------------------------------------------
  288. 1. Install macports
  289. 2. Install git-core (sudo port install git-core)
  290. 3. sudo port install fftw-3
  291. 4. sudo port install fftw-3--single
  292. 5. port select --list gcc (which gcc is active)
  293. 6. sudo port install gcc47
  294. 7. sudo port --set gcc mp-gcc47
  295. 8. sudo port install fltk
  296. 9. sudo port install xorg-libX11
  297. 10.sudo port install git-core
  298. 11.sudo port install emacs +x11
  299. 10 install ~/Library/Preferences/org.larke.kc.txt (is this required?)
  300. 11 create ~/Library/Preferences/kc
  301. 12 Install ~/Library/Preferences/time_line.js, time_line_preset.js, time_line_preset.csv