picadae calibration programs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

p_ac.yml 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. {
  2. p_ac: {
  3. # Audio device setup
  4. audio_off: {
  5. inPortLabel: "5 USB Audio CODEC:", #"HDA Intel PCH: CS4208", # "5 USB Audio CODEC:", #"5 USB Sound Device",
  6. outPortLabel: ,
  7. },
  8. midi: {
  9. inMonitorFl: False,
  10. outMonitorFl: False,
  11. throughFl: False,
  12. #inPortLabel: "Fastlane:Fastlane MIDI A",
  13. #outPortLabel: "Fastlane:Fastlane MIDI A"
  14. inPortLabel: "picadae:picadae MIDI 1",
  15. outPortLabel: "picadae:picadae MIDI 1"
  16. },
  17. # Picadae API args
  18. serial_dev: "/dev/ttyACM0",
  19. serial_baud: 38400,
  20. i2c_base_addr: 21,
  21. prescaler_usec: 16,
  22. serial_sync_timeout_ms: 10000,
  23. # MeasureSeq args
  24. outDir: "~/temp/p_ac_3g",
  25. noteDurMs: 500,
  26. pauseDurMs: 500,
  27. reversePulseListFl: True,
  28. useFullPulseListFl: True,
  29. maxSilentNoteCount: 4,
  30. silentNoteMaxPulseUs: 15000,
  31. silentNoteMinDurMs: 250,
  32. # Midi file player
  33. midiFileFn: "/home/kevin/media/audio/midi/txt/round4.txt",
  34. full_pulse0L: [ 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 8000, 9000, 10000, 12000, 14000, 18000, 22000, 26000, 30000, 34000, 40000],
  35. full_pulse1L: [ 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 20000, 22000, 24000, 26000, 30000, 32000, 34000, 36000, 40000],
  36. full_pulse2L: [ 10000, 10500, 11000, 11500, 12000, 12500, 13000, 13500, 14000, 14500, 15000, 15500, 16000, 16500, 17000, 17500, 18000, 18500, 20000, 22000, 24000, 26000, 30000, 32000, 34000, 36000, 40000],
  37. full_pulse3L: [ 10000, 10125, 10250, 10500, 10625, 10750, 10875, 11000, 11125, 11250, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14500, 14625, 14750, 14875, 15000, 15500, 16000, 16500, 17000, 17500, 18000, 18500, 20000, 22000, 24000, 26000, 30000, 32000, 34000, 36000, 40000],
  38. full_pulse4L: [ 8000, 8125, 8250, 8375, 8500, 8625, 8750, 8875, 9000, 9125, 9250, 9375, 9500, 9625, 9750, 9875, 10000, 10125, 10250, 10375, 10500, 10625, 10750, 10875, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14375, 14250, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 30000, 32000, 34000, 36000, 40000],
  39. full_pulse5L: [ 10000, 10125, 10250, 10375, 10500, 10625, 10750, 10875, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 30000, 32000, 34000, 36000, 40000],
  40. full_pulse6L: [ 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 19000, 19500, 20000, 20500, 21000, 21500, 22000, 22500, 23000, 23500, 24000, 24500, 25000, 25500, 26000, 26500, 27000, 27500, 28000, 28500, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 40000 ],
  41. full_pulseMainL: [ 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 19000, 19500, 20000, 20500, 21000, 21500, 22000, 22500, 23000, 23500, 24000, 24500, 25000, 25500, 26000, 26500, 27000, 27500, 28000, 28500, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 40000 ],
  42. full_pulse8L: [ 10000, 10050, 10100, 10150, 10200, 10250, 10300, 10350, 10400, 10450, 10500, 10550, 10600, 10650, 10700, 10750, 10800, 10850, 10900, 10950, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 19000, 19500, 20000, 20500, 21000, 21500, 22000, 22500, 23000, 23500, 24000, 24500, 25000, 25500, 26000, 26500, 27000, 27500, 28000, 28500, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 40000 ],
  43. full_pulseL: [11000, 11075, 11150, 11225, 11300, 11375, 11450, 11525, 11600,11675, 11750, 11825, 11900, 11975, 12050, 12125, 12200, 12275,12350, 12425, 12500, 12575, 12650, 12725, 12800, 12875, 12950, 13025, 13100, 13175, 13250, 13325, 13400, 13475, 13550, 13625, 13700, 13775, 13850, 13925, 14000, 14075, 14150, 14225, 14300, 14375, 14450, 14525, 14600, 14675, 14750, 14825, 14900, 14975],
  44. full_pulse10L: [ 8750, 8800, 8850, 8900, 8950, 9000, 9050, 9100, 9150, 9200, 9250, 9300, 9350, 9400, 9450,9500, 9550, 9600, 9650, 9700, 9750, 9800, 9850, 9900, 9950, 10000, 10050, 10100, 10150, 10200, 10250, 10300, 10350, 10400, 10450, 10500, 10550, 10600, 10650, 10700, 10750, 10800, 10850, 10900, 10950, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000, 15250, 15375, 15500, 15750, 16000, 16250, 16500, 16750, 17000, 17250, 17500, 17750, 18000, 18250, 18500, 18750, 19000, 19500, 20000, 20500, 21000, 21500, 22000, 22500, 23000, 23500, 24000, 24500, 25000, 25500, 26000, 26500, 27000, 27500, 28000, 28500, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 40000 ],
  45. full_pulse11L: [ 9000, 9050, 9100, 9150, 9200, 9250, 9300, 9350, 9400, 9450,9500, 9550, 9600, 9650, 9700, 9750, 9800, 9850, 9900, 9950, 10000, 10050, 10100, 10150, 10200, 10250, 10300, 10350, 10400, 10450, 10500, 10550, 10600, 10650, 10700, 10750, 10800, 10850, 10900, 10950, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000 ],
  46. full_pulse12L: [ 8750, 8800, 8850, 8900, 8950, 9000, 9050, 9100, 9150, 9200, 9250, 9300, 9350, 9400, 9450,9500, 9550, 9600, 9650, 9700, 9750, 9800, 9850, 9900, 9950, 10000, 10050, 10100, 10150, 10200, 10250, 10300, 10350, 10400, 10450, 10500, 10550, 10600, 10650, 10700, 10750, 10800, 10850, 10900, 10950, 11000, 11125, 11250, 11375, 11500, 11625, 11750, 11875, 12000, 12125, 12250, 12375, 12500, 12625, 12750, 12875, 13000, 13125, 13250, 13375, 13500, 13625, 13750, 13875, 14000, 14125, 14250, 14375, 14500, 14625, 14750, 14875, 15000 ],
  47. # RMS analysis args
  48. analysisArgs: {
  49. rmsAnalysisArgs: {
  50. rmsWndMs: 300, # length of the RMS measurment window
  51. rmsHopMs: 30, # RMS measurement inter window distance
  52. dbLinRef: 0.01, # length of initial portion of signal to use to calculate the dB reference level
  53. harmCandN: 5, # count of harmonic candidates to locate during harmonic based RMS analysis
  54. harmN: 3, # count of harmonics to use to calculate harmonic based RMS analysis
  55. durDecayPct: 40, # percent drop in RMS to indicate the end of a note
  56. },
  57. resampleMinDb: 7.0, # note's less than this will be skipped
  58. resampleNoiseLimitPct: 5.0, #
  59. resampleMinDurMs: 800, # notes's whose duration is less than this will be skipped
  60. minAttkDb: 7.0, # threshold of silence level
  61. maxDbOffset: 0.25, # travel down the from the max. note level by at most this amount to locate the max. peak
  62. maxDeltaDb: 1.5, # maximum db change between volume samples (changes greater than this will trigger resampling)
  63. samplesPerDb: 4, # count of samples per dB to resample ranges whose range is less than maxDeltaDb
  64. minSampleDistUs: 50, # minimum distance between sample points in microseconds
  65. auditionNoteN: 19, # count of notes to play for audition
  66. finalPulseListCacheFn: "/home/kevin/temp/final_pulse_list_cache.pickle",
  67. rmsAnalysisCacheFn: "/home/kevin/temp/rms_analysis_cache.pickle"
  68. },
  69. manualMinD: {
  70. 23: [2, 24],
  71. 24: [2, 18],
  72. 25: [2, 41],
  73. 26: [2, 26], #
  74. 27: [2, 35], # (36 is an outlier)
  75. 28: [2, 35], # /36 (resample?)
  76. 29: [2, 22], # /23 (resample?)
  77. 30: [2, 28], # /29
  78. 31: [2, 39], #
  79. 32: [2, 27], #
  80. 33: [2, 10], #
  81. 34: [2, 27], # (29 outlier)
  82. 35: [2, 15], #
  83. 36: [2, 16], # ngz: (0 32 36) (1 31 36)
  84. 37: [2, 18], #
  85. 38: [2, 33], #
  86. 39: [2, 18], #
  87. 40: [2, 6], # ngz: (0 25 41)
  88. 41: [2, 22], # ngz: (2 9 22)
  89. 42: [2, 11], #
  90. 43: [2, 7], #(8 outlier)], #
  91. 44: [2, 19],
  92. 45: [4, 7], # 5 sample traes
  93. 46: [2, 4],
  94. 47: [2, 11], # /12
  95. 48: [2, 27], # /28
  96. 49: [2, 12],
  97. 50: [2, 6],
  98. 51: [2, 14],
  99. 52: [2, 26],
  100. 53: [3, 24 ], # ngz at onset
  101. 54: [2, 21], # /22
  102. 55: [2, 10], # /11
  103. 56: [2, 5],
  104. 57: [2, 6],
  105. 58: [2, 11],
  106. 59: [2, 5],
  107. 60: [2, 13],
  108. 61: [4, 5],
  109. 62: [2, 7],
  110. 63: [2, 12],
  111. 64: [3, 33],
  112. 65: [2, 23],
  113. 66: [2, 36],
  114. 67: [2, 16],
  115. 68: [2, 1], # needs decreased start us
  116. 69: [1, 7],
  117. 70: [2, 34],
  118. 71: [2, 23],
  119. 72: [2, 14],
  120. 73: [2, 30],
  121. 74: [2, 26],
  122. 75: [2, 31],
  123. 76: [2, 20],
  124. 77: [2, 28],
  125. 78: [2, 28],
  126. 79: [2, 44],
  127. 80: [2, 25],
  128. 81: [2, 36],
  129. 82: [2, 51], # incorrect hold voltages (resample)
  130. 83: [2, 43],
  131. 84: [2, 38],
  132. 85: [2, 27],
  133. 86: [2, 43],
  134. 87: [2, 33],
  135. 88: [2, 42],
  136. 89: [3, 21], # ngz (3 15 19)
  137. 91: [2, 4], # bad samples (resample)
  138. 92: [2, 10],
  139. 93: [2, 42],
  140. 94: [2, 39],
  141. 95: [2, 19],
  142. 96: [2, 1], # needs decreaed start us ngz: (0 22 38)
  143. 97: [2, 51],
  144. 98: [2, 30],
  145. 99: [2, 41],
  146. 100: [2, 24],
  147. 101: [2, 39],
  148. },
  149. manualAnchorPitchMinDbL: [ 23, 27, 31, 34, 44, 51, 61, 70, 74, 81, 87, 93, 96, 101 ],
  150. manualAnchorPitchMaxDbL: [ 23, 32, 49, 57, 67, 76, 83, 93, 99, 101 ],
  151. calibrateArgs: {
  152. outDir: "~/temp/calib2",
  153. outLabel: "test_3",
  154. inDir: "~/temp/p_ac_3f",
  155. analysisD: {
  156. rmsWndMs: 300, # length of the RMS measurment window
  157. rmsHopMs: 30, # RMS measurement inter window distance
  158. dbLinRef: 0.01, # length of initial portion of signal to use to calculate the dB reference level
  159. harmCandN: 5, # count of harmonic candidates to locate during harmonic based RMS analysis
  160. harmN: 3, # count of harmonics to use to calculate harmonic based RMS analysis
  161. durDecayPct: 40 # percent drop in RMS to indicate the end of a note
  162. },
  163. noteOnDurMs: 500,
  164. noteOffDurMs: 500,
  165. #pitchL: [ 31, 33, 34, 35 ], # list of pitches
  166. #pitchL: [ 80,81,82 ], # 8
  167. pitchL: [ 40,41,42 ], # 12
  168. targetDbL: [ 13 ], # list of target db
  169. minMeasDurMs: 140, # minimum candidate note duration
  170. tolDbPct: 2.0, # tolerance as a percent of targetDb above/below used to form match db window
  171. maxPulseUs: 45000, # max. allowable pulse us
  172. minPulseUs: 8000, # min. allowable pulse us
  173. initPulseUs: 15000, # pulseUs for first note
  174. minMatchN: 3, # at least 3 candidate notes must be within tolDbPct to move on to a new targetDb
  175. maxAttemptN: 30, # give up if more than 20 candidate notes fail for a given targetDb
  176. dbSrcLabel: 'hm', # source of the db measurement 'td' (time-domain) or 'hm' (harmonic)
  177. holdDutyPctD: {
  178. 23: [[0, 70]],
  179. 24: [[0, 75]],
  180. 25: [[0, 70]],
  181. 26: [[0, 65]],
  182. 27: [[0, 70]],
  183. 28: [[0, 70]],
  184. 29: [[0, 65]],
  185. 30: [[0, 65]],
  186. 31: [[0, 65]],
  187. 32: [[0, 60]],
  188. 33: [[0, 65]],
  189. 34: [[0, 65]],
  190. 35: [[0, 65]],
  191. 36: [[0, 65]],
  192. 37: [[0, 65]],
  193. 38: [[0, 60]],
  194. 39: [[0, 60]],
  195. 40: [[0, 55]],
  196. 41: [[0, 60]],
  197. 42: [[0, 60]],
  198. 43: [[0, 65]],
  199. 44: [[0, 60]],
  200. 45: [[0, 60]],
  201. 46: [[0, 60]],
  202. 47: [[0, 60]],
  203. 48: [[0, 70]],
  204. 49: [[0, 60]],
  205. 50: [[0, 50]],
  206. 51: [[0, 50]],
  207. 52: [[0, 55]],
  208. 53: [[0, 50]],
  209. 54: [[0, 50]],
  210. 55: [[0, 50], [22000, 55]],
  211. 56: [[0, 50]],
  212. 57: [[0, 50]],
  213. 58: [[0, 50]],
  214. 59: [[0, 60]],
  215. 60: [[0, 50]],
  216. 61: [[0, 50]],
  217. 62: [[0, 55]],
  218. 63: [[0, 50]],
  219. 64: [[0, 50]],
  220. 65: [[0, 50], [17000, 65]],
  221. 66: [[0, 53]],
  222. 67: [[0, 55]],
  223. 68: [[0, 53]],
  224. 69: [[0, 55]],
  225. 70: [[0, 50]],
  226. 71: [[0, 50]],
  227. 72: [[0, 60]],
  228. 73: [[0, 50]],
  229. 74: [[0, 60]],
  230. 75: [[0, 55]],
  231. 76: [[0, 70]],
  232. 77: [[0, 50], [15000, 60], [19000, 70]],
  233. 78: [[0, 60]],
  234. 79: [[0, 50], [15000, 60], [19000, 70]],
  235. 80: [[0, 45]],
  236. 81: [[0, 50], [15000, 70]],
  237. 82: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  238. 83: [[0, 50], [15000, 65]],
  239. 84: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  240. 85: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  241. 86: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  242. 87: [[0, 50], [14000, 60]],
  243. 88: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  244. 89: [[0, 50], [12500, 60], [14000, 65], [17000, 70]],
  245. 91: [[0, 40], [12500, 50], [14000, 60], [17000, 65]],
  246. 92: [[0, 40], [14000, 50]],
  247. 93: [[0, 40], [12500, 50], [14000, 60], [17000, 65]],
  248. 94: [[0, 40], [14000, 50]],
  249. 95: [[0, 40], [12500, 50], [14000, 60], [17000, 65]],
  250. 96: [[0, 40], [12500, 50], [14000, 60], [17000, 65]],
  251. 97: [[0, 40], [14000, 50]],
  252. 98: [[0, 50]],
  253. 99: [[0, 50]],
  254. 100: [[0, 50]],
  255. 101: [[0, 50]],
  256. 106: [[0, 50]]
  257. },
  258. },
  259. key_mapL: [
  260. { index: 0, board: 1, ch: 1, type: 'wB', midi: 21, class: 'A' },
  261. { index: 1, board: 1, ch: 2, type: 'Bl', midi: 22, class: 'A#' },
  262. { index: 2, board: 1, ch: 3, type: 'wF', midi: 23, class: 'B' },
  263. { index: 3, board: 1, ch: 4, type: 'wB', midi: 24, class: 'C' },
  264. { index: 4, board: 1, ch: 5, type: 'Bl', midi: 25, class: 'C#' },
  265. { index: 5, board: 1, ch: 6, type: 'wF', midi: 26, class: 'D' },
  266. { index: 6, board: 1, ch: 7, type: 'Bl', midi: 27, class: 'D#' },
  267. { index: 7, board: 1, ch: 8, type: 'wB', midi: 28, class: 'E' },
  268. { index: 8, board: 1, ch: 9, type: 'wF', midi: 29, class: 'F' },
  269. { index: 9, board: 1, ch: 10, type: 'Bl', midi: 30, class: 'F#' },
  270. { index: 10, board: 1, ch: 11, type: 'wB', midi: 31, class: 'G' },
  271. { index: 11, board: 2, ch: 1, type: 'Bl', midi: 32, class: 'G#' },
  272. { index: 12, board: 2, ch: 2, type: 'wF', midi: 33, class: 'A' },
  273. { index: 13, board: 2, ch: 3, type: 'Bl', midi: 34, class: 'A#' },
  274. { index: 14, board: 2, ch: 4, type: 'wB', midi: 35, class: 'B' },
  275. { index: 15, board: 2, ch: 5, type: 'wF', midi: 36, class: 'C' },
  276. { index: 16, board: 2, ch: 6, type: 'Bl', midi: 37, class: 'C#' },
  277. { index: 17, board: 2, ch: 7, type: 'wB', midi: 38, class: 'D' },
  278. { index: 18, board: 2, ch: 8, type: 'Bl', midi: 39, class: 'D#' },
  279. { index: 19, board: 2, ch: 9, type: 'wF', midi: 40, class: 'E' },
  280. { index: 20, board: 2, ch: 10, type: 'wB', midi: 41, class: 'F' },
  281. { index: 21, board: 2, ch: 11, type: 'Bl', midi: 42, class: 'F#' },
  282. { index: 22, board: 3, ch: 1, type: 'wF', midi: 43, class: 'G' },
  283. { index: 23, board: 3, ch: 2, type: 'Bl', midi: 44, class: 'G#' },
  284. { index: 24, board: 3, ch: 3, type: 'wB', midi: 45, class: 'A' },
  285. { index: 25, board: 3, ch: 4, type: 'Bl', midi: 46, class: 'A#' },
  286. { index: 26, board: 3, ch: 5, type: 'wF', midi: 47, class: 'B' },
  287. { index: 27, board: 3, ch: 6, type: 'wB', midi: 48, class: 'C' },
  288. { index: 28, board: 3, ch: 7, type: 'Bl', midi: 49, class: 'C#' },
  289. { index: 29, board: 3, ch: 8, type: 'wF', midi: 50, class: 'D' },
  290. { index: 30, board: 3, ch: 9, type: 'Bl', midi: 51, class: 'D#' },
  291. { index: 31, board: 3, ch: 10, type: 'wB', midi: 52, class: 'E' },
  292. { index: 32, board: 3, ch: 11, type: 'wF', midi: 53, class: 'F' },
  293. { index: 33, board: 4, ch: 1, type: 'Bl', midi: 54, class: 'F#' },
  294. { index: 34, board: 4, ch: 2, type: 'wB', midi: 55, class: 'G' },
  295. { index: 35, board: 4, ch: 3, type: 'Bl', midi: 56, class: 'G#' },
  296. { index: 36, board: 4, ch: 4, type: 'wF', midi: 57, class: 'A' },
  297. { index: 37, board: 4, ch: 5, type: 'Bl', midi: 58, class: 'A#' },
  298. { index: 38, board: 4, ch: 6, type: 'wB', midi: 59, class: 'B' },
  299. { index: 39, board: 4, ch: 7, type: 'wF', midi: 60, class: 'C' },
  300. { index: 40, board: 4, ch: 8, type: 'Bl', midi: 61, class: 'C#' },
  301. { index: 41, board: 4, ch: 9, type: 'wB', midi: 62, class: 'D' },
  302. { index: 42, board: 4, ch: 10, type: 'Bl', midi: 63, class: 'D#' },
  303. { index: 43, board: 4, ch: 11, type: 'wF', midi: 64, class: 'E' },
  304. { index: 44, board: 5, ch: 1, type: 'wB', midi: 65, class: 'F' },
  305. { index: 45, board: 5, ch: 2, type: 'Bl', midi: 66, class: 'F#' },
  306. { index: 46, board: 5, ch: 3, type: 'wF', midi: 67, class: 'G' },
  307. { index: 47, board: 5, ch: 4, type: 'Bl', midi: 68, class: 'G#' },
  308. { index: 48, board: 5, ch: 5, type: 'wB', midi: 69, class: 'A' },
  309. { index: 49, board: 5, ch: 6, type: 'Bl', midi: 70, class: 'A#' },
  310. { index: 50, board: 5, ch: 7, type: 'wF', midi: 71, class: 'B' },
  311. { index: 51, board: 5, ch: 8, type: 'wB', midi: 72, class: 'C' },
  312. { index: 52, board: 5, ch: 9, type: 'Bl', midi: 73, class: 'C#' },
  313. { index: 53, board: 5, ch: 10, type: 'wF', midi: 74, class: 'D' },
  314. { index: 54, board: 5, ch: 11, type: 'Bl', midi: 75, class: 'D#' },
  315. { index: 55, board: 6, ch: 1, type: 'wB', midi: 76, class: 'E' },
  316. { index: 56, board: 6, ch: 2, type: 'wF', midi: 77, class: 'F' },
  317. { index: 57, board: 6, ch: 3, type: 'Bl', midi: 78, class: 'F#' },
  318. { index: 58, board: 6, ch: 4, type: 'wB', midi: 79, class: 'G' },
  319. { index: 59, board: 6, ch: 5, type: 'Bl', midi: 80, class: 'G#' },
  320. { index: 60, board: 6, ch: 6, type: 'wF', midi: 81, class: 'A' },
  321. { index: 61, board: 6, ch: 7, type: 'Bl', midi: 82, class: 'A#' },
  322. { index: 62, board: 6, ch: 8, type: 'wB', midi: 83, class: 'B' },
  323. { index: 63, board: 6, ch: 9, type: 'wF', midi: 84, class: 'C' },
  324. { index: 64, board: 6, ch: 10, type: 'Bl', midi: 85, class: 'C#' },
  325. { index: 65, board: 6, ch: 11, type: 'wB', midi: 86, class: 'D' },
  326. { index: 66, board: 6, ch: 1, type: 'Bl', midi: 87, class: 'D#' },
  327. { index: 67, board: 6, ch: 2, type: 'wF', midi: 88, class: 'E' },
  328. { index: 68, board: 6, ch: 3, type: 'wB', midi: 89, class: 'F' },
  329. { index: 69, board: 6, ch: 4, type: 'Bl', midi: 90, class: 'F#' },
  330. { index: 70, board: 6, ch: 5, type: 'wF', midi: 91, class: 'G' },
  331. { index: 71, board: 6, ch: 6, type: 'Bl', midi: 92, class: 'G#' },
  332. { index: 72, board: 6, ch: 7, type: 'wB', midi: 93, class: 'A' },
  333. { index: 73, board: 6, ch: 8, type: 'Bl', midi: 94, class: 'A#' },
  334. { index: 74, board: 6, ch: 9, type: 'wF', midi: 95, class: 'B' },
  335. { index: 75, board: 6, ch: 10, type: 'wB', midi: 96, class: 'C' },
  336. { index: 76, board: 6, ch: 11, type: 'Bl', midi: 97, class: 'C#' },
  337. { index: 77, board: 7, ch: 1, type: 'wF', midi: 98, class: 'D' },
  338. { index: 78, board: 7, ch: 2, type: 'Bl', midi: 99, class: 'D#' },
  339. { index: 79, board: 7, ch: 3, type: 'wB', midi: 100, class: 'E' },
  340. { index: 80, board: 7, ch: 4, type: 'wF', midi: 101, class: 'F' },
  341. { index: 81, board: 7, ch: 5, type: 'Bl', midi: 102, class: 'F#' },
  342. { index: 82, board: 7, ch: 6, type: 'wB', midi: 103, class: 'G' },
  343. { index: 83, board: 7, ch: 7, type: 'Bl', midi: 104, class: 'G#' },
  344. { index: 84, board: 7, ch: 8, type: 'wF', midi: 105, class: 'A' },
  345. { index: 85, board: 7, ch: 9, type: 'Bl', midi: 106, class: 'A#' },
  346. { index: 86, board: 7, ch: 10, type: 'wB', midi: 107, class: 'B' },
  347. { index: 87, board: 7, ch: 11, type: 'wF', midi: 108, class: 'C' },
  348. ]
  349. }
  350. }