Pd:
I am writing a sequencer using Pd and have bumped into the following problem. I would like to be able to position the textfile object to start playback from a certain record. The approach I have taken works for small files, but breaks down for large files. I've abstracted the behavior into the attached patch. textfileBug.pd
I suspect that it reflects some inadequacy in my understanding of Pd, but just in case it is a bug, here are my system specs.
Pd 0.41 Fedora Core 4 64-bit AMD
Thanks, dP
#N canvas 100 216 178 182 10; #X obj 7 73 list trim; #X obj 7 8 inlet; #X obj 107 8 inlet; #X obj 7 45 list prepend $1; #X obj 7 143 outlet; #X obj 58 143 outlet; #X obj 7 106 route $1 $2; #X connect 0 0 6 0; #X connect 1 0 3 0; #X connect 2 0 3 1; #X connect 3 0 0 0; #X connect 6 0 4 0; #X connect 6 1 5 0;
control mark 0; This is mark 0; control beat set 0; do 0 attack 100 0 7 1.0; do 1 attack 100 0 7 1.0; do 2 release; do 3 release; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 1; do 0 attack 100 1 10 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 2; do 0 attack 100 0 9 1.0; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 3; do 0 attack 100 0 7 1.0; do 1 attack 100 0 7 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 4; do 0 attack 100 0 2 2.0; do 2 attack 100 0 7 0.5; do 3 release; wait 0.25; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 5; do 1 attack 100 0 2 1.0; do 2 attack 100 0 10 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; control beat set 6; do 0 attack 100 0 0 2.0; do 1 attack 100 0 4 1.0; do 2 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 7; do 0 attack 100 1 10 1.0; do 1 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 8; do 0 release; do 1 attack 100 1 5 1.0; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; wait 0.25; control beat set 9; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 -1 4 1.0; wait 0.25; do 0 attack 100 1 5 1.0; do 1 attack 100 0 2 1.0; wait 0.25; control beat set 10; do 0 attack 100 0 7 1.0; do 1 attack 100 0 0 1.0; do 2 release; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 11; do 0 attack 100 1 5 1.0; do 1 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 12; do 0 release; do 1 attack 100 0 4 1.0; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; wait 0.25; control beat set 13; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 14; do 0 attack 100 1 10 1.0; do 1 attack 100 1 10 0.5; do 2 release; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; control beat set 15; do 1 attack 100 1 3 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 2 1.0; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; control beat set 16; do 3 attack 100 0 4 0.5; wait 0.25; do 1 attack 100 1 0 1.0; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 1 0 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 17; do 0 attack 100 0 10 1.0; do 3 attack 100 0 2 0.5; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 -1 11 0.5; wait 0.25; do 0 attack 100 1 5 1.0; wait 0.25; control mark 1; This is mark 1; control beat set 18; do 0 attack 100 -1 4 1.0; do 1 attack 100 0 0 1.0; do 2 attack 100 0 0 1.0; do 3 attack 100 0 0 0.5; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; control beat set 19; do 1 attack 100 0 4 1.0; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; do 1 attack 100 0 7 1.0; do 2 attack 100 0 10 0.5; wait 0.25; wait 0.25; control beat set 20; do 0 release; do 2 attack 100 0 9 0.5; do 3 release; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 21; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 1 attack 100 -1 4 1.0; wait 0.25; wait 0.25; control beat set 22; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 1.0; do 2 attack 100 0 5 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 23; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; do 0 attack 100 0 10 1.0; do 1 attack 100 0 10 0.5; wait 0.25; do 1 attack 100 0 9 0.5; wait 0.25; control beat set 24; do 0 attack 100 0 0 2.0; do 1 attack 100 0 7 0.5; do 2 release; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 25; do 0 attack 100 0 2 2.0; do 1 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 10 0.5; wait 0.25; control beat set 26; do 0 release; do 1 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 27; do 1 attack 100 0 4 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 10 1.0; do 1 attack 100 0 5 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 28; do 0 attack 100 0 10 1.0; do 1 attack 100 0 10 0.5; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 0 1.0; wait 0.25; control beat set 29; do 0 attack 100 0 10 1.0; do 1 attack 100 0 2 1.0; do 2 attack 100 0 10 0.5; wait 0.25; do 1 attack 100 0 4 1.0; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 1.0; do 3 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control beat set 30; do 0 attack 100 1 5 1.0; do 2 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; do 1 attack 100 0 4 1.0; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 31; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 1 1.0; wait 0.25; wait 0.25; control beat set 32; do 0 release; do 1 attack 100 0 2 1.0; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 33; do 1 release; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; control beat set 34; do 0 attack 100 0 0 2.0; do 2 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; do 1 attack 100 0 7 0.5; wait 0.25; do 1 attack 100 0 9 0.5; wait 0.25; do 0 attack 100 1 10 1.0; do 1 attack 100 0 10 0.5; wait 0.25; control beat set 35; do 0 attack 100 0 9 1.0; do 1 attack 100 0 0 1.0; do 3 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 1 10 1.0; do 1 attack 100 0 7 0.5; do 2 attack 100 0 10 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; control beat set 36; do 2 attack 100 0 7 0.5; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 9 0.5; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 10 0.5; do 3 attack 100 0 4 0.5; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; control beat set 37; do 1 attack 100 0 2 1.0; do 2 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 -1 6 1.0; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; control mark 2; This is mark 2; control beat set 38; do 0 attack 100 0 7 1.0; do 1 attack 100 0 2 1.0; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 39; wait 0.25; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; wait 0.25; control beat set 40; do 1 attack 100 0 7 0.5; do 3 release; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control beat set 41; do 0 attack 100 1 10 1.0; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 42; do 0 attack 100 0 9 1.0; do 1 attack 100 0 2 1.0; do 2 release; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 43; do 1 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; wait 0.25; control beat set 44; do 1 attack 100 0 2 1.0; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 45; do 0 attack 100 0 10 1.0; do 3 attack 100 0 7 0.5; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 5 1.0; wait 0.25; control beat set 46; do 0 attack 100 0 4 1.0; do 1 attack 100 0 0 1.0; do 2 release; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 47; do 0 attack 100 0 5 1.0; do 1 attack 100 0 9 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 48; do 0 attack 100 0 7 1.0; do 1 attack 100 0 10 0.5; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 49; do 2 attack 100 0 2 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 9 0.5; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 7 0.5; wait 0.25; control beat set 50; do 1 attack 100 0 5 0.5; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; wait 0.25; control beat set 51; do 1 attack 100 0 7 0.5; do 2 attack 100 0 0 1.0; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control mark 3; This is mark 3; control beat set 52; do 0 attack 100 0 5 1.0; do 1 attack 100 0 9 0.5; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 53; do 1 release; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 54; do 0 release; do 1 attack 100 0 4 1.0; do 2 attack 100 0 0 1.0; do 3 release; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 5 1.0; wait 0.25; control beat set 55; do 1 attack 100 0 7 1.0; wait 0.25; do 1 attack 100 0 9 1.0; wait 0.25; do 1 attack 100 0 10 1.0; do 2 attack 100 0 10 0.5; wait 0.25; wait 0.25; control beat set 56; do 0 release; do 2 attack 100 0 7 0.5; wait 0.25; do 1 attack 100 0 9 1.0; wait 0.25; do 1 attack 100 0 7 1.0; wait 0.25; wait 0.25; control beat set 57; do 0 attack 100 0 0 2.0; do 2 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 6 1.0; wait 0.25; wait 0.25; control beat set 58; do 0 attack 100 0 10 1.0; do 1 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; do 3 release; wait 0.25; wait 0.25; do 0 attack 100 0 2 2.0; wait 0.25; wait 0.25; control beat set 59; do 1 release; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 60; do 0 attack 100 0 7 1.0; do 1 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; wait 0.25; control beat set 61; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control beat set 62; do 0 attack 100 0 5 1.0; do 1 attack 100 0 2 1.0; do 2 release; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; wait 0.25; control beat set 63; do 1 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; wait 0.25; control beat set 64; do 1 attack 100 0 2 1.0; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 65; do 0 attack 100 0 10 1.0; do 3 attack 100 0 7 0.5; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 5 1.0; wait 0.25; control beat set 66; do 0 attack 100 0 4 1.0; do 1 attack 100 0 0 1.0; do 2 release; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 67; do 0 attack 100 0 5 1.0; do 1 attack 100 0 9 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 68; do 0 attack 100 0 7 1.0; do 1 attack 100 0 10 0.5; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 69; do 2 attack 100 0 2 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 9 0.5; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 7 0.5; wait 0.25; control beat set 70; do 1 attack 100 0 5 0.5; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 10 1.0; wait 0.25; wait 0.25; control beat set 71; do 1 attack 100 0 7 0.5; do 2 attack 100 0 0 1.0; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control beat set 72; do 0 attack 100 0 5 1.0; do 1 attack 100 0 9 0.5; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 10 0.5; do 3 attack 100 0 10 0.25; wait 0.25; wait 0.25; control beat set 73; do 1 attack 100 0 5 0.5; wait 0.25; do 3 attack 100 0 0 0.5; wait 0.25; do 3 attack 100 0 2 0.5; wait 0.25; do 1 attack 100 0 7 0.5; do 3 attack 100 0 4 0.5; wait 0.25; control beat set 74; do 0 release; do 1 attack 100 0 9 0.5; do 2 attack 100 0 0 1.0; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 10 0.5; wait 0.25; do 1 attack 100 0 0 1.0; do 3 attack 100 0 0 0.5; wait 0.25; wait 0.25; control beat set 75; do 0 attack 100 0 4 1.0; do 1 attack 100 0 7 0.5; wait 0.25; do 3 attack 100 0 2 0.5; wait 0.25; do 2 attack 100 0 10 0.5; do 3 attack 100 0 4 0.5; wait 0.25; do 1 attack 100 0 9 0.5; do 3 attack 100 0 5 0.5; wait 0.25; control beat set 76; do 0 attack 100 0 2 1.0; do 1 attack 100 0 10 0.5; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 0 1.0; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; control beat set 77; do 1 attack 100 0 2 1.0; do 2 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 6 1.0; wait 0.25; wait 0.25; control mark 4; This is mark 4; control beat set 78; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 79; do 0 attack 100 1 10 1.0; do 1 attack 100 0 7 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 80; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 1.0; do 2 release; do 3 release; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 81; do 0 attack 100 0 7 1.0; do 1 attack 100 0 7 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 82; do 0 attack 100 0 2 2.0; do 2 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 5 1.0; wait 0.25; wait 0.25; control beat set 83; do 1 attack 100 0 2 1.0; do 2 attack 100 0 10 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; control beat set 84; do 0 attack 100 0 0 2.0; do 1 attack 100 0 4 1.0; do 2 attack 100 0 9 0.5; do 3 release; wait 0.25; wait 0.25; do 1 attack 100 0 5 1.0; wait 0.25; wait 0.25; control beat set 85; do 0 attack 100 1 10 1.0; do 1 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 86; do 0 release; do 1 attack 100 0 5 1.0; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; wait 0.25; control beat set 87; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 4 1.0; wait 0.25; do 0 attack 100 1 5 1.0; do 1 attack 100 0 2 1.0; wait 0.25; control beat set 88; do 0 attack 100 0 7 1.0; do 1 attack 100 0 0 1.0; do 2 release; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 89; do 0 attack 100 1 5 1.0; do 1 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 90; do 0 release; do 1 attack 100 0 4 1.0; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; wait 0.25; wait 0.25; control beat set 91; do 1 attack 100 0 5 1.0; wait 0.25; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 92; do 0 attack 100 1 10 1.0; do 1 attack 100 0 10 0.5; do 2 release; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; control beat set 93; do 1 attack 100 0 3 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 2 1.0; do 3 attack 100 0 5 0.5; wait 0.25; wait 0.25; control beat set 94; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 0 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 95; do 0 attack 100 0 10 1.0; do 3 attack 100 0 2 0.5; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 11 0.5; wait 0.25; do 0 attack 100 1 5 1.0; wait 0.25; control mark 5; This is mark 5; control beat set 96; do 0 attack 100 -1 4 1.0; do 1 attack 100 0 0 1.0; do 2 attack 100 0 0 1.0; do 3 attack 100 0 0 0.5; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; control beat set 97; do 1 attack 100 0 4 1.0; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; do 1 attack 100 0 7 1.0; do 2 attack 100 0 10 0.5; wait 0.25; wait 0.25; control beat set 98; do 0 release; do 2 attack 100 0 9 0.5; do 3 release; wait 0.25; wait 0.25; do 1 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 99; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 1 attack 100 -1 4 1.0; wait 0.25; wait 0.25; control beat set 100; do 0 attack 100 0 9 1.0; do 1 attack 100 1 5 1.0; do 2 attack 100 0 5 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 101; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 0 1.0; wait 0.25; do 0 attack 100 0 10 1.0; do 1 attack 100 0 10 0.5; wait 0.25; do 1 attack 100 0 9 0.5; wait 0.25; control beat set 102; do 0 attack 100 0 0 2.0; do 1 attack 100 0 7 0.5; do 2 release; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 103; do 0 attack 100 0 2 2.0; do 1 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 10 0.5; wait 0.25; control beat set 104; do 0 release; do 1 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; wait 0.25; do 0 attack 100 0 0 2.0; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 105; do 1 attack 100 0 4 1.0; wait 0.25; wait 0.25; do 0 attack 100 0 10 1.0; do 1 attack 100 0 5 1.0; wait 0.25; do 0 attack 100 0 9 1.0; wait 0.25; control beat set 106; do 0 attack 100 0 10 1.0; do 1 attack 100 0 10 0.5; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 0 1.0; wait 0.25; control beat set 107; do 0 attack 100 0 10 1.0; do 1 attack 100 0 2 1.0; do 2 attack 100 0 10 0.5; wait 0.25; do 1 attack 100 0 4 1.0; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 1.0; do 3 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; control beat set 108; do 0 attack 100 1 5 1.0; do 2 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; do 1 attack 100 0 4 1.0; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; control beat set 109; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; do 3 attack 100 0 4 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 1 1.0; wait 0.25; wait 0.25; control beat set 110; do 0 release; do 1 attack 100 0 2 1.0; do 2 attack 100 0 2 1.0; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 1 5 1.0; wait 0.25; wait 0.25; control beat set 111; do 1 release; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 1 10 1.0; wait 0.25; control beat set 112; do 0 attack 100 0 0 2.0; do 2 attack 100 0 0 1.0; do 3 attack 100 0 9 0.5; wait 0.25; do 1 attack 100 0 7 0.5; wait 0.25; do 1 attack 100 0 9 0.5; wait 0.25; do 0 attack 100 1 10 1.0; do 1 attack 100 0 10 0.5; wait 0.25; control beat set 113; do 0 attack 100 0 9 1.0; do 1 attack 100 0 0 1.0; do 3 attack 100 0 5 0.5; wait 0.25; do 0 attack 100 0 7 1.0; wait 0.25; do 0 attack 100 1 10 1.0; do 1 attack 100 0 7 0.5; do 2 attack 100 0 10 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; control beat set 114; do 2 attack 100 0 7 0.5; wait 0.25; do 0 attack 100 0 9 1.0; do 1 attack 100 0 9 0.5; wait 0.25; do 0 attack 100 0 7 1.0; do 1 attack 100 0 10 0.5; do 3 attack 100 0 5 0.5; wait 0.25; do 1 attack 100 0 0 1.0; do 3 attack 100 0 4 0.5; wait 0.25; control beat set 115; do 1 attack 100 0 2 1.0; do 2 attack 100 0 9 0.5; do 3 attack 100 0 2 0.5; wait 0.25; wait 0.25; do 0 attack 100 -1 6 1.0; wait 0.25; wait 0.25; control beat set 116; do 0 attack 100 0 7 1.0; do 2 attack 100 0 7 0.5; do 3 attack 100 0 7 0.5; wait 0.25; wait 0.25; do 1 attack 100 0 10 0.5; wait 0.25; wait 0.25; control beat set 117; do 1 attack 100 0 3 1.0; wait 0.25; wait 0.25; wait 0.25; do 1 attack 100 0 2 1.0; wait 0.25; control beat set 118; do 1 attack 100 0 2 1.0; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 119; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 120; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 121; wait 0.25; wait 0.25; wait 0.25; wait 0.25; control beat set 122; do 0 release; do 1 release; do 2 release; do 3 release; wait 0.25;
control mark 0; This is mark 0; control mark 1; This is mark 1; control mark 2; This is mark 2; quux; control mark 3; This is mark 3; foo; bar; baaz; control mark 4; This is mark 4;
#N canvas 320 81 924 719 10; #X obj 191 213 textfile; #X obj 363 453 route control; #X obj 363 492 route mark; #X obj 191 360 switch print position; #X obj 494 583 bang; #X obj 494 612 s bangfile; #X obj 191 183 r bangfile; #X obj 572 583 bang; #X obj 333 322 r setmode; #X msg 572 610 print; #X obj 572 639 s setmode; #X msg 109 138 read small.txt; #X msg 227 138 read big.txt; #X msg 494 311 rewind; #X obj 450 284 t b b b; #X msg 472 349 position; #X obj 472 384 s setmode; #X obj 450 419 s bangfile; #X obj 420 229 s bangfile; #X obj 494 554 moses 0; #X obj 449 478 bang; #X obj 449 505 s bangfile; #X obj 333 390 t a a; #X obj 333 423 print skip; #X obj 191 407 print cue; #X msg 336 138 0; #X msg 379 138 1; #X msg 421 138 2; #X msg 460 138 3; #X msg 507 138 4; #X obj 450 255 t b f; #X obj 420 194 t b f; #X text 107 33 Click [read small.txt( then [0( , [1( , etc....; #X text 107 50 You will see "cue: This is mark 0" , etc....; #X text 105 88 Click [read big.txt( should give the same behavior , but does not.; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 1 1 20 0; #X connect 2 0 19 0; #X connect 3 0 24 0; #X connect 3 1 22 0; #X connect 4 0 5 0; #X connect 6 0 0 0; #X connect 7 0 9 0; #X connect 8 0 3 1; #X connect 9 0 10 0; #X connect 11 0 0 0; #X connect 12 0 0 0; #X connect 13 0 17 0; #X connect 14 0 17 0; #X connect 14 1 15 0; #X connect 14 2 13 0; #X connect 15 0 16 0; #X connect 19 0 4 0; #X connect 19 1 7 0; #X connect 20 0 21 0; #X connect 22 0 23 0; #X connect 22 1 1 0; #X connect 25 0 31 0; #X connect 26 0 31 0; #X connect 27 0 31 0; #X connect 28 0 31 0; #X connect 29 0 31 0; #X connect 30 0 14 0; #X connect 30 1 19 1; #X connect 31 0 18 0; #X connect 31 1 30 0;
not checked your patch, sorry...but i guess you need [msgfile] from the zexy library.
Thanks for the tip. I tried to compile the zexy library, but got an
error.
gcc -export_dynamic -shared -o zexy.pd_linux *.o -lm -lc
/usr/bin/ld: a2l.o: relocation R_X86_64_32 against `a local symbol'
can not be used when making a shared object; recompile with -fPIC
a2l.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [zexy] Error 1
I attached the transcript in case anybody who cares is listening.
Fedora Core 4/ 64 bits Pd 0.41
On Mar 4, 2007, at 5:43 AM, hard off wrote:
not checked your patch, sorry...but i guess you need [msgfile] from the zexy library.
--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com
David F. Place schrieb:
Thanks for the tip. I tried to compile the zexy library, but got an error.
gcc -export_dynamic -shared -o zexy.pd_linux *.o -lm -lc /usr/bin/ld: a2l.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC a2l.o: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [zexy] Error 1
you need to add "-fPIC" in the makefile to the compiler options !
LG Georg
Thanks for the tip. It works now.
On Mar 4, 2007, at 11:31 AM, Georg Holzmann wrote:
David F. Place schrieb:
Thanks for the tip. I tried to compile the zexy library, but got
an error. gcc -export_dynamic -shared -o zexy.pd_linux *.o -lm -lc /usr/bin/ld: a2l.o: relocation R_X86_64_32 against `a local
symbol' can not be used when making a shared object; recompile
with -fPIC a2l.o: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [zexy] Error 1you need to add "-fPIC" in the makefile to the compiler options !
LG Georg
--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com
David F. Place wrote:
Thanks for the tip. I tried to compile the zexy library, but got an error.
...
checking "ms-bitfields"... yes checking "pd>=0.37"... yes
now that is very weird. i am pretty sure that zexy's configure does perform a check for "-fPIC". to be precise, here on my machine this check is performed right after ms-bitfield, the corresponding output lines look like:
checking whether gcc accepts "-mms-bitfields"... yes checking whether gcc accepts "-fPIC"... yes checking whether gcc accepts "-mfpmath=sse -msse"... yes checking "pd>=0.37"... yes
where did you get zexy from? from CVS? or is it a source release from pd.iem.at ? i suggest using the CVS version (zexy is pretty much stable: i seldom add features, most changes are bug-fixes and i usually forget to make a new release after such minor changes)
fma.sdr IOhannes
On Mar 5, 2007, at 3:03 AM, IOhannes m zmoelnig wrote:
where did you get zexy from? from CVS? or is it a source release from pd.iem.at ?
I got it from ftp://iem.at/pd/externals/ZEXY
--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com
hi david
i had a look at your patch, but i didn't come to a solution, respectively i wasn't able to figure out what the problem exactly is.
however, i think, what you want to achieve could be implemented much easier, particularly easier to read. what makes it very difficult to read, is the deep deepness of the message structure, though at first glance it doesn't look like a very complicated patch. for example: before the right tree of a [trigger] is finished, it's 'banged' again, so that it is triggered several times, before the left tree starts the execution. my mind is far too less capable of beeing aware, what the actual state on each step really is.
i didn't make an example patch (ask me, if you want me to do so), but i have some ideas for another approach. i think i would 'control' the [textfile] with an [until]-object. when triggered, [until] keeps firing 'bang's until you stop it. send the bangs to [textfile], so that on each bang it's going one line further. you could parse the output of [textfile], that when the message, you are looking for, is coming out [textfile], you could stop [until], and you have the 'cue' at the desired position.
hope that helps...
roman
On Sat, 2007-03-03 at 20:50 -0500, David F. Place wrote:
Pd:
I am writing a sequencer using Pd and have bumped into the following problem. I would like to be able to position the textfile object to start playback from a certain record. The approach I have taken works for small files, but breaks down for large files. I've abstracted the behavior into the attached patch. textfileBug.pd
I suspect that it reflects some inadequacy in my understanding of Pd, but just in case it is a bug, here are my system specs.
Pd 0.41 Fedora Core 4 64-bit AMD
Thanks, dP
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
On Mar 4, 2007, at 11:52 AM, Roman Haefeli wrote:
hi david
i had a look at your patch, but i didn't come to a solution, respectively i wasn't able to figure out what the problem exactly is.
In the file big.txt, the process stops before it reaches the "control
mark" record. I think that there may be a limited amount of
computation allowed in a control cycle. Does Pd just abort the
control cycle if it runs out of time? I tried this also with audio
turned off and saw the same behavior.
Perhaps you are not able to reproduce the behavior? If you click
[read small.txt( then [4( you should see:
cue: This is mark 4
If you click [read big.txt( the [4( you will see something else and
that is wrong.
however, i think, what you want to achieve could be implemented much easier, particularly easier to read. what makes it very difficult to read, is the deep deepness of the message structure, though at first glance it doesn't look like a very complicated patch. for example: before the right tree of a [trigger] is finished, it's 'banged' again, so that it is triggered several times, before the left tree starts the execution. my mind is far too less capable of beeing aware, what the actual state on each step really is.
i didn't make an example patch (ask me, if you want me to do so),
but i have some ideas for another approach. i think i would 'control' the [textfile] with an [until]-object. when triggered, [until] keeps
firing 'bang's until you stop it. send the bangs to [textfile], so that on each bang it's going one line further. you could parse the output of [textfile], that when the message, you are looking for, is coming out [textfile], you could stop [until], and you have the 'cue' at the desired position.hope that helps...
roman
On Sat, 2007-03-03 at 20:50 -0500, David F. Place wrote:
Pd:
I am writing a sequencer using Pd and have bumped into the following problem. I would like to be able to position the textfile object to start playback from a certain record. The approach I have taken
works for small files, but breaks down for large files. I've abstracted
the behavior into the attached patch. textfileBug.pdI suspect that it reflects some inadequacy in my understanding of Pd, but just in case it is a bug, here are my system specs.
Pd 0.41 Fedora Core 4 64-bit AMD
Thanks, dP
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo!
Mail: http://mail.yahoo.de
--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com
On Sun, 2007-03-04 at 12:11 -0500, David F. Place wrote:
On Mar 4, 2007, at 11:52 AM, Roman Haefeli wrote:
hi david
i had a look at your patch, but i didn't come to a solution, respectively i wasn't able to figure out what the problem exactly is.
In the file big.txt, the process stops before it reaches the "control
mark" record. I think that there may be a limited amount of
computation allowed in a control cycle. Does Pd just abort the
control cycle if it runs out of time? I tried this also with audio
turned off and saw the same behavior.
i don't think, that pd just aborts a control-cycle silently. if so, then it would print at least a message like 'stack overflow'.
Perhaps you are not able to reproduce the behavior? If you click
[read small.txt( then [4( you should see:cue: This is mark 4
i totally saw your problem, but i am not able to sort everything out, so that i can be sure to understand, what really happens.
If you click [read big.txt( the [4( you will see something else and
that is wrong.
how can you be sure, that it is wrong? possibly your mind is capaple of much more, but i tend to believe, that it's a fault of the patch, not of pd. but why make it complicate, when it could be so clear and easy?
roman
however, i think, what you want to achieve could be implemented much easier, particularly easier to read. what makes it very difficult to read, is the deep deepness of the message structure, though at first glance it doesn't look like a very complicated patch. for example: before the right tree of a [trigger] is finished, it's 'banged' again, so that it is triggered several times, before the left tree starts the execution. my mind is far too less capable of beeing aware, what the actual state on each step really is.
i didn't make an example patch (ask me, if you want me to do so),
but i have some ideas for another approach. i think i would 'control' the [textfile] with an [until]-object. when triggered, [until] keeps
firing 'bang's until you stop it. send the bangs to [textfile], so that on each bang it's going one line further. you could parse the output of [textfile], that when the message, you are looking for, is coming out [textfile], you could stop [until], and you have the 'cue' at the desired position.hope that helps...
roman
On Sat, 2007-03-03 at 20:50 -0500, David F. Place wrote:
Pd:
I am writing a sequencer using Pd and have bumped into the following problem. I would like to be able to position the textfile object to start playback from a certain record. The approach I have taken
works for small files, but breaks down for large files. I've abstracted
the behavior into the attached patch. textfileBug.pdI suspect that it reflects some inadequacy in my understanding of Pd, but just in case it is a bug, here are my system specs.
Pd 0.41 Fedora Core 4 64-bit AMD
Thanks, dP
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo!
Mail: http://mail.yahoo.de--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
On Mar 4, 2007, at 12:33 PM, Roman Haefeli wrote:
If you click [read big.txt( the [4( you will see something else and that is wrong.
how can you be sure, that it is wrong? possibly your mind is
capaple of much more, but i tend to believe, that it's a fault of the patch,
not of pd. but why make it complicate, when it could be so clear and easy?
Well, wrong in the sense that it is not the answer I want. Of
course, the problem could be in my
patch. I would be very interested to see your solution, for my
education. Idiomatic Pd is not natural to me as I have been
programming in lazy functional languages for more than 20 years!
I should mention though that it seems the [msgfile] object in the
zexy library looks like it will do exactly what I want very directly
with its [goto n( message. (I'll just make a table translating marks
to lines.)
Thanks for your help.
--o-------o-o-o---o-o-o--- David F. Place mailto:d@vidplace.com