midifile-help.pd 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. #N canvas 1 53 399 237 12;
  2. #N canvas 189 27 888 819 midifile_write 0;
  3. #X obj 324 -2 bng 45 250 50 0 empty empty choose 5 23 0 8 -62784 -260818
  4. -258699;
  5. #X obj 67 51 tgl 45 0 empty empty record 2 23 0 8 -258699 -241291 -24198
  6. 0 1;
  7. #X floatatom 553 772 15 0 0 0 tick - -;
  8. #X obj 67 151 metro 2;
  9. #X floatatom 113 109 15 0 0 0 - - -;
  10. #X msg 113 83 2.005;
  11. #X msg 506 590 verbose \$1;
  12. #X text 494 545 verbosity defaults to 1;
  13. #X obj 324 54 savepanel;
  14. #X msg 409 493 240 1 2 3 4 247;
  15. #X text 523 492 a sysex message;
  16. #X obj 553 742 float;
  17. #X floatatom 506 564 5 0 0 0 - - -;
  18. #X msg 324 408 write \$1 \$2 \$3;
  19. #X msg 326 201 29;
  20. #X msg 364 201 30;
  21. #X msg 210 201 0;
  22. #X floatatom 405 275 5 0 0 0 ticks_per_frame - -;
  23. #X text 80 301 (ticks per quarter note if frames per second is zero)
  24. ;
  25. #X msg 288 201 25;
  26. #X msg 248 201 24;
  27. #X text 79 322 25 20 will give accurate timing with metro ticks at
  28. 2ms;
  29. #X obj 324 375 pack s 25 20;
  30. #X obj 559 663 midifile;
  31. #X text 7 199 time code frames per second:;
  32. #X text 484 432 default is 90 ticks per quarter note;
  33. #X msg 349 433 write filename.mid;
  34. #X msg 374 458 write filename.mid 77;
  35. #X text 534 458 77 ticks per quarter note;
  36. #X msg 442 526 flush;
  37. #X obj 629 96 cnv 15 200 20 empty empty empty 20 12 0 14 -257985 -66577
  38. 0;
  39. #X floatatom 515 95 5 0 0 0 note - -;
  40. #X floatatom 515 125 5 0 0 0 velocity - -;
  41. #X obj 559 283 pack 144 0 0;
  42. #X obj 578 129 sel 0;
  43. #X obj 559 156 t b f;
  44. #X obj 559 257 f;
  45. #X text 160 658 Martin Peach \, 2010;
  46. #X text 553 565 set to 3 to debug input;
  47. #X obj 559 75 notein;
  48. #X obj 119 -2 cnv 15 200 20 empty empty empty 20 12 0 14 -257985 -66577
  49. 0;
  50. #X text 121 -3 1: open a file for writing:;
  51. #X obj 116 50 cnv 15 200 20 empty empty empty 20 12 0 14 -257985 -66577
  52. 0;
  53. #X text 118 49 2: start recording;
  54. #X obj 139 526 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
  55. 0;
  56. #X text 157 524 4: stop recording and save the file:;
  57. #X floatatom 513 180 5 0 0 0 channel - -;
  58. #X obj 610 237 +;
  59. #X msg 578 185 127;
  60. #X msg 610 157 143;
  61. #X floatatom 709 313 5 0 0 0 value - -;
  62. #X floatatom 709 344 5 0 0 0 controller - -;
  63. #X floatatom 707 393 5 0 0 0 channel - -;
  64. #X obj 755 293 ctlin;
  65. #X obj 755 447 pack 176 0 0;
  66. #X obj 755 479 print ctl>;
  67. #X obj 580 324 print note>;
  68. #X obj 755 329 t b f;
  69. #X obj 755 393 f;
  70. #X obj 810 336 + 175;
  71. #X text 646 93 3: input MIDI as lists;
  72. #X connect 0 0 8 0;
  73. #X connect 1 0 3 0;
  74. #X connect 3 0 23 0;
  75. #X connect 4 0 3 1;
  76. #X connect 5 0 4 0;
  77. #X connect 6 0 23 0;
  78. #X connect 8 0 22 0;
  79. #X connect 9 0 23 0;
  80. #X connect 11 0 2 0;
  81. #X connect 12 0 6 0;
  82. #X connect 13 0 23 0;
  83. #X connect 14 0 22 1;
  84. #X connect 15 0 22 1;
  85. #X connect 16 0 22 1;
  86. #X connect 17 0 22 2;
  87. #X connect 19 0 22 1;
  88. #X connect 20 0 22 1;
  89. #X connect 22 0 13 0;
  90. #X connect 23 1 11 1;
  91. #X connect 23 2 11 0;
  92. #X connect 26 0 23 0;
  93. #X connect 27 0 23 0;
  94. #X connect 29 0 23 0;
  95. #X connect 33 0 23 0;
  96. #X connect 33 0 56 0;
  97. #X connect 34 0 48 0;
  98. #X connect 34 1 49 0;
  99. #X connect 35 0 36 0;
  100. #X connect 35 1 33 1;
  101. #X connect 36 0 33 0;
  102. #X connect 39 0 31 0;
  103. #X connect 39 0 35 0;
  104. #X connect 39 1 32 0;
  105. #X connect 39 1 34 0;
  106. #X connect 39 1 33 2;
  107. #X connect 39 2 46 0;
  108. #X connect 39 2 47 1;
  109. #X connect 47 0 36 1;
  110. #X connect 48 0 47 0;
  111. #X connect 49 0 47 0;
  112. #X connect 53 0 50 0;
  113. #X connect 53 0 57 0;
  114. #X connect 53 1 51 0;
  115. #X connect 53 1 54 1;
  116. #X connect 53 2 52 0;
  117. #X connect 53 2 59 0;
  118. #X connect 54 0 55 0;
  119. #X connect 54 0 23 0;
  120. #X connect 57 0 58 0;
  121. #X connect 57 1 54 2;
  122. #X connect 58 0 54 0;
  123. #X connect 59 0 58 1;
  124. #X restore 76 116 pd midifile_write;
  125. #N canvas 214 27 1028 899 midifile_read 0;
  126. #X obj 198 518 bng 15 250 50 0 empty empty step 18 7 0 12 -4160 -257985
  127. -1;
  128. #X obj -148 60 openpanel;
  129. #X obj -148 7 bng 45 250 50 0 empty empty choose 3 23 0 12 -62784 -260818
  130. -258699;
  131. #X obj -40 146 tgl 45 0 empty empty play -45 23 0 12 -24198 -1 -258699
  132. 0 1;
  133. #X msg 231 469 rewind;
  134. #X text 81 468 go to start of file;
  135. #X floatatom 340 560 15 0 0 0 current_tick - -;
  136. #X obj 75 292 hradio 15 1 0 16 empty empty track_number 0 -6 0 12 -62784
  137. -241291 -1 0;
  138. #X msg 75 313 dump \$1;
  139. #X msg 194 432 68050;
  140. #X msg 19 257 track \$1;
  141. #X obj 19 217 hradio 15 1 0 16 empty empty track_number 0 -6 0 12 -62784
  142. -241291 -1 0;
  143. #X obj -40 198 metro 2;
  144. #X text 24 535 creation arguments: midi_file_name;
  145. #X text 23 514 output only this track;
  146. #X text 138 312 parse this track to main window;
  147. #X msg 255 493 0;
  148. #X text 82 432 goto tick 68050;
  149. #X floatatom 104 701 5 0 0 0 note - -;
  150. #X floatatom 171 701 5 0 0 1 velocity - -;
  151. #X floatatom 315 615 15 0 0 0 last_tick - -;
  152. #X msg 151 389 verbose \$1;
  153. #X text -26 390 verbosity defaults to 1;
  154. #X text -97 2 1: choose a MIDI file to play;
  155. #X text 13 140 2: start playing it;
  156. #X obj 275 415 spigot;
  157. #X obj 314 381 tgl 25 0 empty empty loop -45 12 0 12 -4160 -257985
  158. -258113 0 1;
  159. #X msg -148 90 read \$1;
  160. #X floatatom 151 365 5 0 0 0 - - -;
  161. #X obj 151 346 hradio 15 1 0 4 empty empty verbosity 0 -6 0 12 -62784
  162. -241291 -1 0;
  163. #X obj 19 234 - 1;
  164. #X text 684 668 note off events;
  165. #X obj 275 533 midifile wowo.mid;
  166. #X obj -95 496 ctlout 123;
  167. #X msg -95 466 123;
  168. #X obj 275 640 route 144 145 146 147 148 149 150 151 152 153 154 155
  169. 156 157 158 159;
  170. #X obj 104 676 unpack 0 0;
  171. #X obj 451 692 route 128 129 130 131 132 133 134 135 136 137 138 139
  172. 140 141 142 143;
  173. #X msg -121 117 read I_Wanna_Be_Sedated.mid;
  174. #X obj -95 438 bng 15 250 50 0 empty empty all_notes_off 17 7 0 10
  175. -258113 -257985 -1;
  176. #X obj 453 573 t b b;
  177. #X floatatom -26 254 5 0 0 0 - - -;
  178. #X obj 499 588 bng 15 250 50 0 empty empty end 17 7 0 10 -258113 -257985
  179. -1;
  180. #X text 407 532 bangs at end of file:;
  181. #X obj -123 676 print note_on;
  182. #X obj -124 728 print note_off;
  183. #X floatatom 456 422 9 0 0 0 loop_start_tick - -;
  184. #X text 54 234 -1 = play all tracks;
  185. #X obj 315 593 f;
  186. #X text -18 562 MIDI messages are output as lists;
  187. #X text 111 639 select note on events:;
  188. #X obj 275 816 noteout 1;
  189. #X obj 346 816 noteout 2;
  190. #X obj 418 816 noteout 3;
  191. #X obj 489 816 noteout 4;
  192. #X text -78 746 select note on events:;
  193. #X obj 88 747 route 176 177 178 179 180 181 182 183 184 185 186 187
  194. 188 189 190 191 192;
  195. #X floatatom 88 814 5 0 0 0 controller - -;
  196. #X floatatom 155 814 5 0 0 1 value - -;
  197. #X obj 88 789 unpack 0 0;
  198. #X obj -124 783 print controller;
  199. #X obj -26 861 ctlout 1;
  200. #X obj -32 835 f;
  201. #X obj -32 809 t b f;
  202. #X obj 499 553 route bang format tracks ticks_per_quarternote;
  203. #X obj 275 441 f 0;
  204. #X text 601 830 Martin Peach \, 2011;
  205. #X floatatom 578 585 3 0 0 1 format - -;
  206. #X floatatom 658 585 5 0 0 1 tracks - -;
  207. #X floatatom 738 585 5 0 0 1 ticks_per_quarternote - -;
  208. #X floatatom 263 55 5 0 0 1 tracks - -;
  209. #X symbolatom 427 105 40 0 0 0 - - -;
  210. #X obj 427 79 prepend set;
  211. #X obj 418 139 unpack 0 0;
  212. #X floatatom 485 192 15 0 0 0 last_tick - -;
  213. #X floatatom 418 165 5 0 0 1 track - -;
  214. #X floatatom 340 105 5 0 0 1 track - -;
  215. #X obj 340 79 unpack 0 s;
  216. #X obj 496 231 unpack 0 0 0 0;
  217. #X floatatom 496 299 3 0 0 1 / - -;
  218. #X floatatom 527 299 3 0 0 1 - - -;
  219. #X floatatom 559 268 5 0 0 1 clocks_per_click - -;
  220. #X floatatom 591 299 5 0 0 1 32nds_per_quarternote - -;
  221. #X floatatom 714 406 15 0 0 0 microsec_per_quarternote - -;
  222. #X obj 574 427 /;
  223. #X floatatom 715 447 15 0 0 0 microsec_per_tick - -;
  224. #X obj 574 468 / 1000;
  225. #X floatatom 574 499 15 0 0 0 millisec_per_tick - -;
  226. #X obj 740 105 print other_meta;
  227. #X obj 263 18 route seq_num name end time_sig microsec_per_quarternote
  228. ;
  229. #X obj 652 76 route key_sig;
  230. #X obj 652 133 unpack 0 0 s;
  231. #X symbolatom 733 238 10 0 0 0 key - -;
  232. #X obj 733 212 prepend set;
  233. #X floatatom 652 162 5 0 0 1 +sharps/-flats - -;
  234. #X obj 692 191 tgl 15 0 empty empty minor 17 7 0 10 -262144 -1 -1 0
  235. 1;
  236. #X connect 0 0 32 0;
  237. #X connect 1 0 27 0;
  238. #X connect 2 0 1 0;
  239. #X connect 3 0 12 0;
  240. #X connect 4 0 32 0;
  241. #X connect 7 0 8 0;
  242. #X connect 8 0 32 0;
  243. #X connect 9 0 32 0;
  244. #X connect 10 0 32 0;
  245. #X connect 11 0 30 0;
  246. #X connect 12 0 32 0;
  247. #X connect 16 0 32 0;
  248. #X connect 21 0 32 0;
  249. #X connect 25 0 65 0;
  250. #X connect 26 0 25 1;
  251. #X connect 27 0 32 0;
  252. #X connect 28 0 21 0;
  253. #X connect 29 0 28 0;
  254. #X connect 30 0 10 0;
  255. #X connect 30 0 41 0;
  256. #X connect 32 0 35 0;
  257. #X connect 32 0 56 0;
  258. #X connect 32 1 6 0;
  259. #X connect 32 1 48 1;
  260. #X connect 32 2 64 0;
  261. #X connect 34 0 33 0;
  262. #X connect 35 0 36 0;
  263. #X connect 35 0 44 0;
  264. #X connect 35 0 51 0;
  265. #X connect 35 1 52 0;
  266. #X connect 35 2 53 0;
  267. #X connect 35 3 54 0;
  268. #X connect 35 16 37 0;
  269. #X connect 36 0 18 0;
  270. #X connect 36 1 19 0;
  271. #X connect 37 0 45 0;
  272. #X connect 37 0 51 0;
  273. #X connect 37 1 52 0;
  274. #X connect 37 2 53 0;
  275. #X connect 37 3 54 0;
  276. #X connect 38 0 32 0;
  277. #X connect 39 0 34 0;
  278. #X connect 40 0 25 0;
  279. #X connect 40 1 48 0;
  280. #X connect 46 0 65 1;
  281. #X connect 48 0 20 0;
  282. #X connect 56 0 59 0;
  283. #X connect 56 0 60 0;
  284. #X connect 59 0 57 0;
  285. #X connect 59 0 63 0;
  286. #X connect 59 1 58 0;
  287. #X connect 59 1 62 1;
  288. #X connect 62 0 61 0;
  289. #X connect 63 0 62 0;
  290. #X connect 63 1 61 1;
  291. #X connect 64 0 42 0;
  292. #X connect 64 0 40 0;
  293. #X connect 64 1 67 0;
  294. #X connect 64 2 68 0;
  295. #X connect 64 3 69 0;
  296. #X connect 64 3 84 1;
  297. #X connect 64 4 89 0;
  298. #X connect 65 0 32 0;
  299. #X connect 72 0 71 0;
  300. #X connect 73 0 75 0;
  301. #X connect 73 1 74 0;
  302. #X connect 77 0 76 0;
  303. #X connect 77 1 72 0;
  304. #X connect 78 0 79 0;
  305. #X connect 78 1 80 0;
  306. #X connect 78 2 81 0;
  307. #X connect 78 3 82 0;
  308. #X connect 84 0 85 0;
  309. #X connect 84 0 86 0;
  310. #X connect 86 0 87 0;
  311. #X connect 89 0 70 0;
  312. #X connect 89 1 77 0;
  313. #X connect 89 2 73 0;
  314. #X connect 89 3 78 0;
  315. #X connect 89 4 83 0;
  316. #X connect 89 4 84 0;
  317. #X connect 89 5 90 0;
  318. #X connect 90 0 91 0;
  319. #X connect 90 1 88 0;
  320. #X connect 91 0 94 0;
  321. #X connect 91 1 95 0;
  322. #X connect 91 2 93 0;
  323. #X connect 93 0 92 0;
  324. #X restore 76 83 pd midifile_read;
  325. #X text 15 10 midifile reads and writes MIDI files.;
  326. #X text 152 170 2010/12/11 Martin Peach;
  327. #N canvas 404 184 494 344 META 0;
  328. #X text 12 185 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
  329. Wilkes for Pd version 0.42.;
  330. #X text 12 25 LICENSE GPL v2 or later;
  331. #X text 12 165 AUTHOR Martin Peach;
  332. #X text 12 5 KEYWORDS control MIDI;
  333. #X text 12 45 DESCRIPTION read and write MIDI files;
  334. #X text 12 65 INLET_0 bang float list rewind read track dump verbose
  335. write flush;
  336. #X text 12 105 OUTLET_0 list;
  337. #X text 12 125 OUTLET_1 float;
  338. #X text 12 145 OUTLET_2 bang;
  339. #X restore 335 202 pd META;