1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
#N canvas 320 94 583 580 10;
#X obj 104 539 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 104 463 Pd Documentation Chapter 3.6 - doc/1.manual/x3.htm
;
#N canvas 282 108 629 644 More_Info 0;
#X text 17 4 COMMON USES;
#X text 15 577 INNOVATIVE USES;
#X text 47 19 I believe that this object was developed first to allow
PD to generate sequential file names - perhaps to be used in conjunction
with [soundfiler] or [openpanel]. For example \, an audio loop recorder
might generate a continuous series of sound files to be saved on a
hard drive...like below:;
#X obj 53 125 f;
#X symbolatom 53 166 0 0 0 0 - - -;
#X obj 82 125 + 1;
#X obj 53 145 makefilename file-%d.aif;
#X text 20 430 LIMITATIONS;
#N canvas 175 22 595 611 spaces_and_multiple_variables 0;
#X text 25 19 Instead of using spaces \, an underscore will often produce
a tolerable compromise.;
#X obj 210 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 210 64 f;
#X symbolatom 210 119 0 0 0 0 - - -;
#X obj 243 64 + 1;
#X obj 210 91 makefilename I_am_%d_years_old.;
#X text 28 143 With careful planning \, multiple variables can be incorporated
using a stack of [makefilename]s. In the example below \, let's assume
that this tool is used to generate file names for an audio loop recorder
which operates 24 hours per day \, every day.;
#X obj 31 235 loadbang;
#X obj 31 280 metro 200;
#X obj 31 261 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X obj 64 305 + 1;
#X obj 209 349 route 0 1 2 3 4 5 6;
#X obj 31 354 mod 24;
#X floatatom 31 379 5 0 0 0 - - -;
#X floatatom 31 329 0 0 0 0 - - -;
#X obj 31 305 f;
#X obj 53 405 sel 0;
#X obj 218 269 f;
#X obj 250 269 + 1;
#X obj 218 294 mod 7;
#X obj 218 322 pack f f;
#X obj 230 498 makefilename Monday_%d.wav;
#X symbolatom 65 548 0 0 0 0 - - -;
#X obj 334 374 makefilename Saturday_%d.wav;
#X obj 314 399 makefilename Friday_%d.wav;
#X obj 290 326 t b f;
#X obj 293 424 makefilename Thursday_%d.wav;
#X obj 272 449 makefilename Wednesday_%d.wav;
#X obj 251 474 makefilename Tuesday_%d.wav;
#X obj 209 522 makefilename Sunday_%d.wav;
#X text 81 377 hour of day;
#X text 79 330 total hours;
#X text 199 549 Crude...but effective.;
#X obj 31 455 s dayHour;
#X obj 53 430 s weekDay;
#X obj 218 236 r weekDay;
#X obj 290 300 r dayHour;
#X text 284 271 loop through weekdays;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 2 0 5 0;
#X connect 4 0 2 1;
#X connect 5 0 3 0;
#X connect 7 0 9 0;
#X connect 8 0 15 0;
#X connect 9 0 8 0;
#X connect 10 0 15 1;
#X connect 11 0 29 0;
#X connect 11 1 21 0;
#X connect 11 2 28 0;
#X connect 11 3 27 0;
#X connect 11 4 26 0;
#X connect 11 5 24 0;
#X connect 11 6 23 0;
#X connect 12 0 13 0;
#X connect 13 0 16 0;
#X connect 13 0 33 0;
#X connect 14 0 12 0;
#X connect 15 0 10 0;
#X connect 15 0 14 0;
#X connect 16 0 34 0;
#X connect 17 0 18 0;
#X connect 17 0 19 0;
#X connect 18 0 17 1;
#X connect 19 0 20 0;
#X connect 20 0 11 0;
#X connect 21 0 22 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 20 0;
#X connect 25 1 20 1;
#X connect 26 0 22 0;
#X connect 27 0 22 0;
#X connect 28 0 22 0;
#X connect 29 0 22 0;
#X connect 35 0 17 0;
#X connect 36 0 25 0;
#X restore 47 605 pd spaces_and_multiple_variables;
#X obj 53 90 bng 30 250 50 0 empty empty start 1 15 1 12 -90049 -1
-1;
#N canvas 475 61 515 617 help_with_interfaces 0;
#X text 17 16 Building user interfaces in Pd is a difficult balance
between usability and performance. Pd is not winning any awards for
usability - let's face it: it's powerful \, it's cool \, and that's
the way we like it. You're not here because you want a colourful \,
bevelled interface...you want the raw power that object oriented languages
provide mixed with a few of the conveniences that a graphic environment
affords.;
#X obj 17 269 cnv 15 450 300 empty empty empty 20 12 0 14 -261681 -66577
0;
#X obj 45 379 tgl 15 0 s_dsp empty DSP 18 7 0 8 -262144 -1 -1 0 1;
#X obj 45 424 vsl 15 128 0 127 0 0 v_slider empty Volume 18 7 0 8 -262144
-1 -1 0 1;
#X obj 45 401 bng 15 250 50 0 b_panel empty Open_File 18 7 0 8 -262144
-1 -1;
#X obj 40 280 cnv 15 400 20 empty d_canvas DSP:OFF 20 12 0 8 -233017
-66577 0;
#X obj 40 302 cnv 15 400 20 empty f_canvas FILE_OPEN:/Users/hans/cvs/pure-data/doc/pddp/all_about_lists_vs_anythings.pd
20 12 0 8 -233017 -66577 0;
#X obj 40 324 cnv 15 400 20 empty v_canvas VOLUME:99/100 20 12 0 8
-233017 -66577 0;
#X text 187 361 The grey canvases above could;
#X text 189 383 be used like "status bars" to;
#X text 189 404 write relevant information to;
#X text 186 460 [makefilename] helps to format;
#X text 188 484 the information in a meaningful;
#X text 189 505 way.;
#X text 187 426 the screen.;
#N canvas 217 22 478 328 look_inside 0;
#X obj 199 14 r b_panel;
#X obj 235 166 r v_slider;
#X obj 36 236 s d_canvas;
#X obj 199 114 s f_canvas;
#X obj 235 263 s v_canvas;
#X obj 36 80 sel 0;
#X obj 71 152 symbol ON;
#X obj 36 128 symbol OFF;
#X obj 71 103 bang;
#X msg 36 210 label \$1;
#X obj 36 184 makefilename DSP:%s;
#X obj 36 13 r s_dsp;
#X msg 45 38 \; pd dsp \$1;
#X obj 199 40 openpanel;
#X obj 199 65 makefilename FILE_OPEN:%s;
#X msg 199 90 label \$1;
#X msg 235 240 label \$1;
#X obj 235 192 expr ($f1/128)*100;
#X obj 235 217 makefilename VOLUME:%d/100;
#X connect 0 0 13 0;
#X connect 1 0 17 0;
#X connect 5 0 7 0;
#X connect 5 1 8 0;
#X connect 6 0 10 0;
#X connect 7 0 10 0;
#X connect 8 0 6 0;
#X connect 9 0 2 0;
#X connect 10 0 9 0;
#X connect 11 0 5 0;
#X connect 11 0 12 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 3 0;
#X connect 16 0 4 0;
#X connect 17 0 18 0;
#X connect 18 0 16 0;
#X restore 40 350 pd look_inside;
#X text 18 156 However \, there are times when sacrifices must be made
in the area of performance to provide users with on-screen reporting
\, record keeping \, and sometimes even a few 'pleasantries'. Consider
the following examples - but always weight the pros and cons when incorporating
these types of interfaces. Performance vs. Usability.;
#X restore 298 605 pd help_with_interfaces;
#X symbolatom 126 355 0 0 0 0 - - -;
#X obj 53 273 hsl 150 18 0 127 0 1 empty empty ASCII_range 2 9 1 12
-262131 -1 -1 12700 0;
#X floatatom 95 357 3 0 0 0 - - -;
#X obj 120 316 int;
#X text 45 488 - only one printf pattern can be used at once;
#X text 45 445 - This object does not provide advanced formatting and
parsing abilities. For example \, you cannot use spaces or odd characters
in the argument.;
#X text 45 550 - non-printable ASCII characters show up as a little
box.;
#X text 22 209 CONVERSIONS;
#X text 40 225 The %c pattern allows you to convert ASCII numbers to
the respective character. The %X converts the decimal number to hexadecimal.
;
#X symbolatom 329 352 10 0 0 0 - - -;
#X obj 332 270 hsl 150 18 0 255 0 1 empty empty 0_to_FF 2 9 1 12 -262131
-1 -1 11700 0;
#X obj 329 330 makefilename hex=%X;
#X floatatom 294 352 3 0 0 0 - - -;
#X obj 328 302 int;
#X obj 126 335 makefilename ASCII=%c;
#X obj 50 295 sel 123 125;
#X text 44 378 Watch out! ASCII characters 123 and 125 (curly braces)
lock up Pd. Also \, reserved characters that Pd uses show up with a
backslash in front of them ( \, \; and backslash).;
#X text 45 507 - currently \, floats are not supported via the printf
%f pattern. You can only display the integer part of the float using
%d or %X.;
#X text 47 187 This file name could be used when saving the audio to
disk.;
#X connect 3 0 5 0;
#X connect 3 0 6 0;
#X connect 5 0 3 1;
#X connect 6 0 4 0;
#X connect 9 0 3 0;
#X connect 12 0 26 0;
#X connect 14 0 13 0;
#X connect 14 0 25 0;
#X connect 21 0 24 0;
#X connect 22 0 20 0;
#X connect 24 0 22 0;
#X connect 24 0 23 0;
#X connect 25 0 11 0;
#X connect 26 2 14 0;
#X restore 104 513 pd More_Info;
#N canvas 85 22 397 246 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X obj 42 46 symbol;
#X obj 112 46 int;
#X obj 156 46 openpanel;
#X obj 31 126 strcat;
#X obj 32 155 makesymbol;
#X restore 104 487 pd Related_Objects;
#X text 38 53 INLETS:;
#X text 15 197 ARGUMENTS:;
#X text 29 316 OUTLETS:;
#X text 22 342 EXAMPLES:;
#X text 21 462 SEE ALSO:;
#X obj 10 18 makefilename;
#X text 115 18 - FORMAT A STRING WITH A VARIABLE FIELD.;
#X text 104 316 Symbol - The output is formatted like "symbol YOURSTRING".
;
#X floatatom 114 346 0 0 0 0 - - -;
#X text 146 425 numbered filenames;
#X obj 353 380 symbol;
#X msg 353 343 dave;
#X msg 412 341 drums;
#X msg 479 344 Pd;
#X msg 526 355 cool;
#X obj 353 404 makefilename %s_PD.aif;
#X text 109 115 Symbol - If a symbol is sent to the inlet \, the argument
should be written with a "%s" which represent the location of the incoming
variable symbol in the outgoing symbol. Lists will be truncated.;
#X symbolatom 353 428 0 0 0 0 - - -;
#X symbolatom 114 404 0 0 0 0 - - -;
#X obj 115 373 makefilename soundfile%d.aif;
#X text 392 551 updated for Pd 0.38-4;
#X text 140 538 - Dave Sabine \, Hans-Christoph Steiner;
#X text 107 198 This object generates symbols according to a format
string (the argument) \, for use as a series of filenames \, table
names \, or whatnot. You can plug in a variable number or symbol by
putting "%s" \, "%c" \, "%d" \, or "%X" in the string. If you use"%s"
\, be sure to send it a symbol \, the rest take numbers. there' no
checking. Each [makefilename] object can have only one variable.;
#X text 108 53 Integer - If a number is sent to the inlet \, the argument
should be written with a "%c" \, "%d" \, or "%X" which represents the
location of the incoming variable number in the outgoing symbol. Floats
will be converted to integers.;
#X connect 13 0 24 0;
#X connect 15 0 20 0;
#X connect 16 0 15 0;
#X connect 17 0 15 0;
#X connect 18 0 15 0;
#X connect 19 0 15 0;
#X connect 20 0 22 0;
#X connect 24 0 23 0;
|