Programmable real-time audio signal processing application
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.

gen_mod.py 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894
  1. # Generate the 'mod' file for time_line_lite.js
  2. import sys,copy
  3. # Selected presets
  4. scoreSeqL = [
  5. ( 1,"g_1_d"),
  6. ( 18,"a"),
  7. ( 43,"d"),
  8. ( 55,"g_1_a"),
  9. ( 74,"a"),
  10. ( 80,"d"),
  11. ( 91,"dry"),
  12. ( 95,"b"),
  13. ( 102,"g_a"),
  14. ( 126,"b"),
  15. ( 142,"a"),
  16. ( 156,"a"),
  17. ( 171,"a"),
  18. ( 186,"b"),
  19. ( 231,"f_4"),
  20. ( 236,"g_1_d"),
  21. ( 264,"g_1_d"),
  22. ( 286,"dry"),
  23. ( 291,"f_3"),
  24. ( 353,"f_4"),
  25. ( 378,"g_1_a"),
  26. ( 384,"f_4"),
  27. ( 391,"g_1_d"),
  28. ( 451,"f_1"),
  29. ( 480,"f_4"),
  30. ( 544,"f_1"),
  31. ( 559,"dry"),
  32. ( 610,"dry"),
  33. ( 699,"g_a"),
  34. ( 778,"f_3"),
  35. ( 917,"g_1_d"),
  36. ( 971,"f_3"),
  37. (1025,"g_1_d"),
  38. (1090,"g_1_d")
  39. ]
  40. # Hard-coded presets
  41. initPresetStr = """
  42. init:
  43. [
  44. // wnd len:1=512 2=1024 3=2048 4=4096 5=8192
  45. { loc:-1, mod:m1, var:win0, type:set, rate:100, val:3 },
  46. { var:win1, rate:100, val:2 },
  47. // hop: 1=1 2=2 3=4 4=8 5=16
  48. { var:hop0, rate:100, val:3 },
  49. { var:hop1, rate:100, val:3 },
  50. { var:mod0, val:1 },
  51. { var:mod1, val:1 },
  52. { var:thr0, val:65 },
  53. { var:thr1, val:65 },
  54. { var:upr0, val:0 },
  55. { var:upr1, val:0 },
  56. { var:lwr0, val:2.0 }, // lwr has a hardcoded min. of 0.3
  57. { var:lwr1, val:2.0 },
  58. { var:off0, val:20 },
  59. { var:off1, val:20 },
  60. { var:wet0, val:0.0 },
  61. { var:wet1, val:0.0 },
  62. { var:mint0, val:55 },
  63. { var:maxt0, val:85 },
  64. { var:minu0, val:0.0 },
  65. { var:maxu0, val:0.5 },
  66. { var:minl0, val:0 },
  67. { var:maxl0, val:3 },
  68. { var:mino0, val:-100.0 },
  69. { var:maxo0, val:100.0 },
  70. { var:mint1, val:55 },
  71. { var:maxt1, val:85 },
  72. { var:minu1, val:0.0 },
  73. { var:maxu1, val:0.5 },
  74. { var:minl1, val:0 },
  75. { var:maxl1, val:3 },
  76. { var:mino1, val:-100.0 },
  77. { var:maxo1, val:100.0 },
  78. { var:xfad0, val:100.0 },
  79. { var:xfad1, val:100.0 },
  80. { var:sw0, type:decl, val:1 },
  81. { var:sw1, type:decl, val:1 },
  82. // compressor
  83. { var:cbyp0, type:set, val:0.0 },
  84. { var:cigain0, val:3.0 },
  85. { var:cthrsh0, val:-20.0 },
  86. { var:cratio0, val:2.0 },
  87. { var:catkms0, val:20.0 },
  88. { var:crlsms0, val:1000.0 },
  89. { var:cmakeup0, val:1.0 },
  90. { var:cwndms0, val:200 },
  91. { var:cbyp1, val:0.0 },
  92. { var:cigain1, val:3.0 },
  93. { var:cthrsh1, val:-20.0 },
  94. { var:cratio1, val:2.0 },
  95. { var:catkms1, val:20.0 },
  96. { var:crlsms1, val:1000.0 },
  97. { var:cmakeup1, val:1.0 },
  98. { var:cwndms1, val:200 },
  99. { var:dgain0, val:1.0 },
  100. { var:dgain1, val:1.0 },
  101. { var:wgain0, val:1.0 },
  102. { var:wgain1, val:1.0 },
  103. ]
  104. // Dry
  105. preset_dry :
  106. [
  107. { loc:-1 mod:m1 var:mod0, type:set, val:1 },
  108. { var:cigain0, val: 5.0 },
  109. { var:wet0 val: 0.0}
  110. { var:sw0, val:0 },
  111. { var:mod1 val:1 },
  112. { var:cigain1, val: 5.0 },
  113. { var:wet1 val: 0.0}
  114. { var:sw1, val:0 },
  115. ]
  116. """
  117. # Default labels to match the 'kc' menu.
  118. dfltLabelsL = [ "a","b","c","d","f_1", "f_2", "f_3", "f_4", "g", "g_a", "g_1_a", "g_1_d" ]
  119. # Default preset values.
  120. dfltPresetL = [
  121. {"a":
  122. [
  123. {
  124. "mod": 1,
  125. "thr": 60.0,
  126. "upr": -1.1,
  127. "lwr": 2.0,
  128. "off": 0.0,
  129. "cigain": 6.0,
  130. "wet": 1.0,
  131. "wgain": 1.75,
  132. "sw": 0
  133. },
  134. {
  135. "mod": 1,
  136. "thr": 60.0,
  137. "upr": -0.99,
  138. "lwr": 2.0,
  139. "off": 0.0,
  140. "cigain": 6.0,
  141. "wet": 1.0,
  142. "wgain": 1.75,
  143. "sw": 0
  144. }
  145. ]
  146. },
  147. {"b":
  148. [
  149. {
  150. "mod": 1,
  151. "thr": 77.0,
  152. "upr": -0.5,
  153. "lwr": 3.0,
  154. "off": 0.0,
  155. "cigain":10.0,
  156. "wet": 1.0,
  157. "wgain": 1.75,
  158. "sw": 0
  159. },
  160. {
  161. "mod": 1,
  162. "thr": 74.0,
  163. "upr": -0.5,
  164. "lwr": 2.0,
  165. "off": 0.0,
  166. "cigain":10.0,
  167. "wet": 1.0,
  168. "wgain": 1.75,
  169. "sw": 0
  170. }
  171. ]
  172. },
  173. {"c":
  174. [
  175. {
  176. "mod": 1,
  177. "thr": 80.0,
  178. "upr": -0.5,
  179. "lwr": 5.0,
  180. "off": 0.0,
  181. "cigain":11.0,
  182. "wet": 1.0,
  183. "wgain": 1.0,
  184. "sw": 0
  185. },
  186. {
  187. "mod": 1,
  188. "thr": 80.0,
  189. "upr": -0.5,
  190. "lwr": 5.0,
  191. "off": 0.0,
  192. "cigain":11.0,
  193. "wet": 1.0,
  194. "wgain": 1.0,
  195. "sw": 0
  196. }
  197. ]
  198. },
  199. {"d":
  200. [
  201. {
  202. "mod": 1,
  203. "thr": 70.0,
  204. "upr": -3.9,
  205. "lwr": 4.0,
  206. "off": 0.0,
  207. "cigain": 9.0,
  208. "wet": 1.0,
  209. "wgain": 1.0,
  210. "sw": 0
  211. },
  212. {
  213. "mod": 1,
  214. "thr": 70.0,
  215. "upr": -4.5,
  216. "lwr": 4.0,
  217. "off": 0.0,
  218. "cigain": 9.0,
  219. "wet": 1.0,
  220. "wgain": 1.0,
  221. "sw": 0
  222. }
  223. ]
  224. },
  225. {"f_1":
  226. [
  227. {
  228. "mod": 1,
  229. "thr": 50.0,
  230. "upr": -3.0,
  231. "lwr": 1.0,
  232. "off": 0.0,
  233. "cigain": 6.0,
  234. "wet": 1.0,
  235. "wgain": 2.0,
  236. "sw": 0
  237. },
  238. {
  239. "mod": 1,
  240. "thr": 50.0,
  241. "upr": -3.0,
  242. "lwr": 1.0,
  243. "off": 0.0,
  244. "cigain": 6.0,
  245. "wet": 1.0,
  246. "wgain": 2.0,
  247. "sw": 0
  248. }
  249. ]
  250. },
  251. {"f_2":
  252. [
  253. {
  254. "mod": 1,
  255. "thr": 60.0,
  256. "upr": -3.0,
  257. "lwr": 1.0,
  258. "off": 0.0,
  259. "cigain": 6.0,
  260. "wet": 1.0,
  261. "wgain": 2.0,
  262. "sw": 0
  263. },
  264. {
  265. "mod": 1,
  266. "thr": 60.0,
  267. "upr": -3.0,
  268. "lwr": 1.0,
  269. "off": 0.0,
  270. "cigain": 6.0,
  271. "wet": 1.0,
  272. "wgain": 2.0,
  273. "sw": 0
  274. }
  275. ]
  276. },
  277. {"f_3":
  278. [
  279. {
  280. "mod": 1,
  281. "thr": 55.0,
  282. "upr": -3.0,
  283. "lwr": 1.0,
  284. "off": 0.0,
  285. "cigain": 6.0,
  286. "wet": 1.0,
  287. "wgain": 2.0,
  288. "sw": 0
  289. },
  290. {
  291. "mod": 1,
  292. "thr": 55.0,
  293. "upr": -3.0,
  294. "lwr": 1.0,
  295. "off": 0.0,
  296. "cigain": 6.0,
  297. "wet": 1.0,
  298. "wgain": 2.0,
  299. "sw": 0
  300. }
  301. ]
  302. },
  303. {"f_4":
  304. [
  305. {
  306. "mod": 1,
  307. "thr": 55.0,
  308. "upr": -5.0,
  309. "lwr": 1.0,
  310. "off": 0.0,
  311. "cigain": 6.0,
  312. "wet": 1.0,
  313. "wgain": 2.0,
  314. "sw": 0
  315. },
  316. {
  317. "mod": 1,
  318. "thr": 55.0,
  319. "upr": -5.0,
  320. "lwr": 1.0,
  321. "off": 0.0,
  322. "cigain": 6.0,
  323. "wet": 1.0,
  324. "wgain": 2.0,
  325. "sw": 0
  326. }
  327. ]
  328. },
  329. {"g":
  330. [
  331. {
  332. "mod": 4,
  333. "thr": 60.0,
  334. "upr": -0.7,
  335. "lwr": 8.0,
  336. "off": 20.0,
  337. "cigain":10.0,
  338. "wet": 1.0,
  339. "wgain": 1.0,
  340. "sw": 0
  341. },
  342. {
  343. "mod": 4,
  344. "thr": 64.0,
  345. "upr": -0.7,
  346. "lwr": 8.0,
  347. "off": 20.0,
  348. "cigain":10.0,
  349. "wet": 1.0,
  350. "wgain": 1.0,
  351. "sw": 0
  352. }
  353. ]
  354. },
  355. {"g_a":
  356. [
  357. {
  358. "mod": 4,
  359. "thr": 50.0,
  360. "upr": -0.7,
  361. "lwr": 2.0,
  362. "off": 40.0,
  363. "cigain":10.0,
  364. "wet": 1.0,
  365. "wgain": 1.0,
  366. "sw": 0
  367. },
  368. {
  369. "mod": 4,
  370. "thr": 54.0,
  371. "upr": -0.7,
  372. "lwr": 8.0,
  373. "off": 40.0,
  374. "cigain":10.0,
  375. "wet": 1.0,
  376. "wgain": 1.0,
  377. "sw": 0
  378. }
  379. ]
  380. },
  381. {"g_1_a":
  382. [
  383. {
  384. "mod": 4,
  385. "thr": 50.0,
  386. "upr": -0.7,
  387. "lwr": 8.0,
  388. "off": 20.0,
  389. "cigain":10.0,
  390. "wet": 1.0,
  391. "wgain": 1.0,
  392. "sw": 0
  393. },
  394. {
  395. "mod": 4,
  396. "thr": 54.0,
  397. "upr": -0.7,
  398. "lwr": 2.0,
  399. "off": 20.0,
  400. "cigain":10.0,
  401. "wet": 1.0,
  402. "wgain": 1.0,
  403. "sw": 0
  404. }
  405. ]
  406. },
  407. {"g_1_d":
  408. [
  409. {
  410. "mod": 4,
  411. "thr": 40.0,
  412. "upr": -0.4,
  413. "lwr": 7.0,
  414. "off": 60.0,
  415. "cigain":10.0,
  416. "wet": 1.0,
  417. "wgain": 1.0,
  418. "sw": 0
  419. },
  420. {
  421. "mod": 4,
  422. "thr": 34.0,
  423. "upr": -0.3,
  424. "lwr": 5.0,
  425. "off": 64.0,
  426. "cigain":10.0,
  427. "wet": 1.0,
  428. "wgain": 1.0,
  429. "sw": 0
  430. }
  431. ]
  432. }
  433. ]
  434. def write_seq( f, label, seqL ):
  435. """ Write a sequence preset.
  436. seqL = [
  437. (loc preset_label) # Set 'preset_label' to 'None' to assign the seq. label to the preset label.
  438. (loc var ch value) # 'ch' is 0=left or 1=right
  439. ]
  440. """
  441. f.write("seq_%s :\n" % label)
  442. f.write("[\n")
  443. f.write("{ loc:-1 type:exec val:init },\n")
  444. f.write("{ loc:-1 val:preset_dry },\n")
  445. typ0 = 'exec'
  446. for x in seqL:
  447. typ1 = typ0
  448. if len(x) == 2:
  449. typ1 = 'exec'
  450. preset_label = label if x[1]==None else x[1]
  451. typeS = 'type:exec,' if typ0!=typ1 else ' '
  452. f.write("{ loc:%5i, %s val:preset_%s },\n" % (x[0],typeS,preset_label))
  453. elif len(x) == 4:
  454. typ1 = 'set'
  455. typeS = 'type:set' if typ0!=typ1 else ' '
  456. f.write("{ loc:%5i %s var:%s%i val:%7.2f },\n" % (x[0],typeS,x[1],x[2],x[3]))
  457. typ0 = typ1
  458. f.write("]\n\n")
  459. def write_preset_ch( f, presetD, ch ):
  460. fmt0 = "{ loc:-1 mode:m1 var:%6s%i, type:set, val:%7.2f },\n"
  461. fmt1 = "{ var:%6s%i, val:%7.2f },\n"
  462. fmt = fmt0 if ch==0 else fmt1
  463. for key,val in presetD.items():
  464. f.write(fmt % (key,ch,val))
  465. fmt = fmt1
  466. def write_preset( f, label, psL ):
  467. f.write("preset_%s : \n" % label)
  468. f.write("[\n")
  469. write_preset_ch(f, psL[0], 0 )
  470. f.write("\n")
  471. write_preset_ch(f, psL[1], 1 )
  472. f.write("]\n")
  473. def write_seqs( f, labelL, seqL ):
  474. """ Assign a list of preset changes to all sequences named in labelL."""
  475. for label in labelL:
  476. write_seq( f, label, seqL )
  477. def write_presets( f, presetL ):
  478. for x in presetL:
  479. label = x.keys()[0]
  480. psL = x[label]
  481. write_preset(f,label,psL)
  482. def label_to_psL( presetL, keyLabel ):
  483. for preset in presetL:
  484. label = preset.keys()[0]
  485. if label == keyLabel:
  486. return preset[label]
  487. raise ValueError( "Preset %s not found." % keyLabel)
  488. def dupl_preset( presetL, keyLabel, labelsL ):
  489. """ Create a new preset list formed by duplicating the preset
  490. identified by 'keyLabel' for each label in 'labelsL'
  491. """
  492. psL = label_to_psL(presetL,keyLabel);
  493. newL = []
  494. for label in labelsL:
  495. newL.append( { label:copy.deepcopy(psL) } )
  496. return newL
  497. def mod_range( presetL, var, val00, val01, val10, val11 ):
  498. N = len(presetL)
  499. v0L = []
  500. v1L = []
  501. for i in range(0,N):
  502. v0L.append( val00 + (i*(val01-val00)/(N-1)) )
  503. v1L.append( val10 + (i*(val11-val10)/(N-1)) )
  504. for i,preset in enumerate(presetL):
  505. label = preset.keys()[0]
  506. psL = preset[label]
  507. #print "%i %s %f %f" % (i,label,v0L[i],v1L[i])
  508. psL[0][var] = v0L[i]
  509. psL[1][var] = v1L[i]
  510. def mod_discrete_range( presetL, var, v0L, v1L ):
  511. assert( len(v0L) == len(v1L) )
  512. N = min(len(v0L),len(presetL))
  513. for i in range(N):
  514. preset = presetL[i]
  515. label = preset.keys()[0]
  516. psL = preset[label]
  517. print "%i %s %f %f" % (i,label,v0L[i],v1L[i])
  518. psL[0][var] = v0L[i]
  519. psL[1][var] = v1L[i]
  520. return N
  521. def print_preset( presetL ):
  522. for x in presetL:
  523. label = x.keys()[0]
  524. psL = x[label]
  525. print "%s %i" % (label,len(psL))
  526. for i,psD in enumerate(psL):
  527. for var,val in psD.items():
  528. print "%s%i:%f" % (var,i,val)
  529. if __name__ == "__main__":
  530. #print_preset( presetL )
  531. fn = sys.argv[1]
  532. #
  533. seq0L = [
  534. ( 961, "g_1_d"), # (loc preset_label)
  535. ( 967, "wnd", 0, 3 ), # (loc var channel value)
  536. ( 967, "f_3"), # (loc preset_label)
  537. (1023, None) # (loc preset_label = seq_label)
  538. ]
  539. seq1L =[
  540. (1, None) # meas 1
  541. #(301, None) # meas 33
  542. #(480, None) # meas 41
  543. ]
  544. presetL = []
  545. # assign a sequential range of thresholds to each preset
  546. if 0: # 12/28/16
  547. mod_range( presetL, "thr", 50.0, 90.0, 55.0, 95.0 )
  548. mod_range( presetL, "cigain", 6.0, 12.0, 6.0, 12.0 )
  549. mod_range( presetL, "upr", 2.5, -5.0, 2.3, -5.2)
  550. mod_range( presetL, "lwr", 0.5, 2.0, 0.5, 2.0)
  551. if 0: # 12/28/16
  552. # make all presets identical to preset 'a'.
  553. presetL = dupl_preset( dfltPresetL, "g_1_d", dfltLabelsL)
  554. #mod_range( presetL, "thr", 30.0, 90.0, 35.0, 95.0 )
  555. #mod_range( presetL, "cigain", 10.0, 16.0, 10.0, 16.0 )
  556. mod_range( presetL, "thr", 65.0, 65.0, 65.0, 65.0 )
  557. #mod_range( presetL, "upr", -0.05, 4.5, -0.05, 4.5) # upr slope min: -0.05
  558. mod_range( presetL, "upr", -0.05, -0.05, -0.05, -0.05)
  559. #mod_range( presetL, "lwr", 1.1, 8.0, 1.1, 8.0 ) # 1.5 is good
  560. #mod_range( presetL, "lwr", 8.0, 8.0, 8.0, 8.0 )
  561. mod_range( presetL, "lwr", 1.5, 1.5, 1.5, 1.5 )
  562. mod_range( presetL, "off", 0.0, 99.9, 0.0, 99.9)
  563. #mod_range( presetL, "upr", 2.5, -5.0, 2.3, -5.2)
  564. #mod_range( presetL, "lwr", 0.5, 2.0, 0.5, 2.0)
  565. if 0: # 1/14/17
  566. seq1L =[
  567. (778, None) # meas 50
  568. ]
  569. if 0:
  570. presetL = dupl_preset( dfltPresetL, "f_3", dfltLabelsL)
  571. # thr: (40 ok) - (71 0k) upr:-3.0 lwr:1.0 cigain:6.0 vetted trajectory for measure 50
  572. mod_range( presetL, "thr", 40.0, 71.0, 40.0, 71.0 )
  573. #mod_range( presetL, "thr", 68.0, 68.0, 68.0, 68.0 )
  574. #mod_range( presetL, "upr", -4.0, 0.0, -4.0, 0.0)
  575. mod_range( presetL, "upr", -3.0, -3.0, -3.0, -3.0)
  576. mod_range( presetL, "lwr", 1.0, 1.0, 1.0, 1.0 )
  577. mod_range( presetL, "cigain", 6.0, 6.0, 6.0, 6.0 )
  578. else: # 3/6/17
  579. presetL = dupl_preset( dfltPresetL, "g_1_a", dfltLabelsL)
  580. mod_range( presetL, "thr", 20.0, 50.0, 20.0, 50.0 ) # offs:65 thr:20-50
  581. mod_range( presetL, "off", 10.0, 80.0, 10.0, 80.0)
  582. mod_range( presetL, "upr", -0.7, -0.2, -0.7, -0.2 )
  583. mod_range( presetL, "lwr", 2.0, 2.0, 8.0, 4.0 )
  584. mod_range( presetL, "cigain", 10.0, 14.0, 10.0, 14.0 )
  585. if 0: # 1/14/17 and 1/28/17
  586. seq1L =[
  587. (917, None) # meas 53
  588. #(1, None) # meas 1
  589. ]
  590. # 2/4/17 vetted for both meas 53 and meas 1
  591. # make all presets identical to preset 'a'.
  592. presetL = dupl_preset( dfltPresetL, "g_1_d", dfltLabelsL)
  593. mod_range( presetL, "thr", 20.0, 50.0, 20.0, 50.0 ) # offs:65 thr:20-50
  594. #mod_range( presetL, "off", 10.0, 80.0, 10.0, 80.0)
  595. #mod_range( presetL, "off", 65.0, 65.0, 65.0, 65.0) # thr 34, offset should be > 50
  596. #mod_range( presetL, "off", 50.0, 80.0, 50.0, 80.0)
  597. mod_range( presetL, "off", 10.0, 80.0, 10.0, 80.0)
  598. mod_range( presetL, "cigain", 14.0, 14.0, 14.0, 14.0 )
  599. if 0: # 1/28/17
  600. seq1L =[
  601. (917, None) # meas 53
  602. ]
  603. # make all presets identical to preset 'a'.
  604. presetL = dupl_preset( dfltPresetL, "f_3", dfltLabelsL)
  605. mod_range( presetL, "thr", 40.0, 90.0, 40.0, 90.0 )
  606. mod_range( presetL, "upr", 0.0, 0.0, 0.0, 0.0 )
  607. mod_range( presetL, "lwr", 4.0, 4.0, 4.0, 4.0) # vocal artifacts come in with lwr < 4
  608. mod_range( presetL, "cigain", 3.0, 8.0, 3.0, 8.0 )
  609. if 0: # 2/4/17
  610. seq1L =[
  611. (378, None), # meas 36
  612. ]
  613. presetL = dupl_preset( dfltPresetL, "g_1_a", dfltLabelsL)
  614. mod_range( presetL, "thr", 20.0, 50.0, 20.0, 50.0 ) # offs:65 thr:20-50
  615. mod_range( presetL, "off", 10.0, 80.0, 10.0, 80.0)
  616. mod_range( presetL, "upr", -0.7, -0.2, -0.7, -0.2 )
  617. mod_range( presetL, "lwr", 2.0, 2.0, 8.0, 4.0 )
  618. mod_range( presetL, "cigain", 10.0, 14.0, 10.0, 14.0 )
  619. if 0: # 2/4/17
  620. seq1L =[
  621. (378, "g_1_a"), # meas 36
  622. (384, None),
  623. ]
  624. presetL = dupl_preset( dfltPresetL, "f_4", dfltLabelsL)
  625. mod_range( presetL, "thr", 70.0, 75.0, 70.0, 75.0 )
  626. mod_range( presetL, "upr", -8.0, -4.0, -8.0, -4.0 )
  627. mod_range( presetL, "lwr", 8.0, 1.0, 8.0, 1.0)
  628. mod_range( presetL, "cigain", 10.0, 14.0, 10.0, 14.0 )
  629. if 0:
  630. seq1L =[
  631. (1, None) # meas 1
  632. ]
  633. # 2/4/17 vetted for both meas 53 and meas 1
  634. # make all presets identical to preset 'a'.
  635. presetL = dupl_preset( dfltPresetL, "g_1_d", dfltLabelsL)
  636. print "preset len:",len(presetL)
  637. w0L = [ 512, 512, 512, 512, 1024, 1024, 1024, 2048, 2048, 4096 ]
  638. w1L = [ 512, 1024, 2048, 4096, 1024, 2048, 4096, 2048, 4096, 4096 ]
  639. N = mod_discrete_range( presetL, "win", w0L, w1L )
  640. presetL = presetL[0:N]
  641. mod_range( presetL, "thr", 40.0, 40.0, 40.0, 40.0 ) # offs:65 thr:20-50
  642. mod_range( presetL, "off", 55.0, 55.0, 55.0, 55.0)
  643. mod_range( presetL, "cigain", 14.0, 14.0, 14.0, 14.0 )
  644. if 0: # 3/6/17
  645. seq1L =[
  646. (1, None) # meas 1
  647. ]
  648. presetL = dupl_preset( dfltPresetL, "g_1_d", dfltLabelsL)
  649. mod_range( presetL, "thr", 20.0, 50.0, 20.0, 50.0 ) # offs:65 thr:20-50
  650. mod_range( presetL, "off", 10.0, 80.0, 10.0, 80.0)
  651. mod_range( presetL, "cigain", 14.0, 14.0, 14.0, 14.0 )
  652. if 0: # 3/6/17
  653. seq1L =[
  654. (1, None) # meas 1
  655. ]
  656. presetL = dupl_preset( dfltPresetL, "a", dfltLabelsL)
  657. mod_range( presetL, "thr", 55.0, 65.0, 55.0, 65.0 )
  658. mod_range( presetL, "upr", -1.0, -5.0, -1.0, -5.0 )
  659. mod_range( presetL, "lwr", 2.0, 1.0, 2.0, 1.0 )
  660. mod_range( presetL, "cigain", 6.0, 8.0, 6.0, 8.0 )
  661. if 0: # 3/6/17
  662. seq1L =[
  663. #(1, None) # meas 38
  664. (476, None)
  665. ]
  666. presetL = dupl_preset( dfltPresetL, "f_4", dfltLabelsL)
  667. """
  668. w0L = [ 512, 512, 512, 512, 1024, 1024, 1024, 2048, 2048, 4096 ]
  669. w1L = [ 512, 1024, 2048, 4096, 1024, 2048, 4096, 2048, 4096, 4096 ]
  670. N = mod_discrete_range( presetL, "win", w0L, w1L )
  671. presetL = presetL[0:N]
  672. """
  673. if 1:
  674. mod_range( presetL, "thr", 55.0, 65.0, 55.0, 65.0 )
  675. mod_range( presetL, "upr", -1.0, -5.0, -1.0, -5.0 )
  676. mod_range( presetL, "lwr", 2.0, 1.0, 2.0, 1.0 )
  677. mod_range( presetL, "cigain", 6.0, 8.0, 6.0, 8.0 )
  678. else:
  679. mod_range( presetL, "thr", 55.0, 75.0, 55.0, 75.0 )
  680. mod_range( presetL, "upr", -8.0, -4.0, -8.0, -4.0 )
  681. mod_range( presetL, "lwr", 8.0, 1.0, 8.0, 1.0)
  682. mod_range( presetL, "cigain", 10.0, 14.0, 10.0, 14.0 )
  683. if 1: # 3/11/17
  684. seq1L =[
  685. (1015, None) # meas 57 (just before section 29)
  686. #(1068, None) # meas 58 (just before section 29)
  687. ]
  688. presetL = dupl_preset( dfltPresetL, "g_1_d", dfltLabelsL)
  689. # this is a good parameter space - notice that it can
  690. # generate 4 lines connecting the diagnals of a cube
  691. mod_range( presetL, "thr", 10.0, 80.0, 10.0, 80.0 ) # line 1
  692. mod_range( presetL, "off", 10.0, 99.0, 10.0, 99.0)
  693. #mod_range( presetL, "thr", 10.0, 80.0, 10.0, 80.0 ) # line 2
  694. #mod_range( presetL, "off", 99.0, 10.0, 99.0, 10.0)
  695. #mod_range( presetL, "upr", 5.0, -1.5, 5.0, -1.5 )
  696. mod_range( presetL, "upr", -1.5, 5.0, -1.5, 5.0 )
  697. #mod_range( presetL, "lwr", 0.9, 30.0, 0.9, 30.0 )
  698. mod_range( presetL, "cigain", 14.0, 14.0, 14.0, 14.0 )
  699. # thr upr lwr offs
  700. # 65 -0.05 1.5 0.0
  701. # 99.9
  702. # 65 -0.05 10.0 0.0
  703. # 99.0
  704. with open(fn,"wt") as f:
  705. f.write("{\n")
  706. write_seqs(f,dfltLabelsL,seq1L) # assign seq0L to each sequence
  707. #write_seqs(f,'a',scoreSeqL); # the only sequence will be 'a'
  708. f.write("%s\n" % initPresetStr)
  709. write_presets(f,presetL)
  710. f.write("}\n")