#N canvas 550 29 566 687 10;
#X obj 4 660 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 5 313 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 561 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 4 587 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 68 320 cnv 17 3 208 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 150 320 signal;
#X text 205 566 (none);
#X text 156 334 float;
#X obj 68 532 cnv 17 3 24 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 150 530 signal;
#X text 156 544 float;
#X text 194 530 - signal to be displayed on the Y axis, f 58;
#X text 194 320 - signal to be displayed in the X axis, f 58;
#X text 205 592 (none);
#X obj 4 612 cnv 3 550 3 empty empty attributes 8 12 0 13 #dcdcdc #000000 0;
#X text 194 544 - sets "bufsize": number of lines in buffer, f 58;
#X text 194 498 - onset time delay between displays (default 0), f 58;
#X text 194 335 - sets "calccount": samples per line (2-8192 \, default 256);
#X text 194 365 - sets "calccount" (samples per line), f 58;
#X text 194 380 - sets number of lines in buffer (8-256 \, default 128), f 58;
#X text 194 396 - sets vertical range (default -1 1), f 58;
#X text 194 412 - sets front/signal RGB color (values 0-1), f 58;
#X text 194 427 - sets background RGB color (values 0-1), f 58;
#X text 194 441 - sets grid RGB color (values 0-1), f 58;
#X text 194 470 - sets trigger mode: 0 (none \, default) \, 1 (up) or 2 (down);
#X text 194 484 - sets threshold level for the trigger mode (default 0), f 58;
#X text 194 455 - <1> sets alternate drawing style (default 0), f 58;
#N canvas 361 167 1005 419 X-Y_Mode 0;
#X obj 834 95 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 831 114 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X msg 761 41 588;
#X msg 725 41 550;
#X msg 694 41 441;
#X msg 665 41 220;
#X msg 795 41 660;
#X msg 827 41 1760;
#X text 70 110 When in X-Y mode \, [scope~] plots points whose horizontal axis (X) corresponds to the signal's values coming into the left inlet and whose vertical axis (Y) corresponds to the signal's values coming into the right inlet. If the two signals are identical and in phase \, a straight line increasing from left to right will be seen. If the two signals are identical and 180 degrees out of phase \, a straight line decreasing from left to right will be seen. Other combinations may produce circles \, ellipses \, and Lissajous figures.;
#X text 70 247 When in X-Y mode \, there's an averaging algorithm for the calccount parameter \, where a representative sample from this period is used. So it requires small values for a better representation (only 2 in the examples below).;
#X obj 533 94 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 726 90 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X msg 633 41 1;
#X obj 533 176 cyclone/scope~ 200 200 5 3 200 -1 1 50 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X text 70 73 If signals are connected to both the left and right inlets \, [scope~] operates in X-Y mode.;
#X text 72 317 Change the phase of the oscillator to check how it affects the plot \, then try different frequencies.;
#X text 859 94 change phase;
#X obj 726 136 cyclone/cycle~ 440;
#X obj 533 135 cyclone/cycle~ 440;
#X connect 0 0 1 0;
#X connect 1 0 17 1;
#X connect 2 0 11 0;
#X connect 3 0 11 0;
#X connect 4 0 11 0;
#X connect 5 0 11 0;
#X connect 6 0 11 0;
#X connect 7 0 11 0;
#X connect 10 0 18 0;
#X connect 11 0 17 0;
#X connect 12 0 11 0;
#X connect 17 0 13 1;
#X connect 18 0 13 0;
#X restore 414 240 pd X-Y_Mode;
#X obj 46 112 hsl 100 17 2 30 1 0 empty empty empty 5 8 1 10 #dcdcdc #000000 #000000 0 0;
#X floatatom 43 134 5 0 0 0 - - - 0;
#X obj 31 194 cnv 5 5 5 empty empty 1 0 0 0 16 #fcfcfc #9c9c9c 0;
#X obj 19 300 cnv 5 5 5 empty empty -1 0 0 0 16 #fcfcfc #9c9c9c 0;
#X obj 30 246 cnv 5 5 5 empty empty 0 0 0 0 16 #fcfcfc #9c9c9c 0;
#X text 269 140 Samples per line (2-8192);
#X text 269 162 Number of lines in buffer (8-256);
#X text 65 113 frequency;
#N canvas 475 78 825 575 appearance_colors 0;
#X obj 46 96 vsl 15 128 0 1 0 0 rjhfkjfbws \$0-Rf empty 0 -9 0 10 #fc0000 #fcfcfc #000000 0 1;
#X floatatom 46 238 5 0 0 0 - - - 0;
#X msg 41 327 fgcolor \$1 \$2 \$3;
#X obj 84 96 vsl 15 128 0 1 0 0 xaslkdjla \$0-Gf empty 0 -9 0 10 #00fc00 #fcfcfc #000000 0 1;
#X floatatom 84 238 5 0 0 0 - - - 0;
#X obj 124 96 vsl 15 128 0 1 0 0 qdaskjlf \$0-Bf empty 0 -9 0 10 #0000fc #fcfcfc #000000 0 1;
#X floatatom 124 238 5 0 0 0 - - - 0;
#X obj 185 96 vsl 15 128 0 1 0 0 rjhfkjfbws \$0-Rb empty 0 -9 0 10 #fc0000 #fcfcfc #000000 0 1;
#X floatatom 185 238 5 0 0 0 - - - 0;
#X obj 223 96 vsl 15 128 0 1 0 0 xaslkdjla \$0-Gb empty 0 -9 0 10 #00fc00 #fcfcfc #000000 0 1;
#X floatatom 223 238 5 0 0 0 - - - 0;
#X obj 263 96 vsl 15 128 0 1 0 0 qdaskjlf \$0-Bb empty 0 -9 0 10 #0000fc #fcfcfc #000000 0 1;
#X floatatom 263 238 5 0 0 0 - - - 0;
#X msg 177 329 bgcolor \$1 \$2 \$3;
#X obj 318 96 vsl 15 128 0 1 0 0 rjhfkjfbws \$0-Rg empty 0 -9 0 10 #fc0000 #fcfcfc #000000 0 1;
#X floatatom 318 238 5 0 0 0 - - - 0;
#X obj 356 96 vsl 15 128 0 1 0 0 xaslkdjla \$0-Gg empty 0 -9 0 10 #00fc00 #fcfcfc #000000 0 1;
#X floatatom 356 238 5 0 0 0 - - - 0;
#X obj 396 96 vsl 15 128 0 1 0 0 qdaskjlf \$0-Bg empty 0 -9 0 10 #0000fc #fcfcfc #000000 0 1;
#X floatatom 396 238 5 0 0 0 - - - 0;
#X msg 325 329 gridcolor \$1 \$2 \$3;
#X msg 610 269 frgb 205 229 232 \, brgb 74 79 77;
#N canvas 217 96 326 446 x 0;
#X obj 101 101 cnv 15 63 78 empty empty empty 20 12 0 14 #484c4c #404040 0;
#X obj 107 121 bng 50 250 50 0 sdfsd sfgsg Default -2 -10 0 14 #cce4e8 #000000 #cce4e8;
#X obj 124 191 loadbang;
#X obj 107 217 f \$0;
#X msg 107 240 \; \$1-Rf 0.803922 \; \$1-Gf 0.898039 \; \$1-Bf 0.909804 \; \$1-Rb 0.290196 \; \$1-Gb 0.309804 \; \$1-Bb 0.301961 \; \$1-Rg 0.376471 \; \$1-Gg 0.384314 \; \$1-Bg 0.4;
#X connect 1 0 3 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X coords 0 -1 1 1 65 80 1 100 100;
#X restore 72 427 pd x;
#X obj 307 370 osc~ 24;
#X obj 578 321 scope~ 130 130 256 3 128 -1 1 0 0 0 0 0 255 0 7 31 7 96 98 102 0 empty;
#X msg 578 238 frgb 0 255 0 \, brgb 7 31 7;
#X obj 578 214 loadbang;
#X text 460 38 Backwards compatibility note:;
#X text 478 72 Old color messages for front / signal and background are \, respectively \, frgb and brgb - they are RGB with values from 0-255., f 52;
#X text 478 114 These are still included in Max and Pd for backwards compatibility. You can also set them as attributes (@frgb and @brgb). Check the messages below, f 52;
#X text 45 30 RGB colors (values from 0-1) for fgcolor (front/signal) \, bgcolor (background) & grid (gridcolor). In Max \, these are RGBA \, but the alpha channel is not implemented in Pd.;
#X obj 177 405 cyclone/scope~ 250 133 10 3 185 -1 1 0 0 0 -0.333333 205 228 232 73 79 77 96 98 102 0 empty;
#X obj 41 267 cyclone/pak 0.803922 0.898039 0.909804, f 15;
#X obj 177 267 cyclone/pak 0.290196 0.309804 0.301961, f 16;
#X obj 325 267 cyclone/pak 0.376471 0.384314 0.4, f 11;
#X connect 0 0 1 0;
#X connect 1 0 32 0;
#X connect 2 0 31 0;
#X connect 3 0 4 0;
#X connect 4 0 32 1;
#X connect 5 0 6 0;
#X connect 6 0 32 2;
#X connect 7 0 8 0;
#X connect 8 0 33 0;
#X connect 9 0 10 0;
#X connect 10 0 33 1;
#X connect 11 0 12 0;
#X connect 12 0 33 2;
#X connect 13 0 31 0;
#X connect 14 0 15 0;
#X connect 15 0 34 0;
#X connect 16 0 17 0;
#X connect 17 0 34 1;
#X connect 18 0 19 0;
#X connect 19 0 34 2;
#X connect 20 0 31 0;
#X connect 21 0 24 0;
#X connect 23 0 31 0;
#X connect 25 0 24 0;
#X connect 26 0 25 0;
#X connect 32 0 2 0;
#X connect 33 0 13 0;
#X connect 34 0 20 0;
#X restore 294 263 pd appearance_colors;
#N canvas 504 130 767 456 appearance_others 0;
#X msg 176 171 delay 1000;
#X text 183 199 vertical range;
#X msg 163 147 delay 0;
#X text 164 125 onset delay;
#X text 243 171 once a second;
#X msg 196 240 range -1 1;
#X text 216 147 (default);
#X text 266 242 (default);
#X msg 355 247 drawstyle \$1;
#X obj 355 207 tgl 25 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X msg 186 217 range -1.2 1.2;
#X text 35 57 The "drawstyle 1" message or attribute changes [scope~] to analternate drawing style \, that affects some kinds of signals \, such as this bandlimited square wave (try it with the range -1.2 1.2).;
#X text 38 21 You can set the vertical (signal amplitude) range and the onset delay (time between displays) with messages.;
#X obj 582 257 cyclone/scope~ 100 50 256 3 128 -1 1 0 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X obj 554 106 tgl 25 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 554 149 select 0 1;
#X obj 582 179 bng 15 250 50 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000;
#X obj 507 179 bng 15 250 50 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000;
#N canvas 338 119 577 204 square 0;
#X obj 55 132 outlet~;
#X msg 188 80 sinesum 4096 1 0 0.333333 0 0.2 0 0.142857 0 0.111111 0 0.0909091 0 0.0769231 0 0.0666667 0 0.0588235 0 \, normalize 1;
#X obj 188 56 loadbang;
#X obj 188 113 send \$0-square;
#X obj 213 143 table \$0-square 4099;
#X obj 55 105 tabosc4~ \$0-square;
#X obj 55 76 sig~ 123;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 5 0 0 0;
#X connect 6 0 5 0;
#X restore 81 231 pd square;
#X obj 163 297 cyclone/scope~ 219 108 10 3 185 -1.2 1.2 0 0 0 -0.333333 205 229 232 74 79 77 96 98 102 0 empty;
#X msg 507 204 dim 100 50;
#X msg 582 204 dim 50 100;
#X text 435 23 Inconsistency note:;
#X text 471 49 There's a "dim" message/attribute \, not available in the original MAX object \, for setting the size of your [scope~]., f 39;
#X connect 0 0 19 0;
#X connect 2 0 19 0;
#X connect 5 0 19 0;
#X connect 8 0 19 0;
#X connect 9 0 8 0;
#X connect 10 0 19 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 1 16 0;
#X connect 16 0 21 0;
#X connect 17 0 20 0;
#X connect 18 0 19 0;
#X connect 20 0 13 0;
#X connect 21 0 13 0;
#X restore 425 263 pd appearance_others;
#N canvas 820 129 427 442 mouse 0;
#X obj 135 96 cyclone/rand~ 40;
#X obj 135 134 cyclone/scope~ 130 130 47 3 128 -1 1 0 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X text 61 359 And as noted \, if you right click on it (in edit mode or not) you can access its properties., f 50;
#X text 44 36 When you click on [scope~] with your mouse \, the display freezes for as long as you hold the mouse button down.;
#X text 54 312 When in edit mode \, you can resize the object by clicking and dragging on its bottom right corner., f 51;
#X connect 0 0 1 0;
#X restore 357 240 pd mouse;
#X obj 43 190 scope~ 183 112 256 3 128 -1 1 0 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X text 88 79 [scope~] displays a signal in the style of an oscilloscope.;
#X text 114 395 range <f \, f>;
#X text 84 412 fgcolor <f \, f \, f>;
#X text 84 427 bgcolor <f \, f \, f>;
#X text 72 441 gridcolor <f \, f \, f>;
#X obj 218 141 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 219 163 nbx 4 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 499 69 cyclone/dsponoff~;
#N canvas 954 174 335 328 Y_Mode 0;
#X obj 93 144 cyclone/scope~ 130 130 11 3 128 -1 1 0 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X text 53 33 If a signal is only fed to the second inlet \, [scope~] displays in "Y Mode" only., f 31;
#X obj 216 102 osc~ 60;
#X connect 2 0 0 1;
#X restore 491 240 pd Y_Mode;
#X text 126 349 dim <f \, f>;
#X text 194 350 - sets width/height (default 130 130), f 58;
#X obj 43 154 osc~ 2;
#X text 90 512 receive <symbol>;
#X text 84 364 calccount <float>;
#X text 96 380 bufsize <float>;
#X text 84 455 drawstyle <float>;
#X text 96 469 trigger <float>;
#X text 84 484 triglevel <float>;
#X text 108 498 delay <float>;
#X text 194 512 - receive symbol (default empty), f 58;
#X text 98 618 @fgcolor <f f f> | @bgcolor <f f f> | @gridcolor <f f f> | @range <f f> | @trigger <f> | @triglevel <f> | @bufsize <f> @calccount <f> | @delay <f> | drawstyle <f> | @dim <f f> | @receive <sym>, f 74;
#N canvas 739 203 501 352 receive 0;
#X obj 67 175 cyclone/scope~ 130 130 2 3 128 -1 1 100 0 0 0 205 229 232 74 79 77 96 98 102 0 \$0-rcv;
#X obj 311 272 s \$0-rcv;
#X obj 67 130 noise~;
#X msg 311 205 2 128;
#X msg 331 233 64 12;
#X text 236 112 You can send any kind of message that scope~ accepts. Note that if you send it a list of two floats. Then the values are spread via both inlets and set samples per line and lines per buffer \, respectively., f 36;
#X text 30 25 When in edit mode \, [scope~] shows its inlets. The [scope~] object below has a receive symbol \, so you can send messages to it via a [send] object (but not audio). In this case \, the inlets are suppressed \, so we don't see it. The receive symbol can be set with the receive message or the @receive attribute. If you set a receive name as "empty" then it can't receive messages anymore and the inlets are shown., f 73;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X restore 485 285 pd receive;
#N canvas 572 158 652 420 delay_trigger 0;
#X obj 333 194 vsl 15 126 -1 1 0 1 empty empty empty 0 -9 0 10 #dcdcdc #000000 #000000 6400 1;
#X obj 462 57 vradio 20 1 1 3 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 1;
#X msg 462 148 trigger \$1;
#X floatatom 462 127 5 0 0 0 - - - 0;
#X msg 367 120 triglevel \$1;
#X obj 333 340 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 333 365 s \$0-slider;
#X obj 367 66 r \$0-slider;
#X floatatom 367 92 5 0 0 0 - - - 0;
#X text 486 58 0) none;
#X text 487 78 1) Up;
#X text 487 99 2) Down;
#X text 42 86 The default mode is "trigger 0" \, which is "none mode" \, where the signal is displayed the way it is., f 43;
#X text 42 130 "trigger 1" is "up mode" \, in which - following the delay period - a new display is triggered only when the signal goes from below the trigger level to being equal to it or above it., f 43;
#X text 42 195 "trigger 2" sets to down mode \, in which - following the delay period - a new display is shown only when the signal goes from above the trigger level to being equal to it or below it., f 43;
#X text 42 261 The "triglevel <float>" message sets the threshold for the trigger modes "1" (up) and "2" (down). In these cases \, as described above \, the waveform must increase or decrease past this value to trigger a new display. If you are displaying a periodic waveform \, some changes to the trigger level will shift the waveform to the left or right., f 43;
#X obj 351 193 cyclone/scope~ 201 129 2 3 256 -1 1 110 0 1 0.024 205 229 232 74 79 77 96 98 102 0 empty;
#X msg 557 159 delay \$1;
#X floatatom 557 134 5 0 500 0 - - - 0;
#X text 42 29 The delay determines when to display a new waveform. In conjunction to it \, the trigger mode determines when a new waveform trace begins (following the delay period)., f 43;
#X obj 351 29 cyclone/rand~ 300;
#X connect 0 0 5 0;
#X connect 1 0 3 0;
#X connect 2 0 16 0;
#X connect 3 0 2 0;
#X connect 4 0 16 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 4 0;
#X connect 17 0 16 0;
#X connect 18 0 17 0;
#X connect 20 0 16 0;
#X restore 379 285 pd delay_trigger;
#N canvas 480 173 824 342 buffer_size 0;
#X floatatom 507 119 5 0 0 0 - - - 0;
#X floatatom 678 120 5 8 256 0 - - - 0;
#X obj 507 93 unpack float float, f 29;
#X msg 507 38 256 10;
#X obj 534 149 osc~ 20;
#X msg 521 66 10 256;
#X text 715 114 lines per display, f 9;
#X text 442 115 samples per line, f 8;
#X text 33 134 Therefore \, the number of samples (or period) displayed in the oscilloscope is equal to: bufsize * calccount. The number of samples also affect the time between displays. If the number of samples is small \, the refresh rate speed is high \, so you may want to use the "onset delay" message to decrease the speed between displays.;
#X text 34 228 bufsize & calccount are similar \, but they have different effects. Lets check the example in this subpatch with two settings. Both have the same display period in samples (2560) \, but one is displayed as a buffer made of 10 lines and 256 samples per line and the other as a buffer made of 256 lines and 10 samples per line.;
#X text 564 66 10 samples per line \, 256 lines;
#X text 554 38 256 samples per line \, 10 lines;
#X text 32 30 "bufsize" sets the number of lines in the display (possible values from 8 to 256 - default is 128). The number of samples represented by each line is set by "calccount" (possible values from 2 to 8192 - default is 256). For each line \, the maximum and minimum values within the period in samples are used to generate the line. So the smallest line is 2 samples/points long.;
#X obj 507 180 cyclone/scope~ 178 126 10 3 256 -1 1 0 0 0 -0.333333 205 229 232 74 79 77 96 98 102 0 empty;
#X connect 0 0 13 0;
#X connect 1 0 13 1;
#X connect 2 0 0 0;
#X connect 2 1 1 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 5 0 2 0;
#X restore 286 285 pd buffer_size;
#X obj 5 2 ./header scope~;
#X text 24 59 Oscilloscope display;
#X text 239 201 <= Right click for properties!;
#X connect 28 0 29 0;
#X connect 29 0 51 0;
#X connect 45 0 39 0;
#X connect 46 0 39 1;
#X connect 51 0 39 0;
