#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 ; #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 : 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 : select codec # from the codec-list (and enumerate codec-properties to outlet#3); #X text 18 203 Inlet 1: codec : select codec by short name (and enumerate codec-properties to outlet#3); #X text 18 233 Inlet 1: set : set a property named to the value . 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;