#N canvas 435 61 682 509 10;
#X declare -lib Gem;
#X text 433 9 GEM object;
#X obj 9 375 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 18 374 Arguments:;
#X obj 8 56 cnv 15 430 310 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 53 cnv 15 170 410 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 36 Example:;
#X obj 479 429 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X msg 67 70 set destroy;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X msg 156 71 set create;
#X obj 67 41 route create;
#X connect 2 0 7 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X connect 7 1 6 0;
#X connect 7 1 5 0;
#X restore 484 468 pd gemwin;
#X msg 484 449 create;
#X text 480 428 Create window:;
#X obj 451 194 cnv 15 167 230 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 59 gemhead;
#X obj 451 128 pix_film;
#X obj 515 128 t f;
#X obj 464 81 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 0 450 300 open 0;
#X obj 85 49 inlet;
#X obj 85 237 outlet;
#X obj 85 145 openpanel;
#X msg 85 179 open \$1;
#X msg 259 213 auto 1;
#X obj 268 179 loadbang;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 4 0;
#X restore 464 100 pd open;
#X text 485 74 open a supported;
#X text 486 85 movie-clip;
#X text 64 385 <none>;
#X text 50 12 Synopsis: [pix_record];
#X text 71 31 Class: pix object (output);
#X text 29 57 Description: write a sequence of pixes to a movie file
;
#X obj 451 403 pix_record;
#X obj 451 167 pix_draw;
#X obj 451 148 pix_invert;
#X text 18 104 You can choose the codec you want to use either via
a graphical dialog or by directly sending a "codec" with either the
name or the enumeration number of the codec. Use "codeclist" to query
the available codecs \, their names and their number.;
#X obj 470 343 cnv 15 145 25 empty empty empty 20 12 0 14 -225271 -66577
0;
#X msg 480 347 bang;
#X msg 552 347 auto \$1;
#X obj 533 348 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 470 199 cnv 15 145 65 empty empty empty 20 12 0 14 -225271 -66577
0;
#X msg 476 224 codeclist;
#X msg 472 203 dialog;
#X obj 472 244 t a;
#X obj 460 271 cnv 15 155 65 empty empty empty 20 12 0 14 -225271 -66577
0;
#X msg 463 292 file /tmp/mymovie.mov;
#X obj 464 273 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
-1;
#N canvas 0 0 450 300 savepanel 0;
#X obj 114 62 inlet;
#X obj 114 254 outlet;
#X obj 114 199 t b a;
#X obj 114 125 savepanel;
#X msg 114 162 set file \$1;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 2 1 1 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X restore 484 272 pd savepanel;
#X msg 520 315 record \$1;
#X obj 500 317 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 463 315 t a;
#X text 14 73 [pix_write] writes a series of pixes into a movie file.
You can set the file to write to via the "file" message.;
#X text 18 174 When file and codec are specified \, you can open the
writing connection with the message "record 1".;
#X text 18 202 To actually do record a frame into the file \, send
the object a "bang" message. If you want to record a consecutive number
of frames \, use the "auto" message. This allows you to have full control
on which frames are to be recorded.;
#X text 17 269 The recording is finished and the file flushed to disk
\, after a "record 0" message is received. You might not be able to
access the file for reading before recording has finished.;
#X text 526 150 (do something);
#X text 515 168 (monitoring);
#X text 22 339 NOTE: currently only quicktime MOVies can be recorded.
This might change in the future (watch the console!);
#X obj 8 414 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 6 49 459 361 MESSAGES 0;
#X obj 9 15 cnv 15 430 340 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 34 17 Inlets:;
#X text 34 293 Outlets:;
#X text 12 307 Outlet 1: gemlist;
#X text 18 31 Inlet 1: gemlist;
#X text 18 50 Inlet 1: file <filename>: specify the file for writing
;
#X text 18 62 Inlet 1: record <0|1>: start recording (no actual grabbing
is done!) or stop recording (flush movie to disk);
#X text 18 91 Inlet 1: bang: grab the next incoming pix.;
#X text 18 103 Inlet 1: auto <0|1>: start/stop grabbing all incoming
pixes;
#X text 12 321 Outlet 2: number of frames written;
#X text 12 335 Outlet 3: info on available codecs/properties;
#X text 18 148 Inlet 1: codeclist: enumerate a list of available codecs
to the outlet#3;
#X text 18 178 Inlet 1: codec <int>: select codec #<int> from the codec-list
(and enumerate codec-properties to outlet#3);
#X text 18 203 Inlet 1: codec <symbol>: select codec by short name
(and enumerate codec-properties to outlet#3);
#X text 18 233 Inlet 1: set <symbol> <float>: set a property named
<symbol> to the value <float>. properties are persistent across codec-changes.
properties unknown to the currently selected coded are ignored.;
#X text 18 123 Inlet 1: dialog: popup a dialog to select the codec
(if available);
#X restore 83 420 pd MESSAGES;
#X floatatom 527 405 3 0 0 0 - - -;
#X msg 532 244 codec mjpa;
#X msg 552 225 codec 3;
#N canvas 129 512 599 344 PROPERTIES 0;
#N canvas 607 622 561 319 PropertyLogic 0;
#X obj 54 6 inlet;
#X obj 293 70 r \$0-nfo;
#X obj 54 45 route codeclist codec;
#X obj 126 67 f;
#N canvas 82 113 577 363 codecs 0;
#X obj 54 222 i;
#X text 90 229 numcodecs;
#X obj 241 132 max;
#X obj 241 154 t f f;
#X obj 54 8 inlet bang;
#X obj 241 47 inlet info;
#X obj 241 69 route codec;
#X obj 241 91 unpack 0 s;
#X msg 154 76 0;
#N canvas 504 68 565 365 id2name 0;
#X obj 95 197 list prepend;
#X obj 95 176 t b f;
#X obj 95 219 list split;
#X obj 195 286 symbol;
#X msg 195 261 symbol \$1;
#X obj 95 91 route float;
#X obj 128 238 route bang;
#X obj 95 69 inlet ID;
#X obj 338 77 route reset;
#X obj 338 55 inlet name#N | reset;
#X obj 412 128 list prepend;
#X obj 412 150 t l l;
#X obj 195 308 outlet name;
#X obj 412 107 symbol;
#X obj 338 99 t b;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X connect 1 1 2 1;
#X connect 2 1 6 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 6 1 4 0;
#X connect 7 0 5 0;
#X connect 8 0 14 0;
#X connect 8 1 13 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 11 0 0 1;
#X connect 11 1 10 1;
#X connect 13 0 10 0;
#X connect 14 0 11 0;
#X restore 347 249 pd id2name;
#X obj 154 54 t b b;
#X msg 347 220 reset;
#X obj 77 76 s \$0-ctl;
#X msg 77 53 codeclist;
#X obj 54 30 t b b b;
#X obj 434 41 inlet query;
#X obj 434 63 t f;
#X obj 54 311 s \$0-numcodecs;
#X obj 347 292 s \$0-numcodecs;
#X msg 347 271 label \$1;
#X msg 146 113 label;
#X msg 54 292 set 0 \, number \$1;
#X connect 0 0 21 0;
#X connect 2 0 3 0;
#X connect 3 0 0 1;
#X connect 3 1 2 1;
#X connect 4 0 14 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 2 0;
#X connect 7 1 9 1;
#X connect 8 0 3 0;
#X connect 9 0 19 0;
#X connect 10 0 8 0;
#X connect 10 1 11 0;
#X connect 10 1 20 0;
#X connect 11 0 9 0;
#X connect 13 0 12 0;
#X connect 14 0 0 0;
#X connect 14 1 13 0;
#X connect 14 2 10 0;
#X connect 15 0 16 0;
#X connect 16 0 9 0;
#X connect 19 0 18 0;
#X connect 20 0 18 0;
#X connect 21 0 17 0;
#X restore 77 210 pd codecs;
#N canvas 1512 420 639 552 properties 0;
#X obj 283 56 inlet info;
#X obj 66 57 inlet codec;
#X msg 66 137 codec \$1;
#X obj 66 79 route float;
#X obj 66 159 s \$0-ctl;
#N canvas 506 60 565 365 id2name 0;
#X obj 95 197 list prepend;
#X obj 95 176 t b f;
#X obj 95 219 list split;
#X obj 195 286 symbol;
#X msg 195 261 symbol \$1;
#X obj 95 91 route float;
#X obj 128 238 route bang;
#X obj 95 69 inlet ID;
#X obj 338 77 route reset;
#X obj 338 55 inlet name#N | reset;
#X obj 412 128 list prepend;
#X obj 412 150 t l l;
#X obj 195 308 outlet name;
#X obj 412 107 symbol;
#X obj 338 99 t b;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X connect 1 1 2 1;
#X connect 2 1 6 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 6 1 4 0;
#X connect 7 0 5 0;
#X connect 8 0 14 0;
#X connect 8 1 13 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 11 0 0 1;
#X connect 11 1 10 1;
#X connect 13 0 10 0;
#X connect 14 0 11 0;
#X restore 347 249 pd id2name;
#X msg 347 200 reset;
#X msg 301 249 label;
#X obj 66 101 t b f b;
#X msg 347 271 label \$1;
#X obj 301 200 t b b;
#X obj 283 79 route numprops property;
#X obj 236 354 s \$0-numproperties;
#X msg 236 326 number \$1 \, set 0;
#X obj 283 100 t f;
#X obj 507 250 r \$0-selprop;
#X obj 507 277 route float;
#X obj 342 459 s \$0-makeprop;
#X msg 342 437 set set \$1 \, adddollar 1;
#X obj 507 299 t f f;
#N canvas 505 64 565 365 id2name 0;
#X obj 95 197 list prepend;
#X obj 95 176 t b f;
#X obj 95 219 list split;
#X obj 95 91 route float;
#X obj 128 238 route bang;
#X obj 95 69 inlet ID;
#X obj 338 77 route reset;
#X obj 338 55 inlet name#N | reset;
#X obj 412 128 list prepend;
#X obj 412 150 t l l;
#X obj 195 308 outlet name;
#X obj 412 107 symbol;
#X obj 338 99 t b;
#X obj 195 286 symbol;
#X msg 195 261 symbol \$1;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X connect 1 1 2 1;
#X connect 2 1 4 0;
#X connect 3 0 1 0;
#X connect 4 1 14 0;
#X connect 5 0 3 0;
#X connect 6 0 12 0;
#X connect 6 1 11 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 9 0 0 1;
#X connect 9 1 8 1;
#X connect 11 0 8 0;
#X connect 12 0 9 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X restore 427 249 pd id2name;
#X obj 347 222 t a a;
#X obj 397 126 list;
#X msg 397 181 symbol \$1(\$2:\$3);
#X obj 397 149 t l s;
#X connect 0 0 11 0;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
#X connect 3 0 8 0;
#X connect 5 0 9 0;
#X connect 6 0 21 0;
#X connect 7 0 12 0;
#X connect 8 1 2 0;
#X connect 8 2 10 0;
#X connect 9 0 12 0;
#X connect 10 0 7 0;
#X connect 10 1 6 0;
#X connect 11 0 14 0;
#X connect 11 1 22 0;
#X connect 13 0 12 0;
#X connect 14 0 13 0;
#X connect 15 0 16 0;
#X connect 16 0 19 0;
#X connect 18 0 17 0;
#X connect 19 0 5 0;
#X connect 19 1 20 0;
#X connect 20 0 18 0;
#X connect 21 0 5 1;
#X connect 21 1 20 1;
#X connect 22 0 24 0;
#X connect 23 0 5 1;
#X connect 24 0 23 0;
#X connect 24 1 20 1;
#X restore 254 200 pd properties;
#X obj 126 95 t b f f b;
#X msg 186 116 2;
#X obj 293 92 list prepend 0;
#X msg 100 159 1;
#X obj 293 134 route 0 1 2;
#X obj 54 137 t b b b;
#X msg 54 159 0;
#X obj 100 181 t f;
#X msg 126 117 0;
#X obj 126 139 t f;
#X obj 293 156 s \$0-nfoprint;
#N canvas 4 49 450 300 reset 0;
#X obj 99 217 s \$0-numcodecs;
#X obj 99 195 t a a;
#X obj 219 217 s \$0-numproperties;
#X obj 99 28 inlet;
#X obj 99 50 t b b;
#X msg 99 173 number 0 \, label;
#X obj 270 180 s \$0-makeprop;
#X msg 270 154 set;
#X connect 1 0 0 0;
#X connect 1 1 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 1 7 0;
#X connect 5 0 1 0;
#X connect 7 0 6 0;
#X restore 174 266 pd reset;
#X msg 174 246 bang;
#X text 219 242 <-- clear for saving;
#X connect 0 0 2 0;
#X connect 1 0 8 0;
#X connect 2 0 11 0;
#X connect 2 1 3 0;
#X connect 3 0 6 0;
#X connect 6 0 14 0;
#X connect 6 1 5 0;
#X connect 6 2 4 2;
#X connect 6 3 7 0;
#X connect 7 0 15 0;
#X connect 8 0 10 0;
#X connect 9 0 13 0;
#X connect 10 0 16 0;
#X connect 10 1 4 1;
#X connect 10 2 5 1;
#X connect 11 0 12 0;
#X connect 11 1 4 0;
#X connect 11 2 9 0;
#X connect 12 0 13 0;
#X connect 13 0 8 1;
#X connect 14 0 15 0;
#X connect 15 0 8 1;
#X connect 18 0 17 0;
#X restore 68 269 pd PropertyLogic;
#X msg 68 25 codeclist;
#X text 142 25 INIT: query all available codecs;
#X text 86 51 select an available codec (and query available properties)
;
#X msg 96 245 set framerate \$1;
#X floatatom 96 227 3 0 100 0 - - -;
#X obj 82 71 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 87 80 hradio 15 1 0 1 empty \$0-numcodecs empty 0 -8 0 10 -262144
-1 -1 0;
#X msg 87 100 codec \$1;
#X obj 82 152 cnv 15 200 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 87 160 hradio 15 1 0 1 \$0-selprop \$0-numproperties empty 0
-8 0 10 -262144 -1 -1 0;
#X msg 87 202;
#X floatatom 87 182 0 0 0 0 - #0-propvalue -;
#X obj 297 185 r \$0-makeprop;
#X text 87 138 set a codec-property;
#X text 121 227 override the framerate (default: Gem's framerate);
#X connect 1 0 0 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 7 0 8 0;
#X connect 8 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 11 0;
#X connect 13 0 11 0;
#X restore 243 420 pd PROPERTIES;
#X obj 553 386 r \$0-ctl;
#X obj 621 261 s \$0-ctl;
#X obj 620 332 s \$0-ctl;
#N canvas 6 49 515 369 print 0;
#X obj 102 176 inlet;
#X obj 102 198 s \$0-nfo;
#X obj 102 220 r \$0-nfoprint;
#X obj 102 242 print INFO;
#X text 62 90 actually you can just hook a [print] to the 3rd outlet.
;
#X text 64 115 here it's a bit more complicated \, as we want to filter
out the messages generated from the [pd PROPERTIES] window.;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X restore 553 403 pd print;
#X obj 518 8 declare -lib Gem;
#X connect 7 0 8 0;
#X connect 8 0 7 0;
#X connect 11 0 12 0;
#X connect 12 0 24 0;
#X connect 12 2 13 0;
#X connect 13 0 12 1;
#X connect 14 0 15 0;
#X connect 15 0 12 0;
#X connect 22 1 50 0;
#X connect 22 2 57 0;
#X connect 23 0 22 0;
#X connect 24 0 23 0;
#X connect 27 0 22 0;
#X connect 28 0 22 0;
#X connect 29 0 28 0;
#X connect 31 0 33 0;
#X connect 32 0 33 0;
#X connect 33 0 55 0;
#X connect 35 0 40 0;
#X connect 36 0 37 0;
#X connect 37 0 35 0;
#X connect 38 0 40 0;
#X connect 39 0 38 0;
#X connect 40 0 56 0;
#X connect 51 0 33 0;
#X connect 52 0 33 0;
#X connect 54 0 22 0;
