#N canvas 416 34 561 652 10;
#X obj 5 625 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 5 432 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 5 541 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 82 550 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 134 550 signal;
#X obj 84 440 cnv 17 3 54 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 83 499 cnv 17 3 31 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 8 574 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X text 133 440 signal;
#X text 122 582 1) float;
#X msg 37 210 mode \$1;
#X obj 37 191 nbx 2 12 0 3 0 0 safsdf sdfsdf empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X text 134 498 signal;
#X text 140 515 float;
#N canvas 420 218 862 318 integer_bitmask 0;
#X obj 499 152 *~ 10000;
#X obj 604 152 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 499 187 cyclone/bitand~ -1;
#X msg 442 152 mode \$1;
#X obj 442 133 nbx 2 12 0 3 0 0 safsdf sdfsdf empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 442 68 vradio 15 1 0 4 dfhdfgdj sggh empty 0 -8 0 10 #dcdcdc #000000 #000000 0;
#X text 432 67 0;
#X text 432 81 1;
#X text 432 97 2;
#X text 432 112 3;
#X text 669 152 <= converted to int;
#X text 619 189 <= bitmask as an argument (integer);
#X obj 111 187 cnv 15 240 85 empty empty empty 20 12 0 14 #f4f4f4 #404040 0;
#X text 120 191 Modes:;
#X text 124 208 0: left as float (don't convert);
#X text 124 221 1: convert left input to integer;
#X text 124 234 2: left as float (don't convert);
#X text 124 247 3: convert left input to integer;
#X text 25 32 When a first argument is given \, this value is converted to an integer and the e '32 bit signed integer' representation of this value is used as a bitmask for comparison.;
#X text 27 95 Since there is no audio input in the second inlet \, the modes of conversion don't really make the same sense here. The bitmask for comparison is always the same and only the left input is converted to int or not. Thus \, here's how the modes will operate:;
#X text 488 27 A float input into the second inlet is converted to int and updates the argument. If a signal is connected to the second inlet \, the float input will still update the argument \, but the signal input has priority over the argument or the float input., f 55;
#X floatatom 499 263 11 0 0 0 - - - 0;
#X obj 499 227 cyclone/snapshot~ 100;
#X obj 499 117 osc~ 1;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 22 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 22 0 21 0;
#X connect 23 0 0 0;
#X restore 330 294 pd integer_bitmask;
#X text 103 459 bits <list>;
#X text 122 600 2) float;
#X text 111 160 Compare two signals:;
#N canvas 516 42 683 651 raw_bitmask 0;
#X obj 121 368 clip~ -1 1;
#N canvas 303 196 881 396 x 0;
#X obj 201 101 cnv 15 458 44 empty empty empty 20 12 0 14 #f0f0f0 #404040 0;
#X obj 407 103 tgl 15 0 \$0-alkdjg \$0-sfdknj empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 640 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 625 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 611 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 597 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 583 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 569 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 555 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 541 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 527 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 512 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 498 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 484 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 470 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 456 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 442 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 428 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 414 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 400 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 386 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 372 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 358 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 344 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 330 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 316 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 302 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 288 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 274 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 260 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 246 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 232 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 218 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 204 124 tgl 15 0 \$0-bitchange asjgsjags empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 71 306 outlet;
#X obj 407 70 loadbang;
#X obj 71 179 cyclone/pak bits i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i, f 126;
#X obj 71 251 t b a;
#X obj 71 220 cyclone/prepend set;
#X text 424 103 set all bits;
#X connect 1 0 33 0;
#X connect 1 0 32 0;
#X connect 1 0 31 0;
#X connect 1 0 30 0;
#X connect 1 0 29 0;
#X connect 1 0 28 0;
#X connect 1 0 27 0;
#X connect 1 0 26 0;
#X connect 1 0 25 0;
#X connect 1 0 24 0;
#X connect 1 0 23 0;
#X connect 1 0 22 0;
#X connect 1 0 21 0;
#X connect 1 0 20 0;
#X connect 1 0 19 0;
#X connect 1 0 18 0;
#X connect 1 0 17 0;
#X connect 1 0 16 0;
#X connect 1 0 15 0;
#X connect 1 0 14 0;
#X connect 1 0 13 0;
#X connect 1 0 12 0;
#X connect 1 0 11 0;
#X connect 1 0 10 0;
#X connect 1 0 9 0;
#X connect 1 0 8 0;
#X connect 1 0 7 0;
#X connect 1 0 6 0;
#X connect 1 0 5 0;
#X connect 1 0 4 0;
#X connect 1 0 3 0;
#X connect 1 0 2 0;
#X connect 2 0 36 32;
#X connect 3 0 36 31;
#X connect 4 0 36 30;
#X connect 5 0 36 29;
#X connect 6 0 36 28;
#X connect 7 0 36 27;
#X connect 8 0 36 26;
#X connect 9 0 36 25;
#X connect 10 0 36 24;
#X connect 11 0 36 23;
#X connect 12 0 36 22;
#X connect 13 0 36 21;
#X connect 14 0 36 20;
#X connect 15 0 36 19;
#X connect 16 0 36 18;
#X connect 17 0 36 17;
#X connect 18 0 36 16;
#X connect 19 0 36 15;
#X connect 20 0 36 14;
#X connect 21 0 36 13;
#X connect 22 0 36 12;
#X connect 23 0 36 11;
#X connect 24 0 36 10;
#X connect 25 0 36 9;
#X connect 26 0 36 8;
#X connect 27 0 36 7;
#X connect 28 0 36 6;
#X connect 29 0 36 5;
#X connect 30 0 36 4;
#X connect 31 0 36 3;
#X connect 32 0 36 2;
#X connect 33 0 36 1;
#X connect 35 0 1 0;
#X connect 36 0 38 0;
#X connect 37 0 34 0;
#X connect 37 1 34 0;
#X connect 38 0 37 0;
#X coords 0 -1 1 1 460 46 2 200 100;
#X restore 121 123 pd x;
#X obj 34 193 osc~ 220;
#X msg 148 264 mode \$1;
#X floatatom 148 241 4 0 3 0 - - - 0;
#X obj 148 218 hradio 15 1 0 4 \$0-dslsjdhfk \$0-dsdsdjfslkjhllsjdhfk empty 0 -8 0 10 #dcdcdc #000000 #000000 0;
#X obj 34 162 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 121 334 /~ 10000;
#X obj 34 222 *~ 10000;
#X msg 121 184 bits 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, f 68;
#X obj 121 299 cyclone/bitand~;
#X obj 356 324 cnv 15 240 85 empty empty empty 20 12 0 14 #f4f4f4 #404040 0;
#X text 365 328 Modes:;
#X text 369 345 0: left as float (don't convert);
#X text 369 358 1: convert left input to integer;
#X text 369 371 2: left as float (don't convert);
#X text 369 384 3: convert left input to integer;
#X text 173 23 Instead of an argument or float input \, you can also specify a bitmask with the "bits" message.;
#X text 240 239 Again \, since there is no audio input in the second inlet \, the modes of conversion don't really make the same sense. The bitmask for comparison is always the same and only the left input is converted to int or not. Thus \, here's how the modes will operate:;
#X text 269 426 The given bitmask as the "bits" message overwrites the given argument \, and a float input in the secondary inlet overwrites the bitmask. If a signal is connected to the second inlet \, it has priority over the given bitmask.;
#X text 173 56 The message "bits" followed by a list of 32 bit values (0 or 1) sets a raw 32 bit data as a bitmask for comparison with the signal input.;
#X obj 148 420 output~;
#X obj 140 537 metro 500;
#X obj 121 565 tabwrite~ \$0-array;
#X obj 324 507 cnv 19 198 98 empty empty empty 20 12 0 12 #e0e0e0 #404040 0;
#N canvas 0 50 450 250 (subpatch) 0;
#X array \$0-array 200 float 0;
#X coords 0 -1 199 1 200 100 1;
#X restore 323 506 graph;
#X obj 140 516 loadbang;
#X text 306 499 1;
#X text 306 549 0;
#X text 300 595 -1;
#X connect 0 0 21 0;
#X connect 0 0 23 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 10 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 2 0;
#X connect 7 0 0 0;
#X connect 8 0 10 0;
#X connect 9 0 10 0;
#X connect 10 0 7 0;
#X connect 22 0 23 0;
#X connect 26 0 22 0;
#X restore 459 294 pd raw_bitmask;
#X text 184 477 - <0-3>: modes of conversion to integers (details above);
#X text 184 582 - converted to integer and used as bitmask (default 0);
#X obj 304 159 cnv 15 240 110 empty empty empty 20 12 0 14 #f4f4f4 #404040 0;
#X text 313 163 Modes:;
#X text 317 180 0: (default) doesn't convert to int;
#X text 317 206 2: converts right signal to int;
#X text 317 219 3: converts left signal to int;
#N canvas 589 176 476 167 signal_conversion_to_int 0;
#X text 59 31 Signals are 32 bit floating point by default and their 32 bit representation is used for comparison. When converting a signal to integer \, depending on the mode \, what happens is that the floating point value is converted/truncated to an integer value (1.7 becomes 1 \, for instance) and the 32 bit signed integer representation of this value is used for comparison.;
#X restore 363 243 pd signal_conversion_to_int;
#X text 183 440 - signal to execute Bitwise-AND on;
#X text 97 476 mode <float>;
#X text 317 193 1: converts both signals to int;
#X text 183 458 - bits plus 32 bit (0/1) values sets a raw 32-bits bitmask;
#X text 239 289 compare to a;
#X text 234 301 given bitmask:;
#X text 184 498 - signal to execute Bitwise-AND on;
#X obj 37 126 vradio 15 1 0 4 dfhdfgdj sggh empty 0 -8 0 10 #dcdcdc #000000 #000000 0;
#X text 27 125 0;
#X text 27 139 1;
#X text 27 155 2;
#X text 27 170 3;
#X obj 98 239 cyclone/bitand~;
#X text 184 516 - converted to integer and used as bitmask;
#X text 184 600 - mode [0-3] (details above) - default 0;
#X text 184 550 - signal as result of the "Bitwise-AND" operation;
#X obj 500 69 cyclone/dsponoff~;
#X obj 2 3 header bitand~;
#X text 22 59 Signal Bitwise-AND;
#X floatatom 98 185 13 0 0 0 - - - 0;
#X obj 98 210 sig~;
#X obj 98 267 cyclone/snapshot~ 1;
#X floatatom 98 296 13 0 0 0 - - - 0;
#X floatatom 185 185 13 0 0 0 - - - 0;
#X obj 185 210 sig~;
#X text 24 351 see also;
#X obj 85 350 expr~ $v1 & $v2;
#X text 94 88 [bitand~] compares the bits of two values with "Bitwise-AND" (bits are set to 1 if both are "1" \, 0 otherwise). It compares two signals or a signal to a given bitmask. It can produce NaNs and +/-INFs - but denormals are zeroed out and has 4 modes of comparison (see below)., f 61;
#X text 39 373 as a vanilla alternative;
#X text 217 359 Plugdata users or those with ELSE can also use [else/op~ &] (both would be the same as" mode 1"), f 33;
#X obj 447 382 open-else;
#X msg 447 355 op~;
#N canvas 294 162 325 299 bitwise-cyclone 0;
#X obj 88 53 cyclone/bitand~;
#X obj 88 82 cyclone/bitnot~;
#X obj 88 111 cyclone/bitor~;
#X obj 88 140 cyclone/bitshift~;
#X obj 88 169 cyclone/bitxor~;
#X obj 91 240 cyclone/bitshift~;
#X text 78 20 All bitwise operators in Cyclone;
#X text 86 211 See also:;
#X restore 82 395 pd bitwise-cyclone;
#X text 49 396 and;
#X text 475 354 <- click;
#X connect 10 0 39 0;
#X connect 11 0 10 0;
#X connect 34 0 11 0;
#X connect 39 0 48 0;
#X connect 46 0 47 0;
#X connect 47 0 39 0;
#X connect 48 0 49 0;
#X connect 50 0 51 0;
#X connect 51 0 39 1;
#X connect 58 0 57 0;
