#N canvas 507 23 563 587 10;
#X obj 3 369 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 3 427 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 3 525 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 74 376 cnv 3 3 17 empty empty 0-n 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 74 398 cnv 3 3 17 empty empty 1-n 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 73 437 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 3 558 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X text 140 439 list;
#X text 137 533 1) float;
#X msg 123 154 record;
#X msg 178 154 stop \, play;
#X text 116 400 anything;
#X text 65 89 [mtr] records any messages in different tracks and plays them back. Each track records what comes into its inlet and plays it back through the outlet directly below., f 63;
#X text 59 168 recording;
#X text 68 154 start =>;
#X text 250 153 <= stop recording and start playing;
#N canvas 673 23 593 613 All_Messages 0;
#X text 19 49 delay <float> -;
#X text 19 79 first <float> -;
#X text 115 49 in left inlet: sets a delay value in ms for all tracks to start playing. In other inlets: sets a delay time to that track only, f 77;
#X text 17 291 read <symbol> -;
#X text 24 19 clear <list> -;
#X text 31 147 mute <list> -;
#X text 31 178 next <list> -;
#X text 30 247 play <list> -;
#X text 115 291 in left inlet: opens a previously saved file with the symbol name (or opens a dialog box if no symbol is given). In other inlets: opens a file containing only the track that corresponds to the inlet, f 77;
#X text 17 335 record <list> -;
#X text 17 378 rewind <list> -;
#X text 29 434 stop <list> -;
#X text 115 19 in left inlet: clears all tracks. If followed track numbers \, clears those track(s). In other inlets: clears corresponding track, f 77;
#X text 115 78 in left inlet: waits a given time in ms after a play message is received before playing back. Unlike delay \, first does not alter the delta time value of the first event in a track \, it just waits a certain time (in addition to the first delta time) before playing back from the beginning. In other inlets: waits only corresponding track, f 77;
#X text 115 147 in left inlet: mutes all tracks while still playing. If followed by track numbers \, it mutes those track(s). In other inlets: mutes corresponding track, f 77;
#X text 115 178 in left inlet: causes each track to output only the next message in its recorded sequence (the track number and the delta time of each message being output are sent out the leftmost outlet as a list). If followed track numbers \, outputs the next message stored in those tracks. In other inlets: outputs the next message stored on corresponding track, f 77;
#X text 115 247 in left inlet: plays recorded tracks out the corresponding outlets in the same rhythm/speed as recorded. If followed by track numbers \, it plays those tracks. In other inlets: plays corresponding track, f 77;
#X text 115 335 in left inlet: begins recording all messages received in the other inlets. If followed by track numbers \, it begins recording those tracks. In other inlets: begins recording corresponding track, f 77;
#X text 115 378 in left inlet: goes to start of recorded sequence. Can be used when using the 'next' message. If [mtr] is playing or recording \, a stop message should precede it. If followed by track numbers \, it rewinds those tracks. In other inlets: rewinds corresponding track, f 77;
#X text 115 434 in left inlet: stops all recording/playing tracks. If followed by track numbers \, it stops those tracks. In other inlets: stops corresponding track, f 77;
#X text 115 463 in left inlet: Unmutesd all muted tracks. If followed by track numbers \, it unmutes those tracks. In other inlets: unmute corresponding track, f 77;
#X text 17 463 unmute <list> -;
#X text 11 493 write <symbol> -;
#X text 115 493 in left inlet: saves a file with the symbol name (or opens a dialog box if no symbol is given). In other inlets: saves corresponding track, f 77;
#X text 207 548 not yet implemented;
#N canvas 861 307 490 154 not-yet 0;
#X text 59 22 There are many messages from MAX 7 not yet implemented \, like: addevent \, cleareventat \, deleteeventat \, playat \, playatms \, touch \, touchenable \, touchdisable and definelengthandstop. These or some of these may get into the next releases but other messages won't make it \, like: dictionary \, dump and info/bang \, because it deals with dictionary stuff that cyclone misses \, writejson \, because no json please \, no \, and timescale because it is stupid as MAX recognizes., f 63;
#X restore 335 547 pd not-yet;
#X text 109 580 See also attributes in the parent patch for more possible messages., f 68;
#X restore 329 377 pd All_Messages;
#X text 116 461 anything;
#X obj 73 460 cnv 3 3 17 empty empty 1-n 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 176 400 - any message to be recorded in that inlet/track;
#X text 176 461 - recorded messages from the corresponding inlet/track;
#X text 176 439 - track number & duration (when receiving the "next" message), f 61;
#X text 197 533 - number of tracks \, default 1 (max 64);
#X obj 302 224 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 263 203 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 224 182 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X text 257 182 Track 1;
#X text 305 203 Track 2;
#X text 337 224 Track 3;
#X floatatom 232 269 5 0 0 0 - - - 0;
#X floatatom 274 268 5 0 0 0 - - - 0;
#X floatatom 316 268 5 0 0 0 - - - 0;
#X text 120 377 check all possible messages here:, f 70;
#X obj 3 485 cnv 3 550 3 empty empty attributes 8 12 0 13 #dcdcdc #000000 0;
#N canvas 479 62 673 269 Attributes 0;
#X text 17 26 @trackspeed <float> -;
#X text 47 61 @speed <float> -;
#X text 153 60 sets multiplier to the speed of all tracks \, which allows adjust globally on top of individual track speeds. This only works as a message on the left inlet., f 82;
#X text 153 122 When set to 1 \, recorded data for all tracks is saved with the patch. Note that recording \, changing \, or clearing data does not cause the patch to be dirtied., f 82;
#X text 47 122 @embed <float> -;
#X text 153 26 sets speed for all tracks (1 is originally speed \, 2 twice as fast \, etc). Same if set as a message to the left inlet but in other inlets set individual track speeds, f 82;
#X text 153 92 Turns looping on (1) or off (0) for all tracks. Same if set as a message to the left inlet but in other inlets set individual track looping., f 82;
#X text 136 176 Cyclone won't implement attribute related to "transport" stuff \, like: tramsport \, sync \, bindto \, autostart \, autostarttime and quantize. There are other attributes that maybe can get into the next releases \, they are: length \, selection \, mode and nextmode., f 69;
#X text 53 92 @loop <float> -;
#X restore 322 496 pd Attributes;
#X text 25 223 THIS OBJECT HAS NOT BEEN FULLY UPDATED TO MAX 7!, f 18;
#X text 139 496 check possible attributes -->;
#X obj 182 243 cyclone/mtr 3;
#X f 20;
#C restore;
#X obj 2 3 ./header mtr;
#X text 25 63 Multi-track message recorder;
#X obj 362 339 open-else;
#X text 389 313 click;
#X text 108 317 Plugdata users or those with ELSE can also use [else/rec] as an alternative, f 39;
#X msg 362 313 rec;
#X connect 9 0 37 0;
#X connect 10 0 37 0;
#X connect 23 0 37 3;
#X connect 24 0 37 2;
#X connect 25 0 37 1;
#X connect 29 0 25 0;
#X connect 30 0 24 0;
#X connect 31 0 23 0;
#X connect 37 1 29 0;
#X connect 37 2 30 0;
#X connect 37 3 31 0;
#X connect 43 0 40 0;
