aboutsummaryrefslogtreecommitdiff
path: root/gfsm/src/gfsm_markov.pd
blob: 4b895c64d2a79a91b83eecbbe3c83209cb1abf5d (plain)
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
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
#N canvas 0 31 450 300 10;
#X text 85 2 gfsm_markov : Markov chain using gfsm;
#X text 181 17 for details \, see:;
#N canvas 266 0 499 471 gfsm_markov_doc 0;
#X text 85 2 gfsm_markov : Markov chain using gfsm;
#X text 15 67 INLETS:;
#X text 28 84 1 - control messages;
#X text 203 64 OUTLETS:;
#X text 17 128 MESSAGES:;
#X text 81 219 set ATOM : set current state to ATOM;
#X text 116 231 set : reset to initial (root) state;
#X text 107 441 bang : synonym for "next";
#X text 16 24 SYNTAX: gfsm_markov OBJNAME;
#X text 15 44 REQUIRES:;
#X text 75 147 load BASE : load text files BASE.lab and BASE.tfst;
#X text 75 159 save BASE : save text files BASE.lab \, BASE.tfst;
#X text 47 182 load_bin BASE : load files BASE.lab \, BASE.gfst;
#X text 47 194 save_bin BASE : save files BASE.lab \, BASE.gfst;
#X text 156 294 from current state \, and move to;
#X text 23 281 add A1 A2 WEIGHT : add WEIGHT to arc on atom-pair A1:A2
;
#X text 73 411 next PROB : get next arc with PROB as nearest probability
;
#X text 107 427 next : get next arc with random probability;
#X text 216 106 3 - bang when stuck;
#X text 157 330 + WEIGHT defaults to 1;
#X text 157 318 + A2 defaults to 0 (epsilon);
#X text 157 378 + WEIGHT defaults to 1;
#X text 157 366 + A2 defaults to 0 (epsilon);
#X text 18 354 addi A1 A2 WEIGHT : add WEIGHT to initial arc on atoms
A1:A2;
#X text 156 305 (possibly new) state for atom A1;
#X text 217 92 2 - upper side atoms on "next";
#X text 217 78 1 - lower side atoms on "next";
#X text 102 250 clear : clear underlying objects;
#X text 82 44 [gfsm] \, [zexy];
#X restore 309 19 pd gfsm_markov_doc;
#X obj 20 60 inlet;
#X obj 22 261 outlet;
#X obj 103 260 outlet;
#N canvas 27 71 720 463 gfsm_markov_control_guts 0;
#X obj 22 8 inlet;
#X obj 450 32 print gfsm_markov_bad_message;
#X obj 183 230 s \$0-load;
#X obj 215 209 s \$0-save;
#X obj 247 187 s \$0-load_bin;
#X obj 280 164 s \$0-save_bin;
#X obj 86 373 s \$0-set;
#X obj 312 125 s \$0-clear;
#X obj 118 337 s \$0-add;
#X obj 22 409 s \$0-next;
#X obj 303 99 s \$0-fsm;
#X obj 335 78 s \$0-alph;
#X obj 151 295 s \$0-addi;
#X obj 415 79 s \$0-state-r;
#X obj 22 28 route next bang set add addi load save load_bin save_bin
clear fsm alph state add2;
#X obj 449 122 s \$0-add2;
#X connect 0 0 14 0;
#X connect 14 0 9 0;
#X connect 14 1 9 0;
#X connect 14 2 6 0;
#X connect 14 3 8 0;
#X connect 14 4 12 0;
#X connect 14 5 2 0;
#X connect 14 6 3 0;
#X connect 14 7 4 0;
#X connect 14 8 5 0;
#X connect 14 9 7 0;
#X connect 14 10 10 0;
#X connect 14 11 11 0;
#X connect 14 12 13 0;
#X connect 14 13 15 0;
#X connect 14 14 1 0;
#X restore 20 82 pd gfsm_markov_control_guts;
#N canvas 0 252 310 205 gfsm_markov_fsm_guts 0;
#X obj 40 121 gfsm_automaton \$1-fsm;
#X obj 40 53 gfsm_alphabet \$1-alph;
#X obj 40 100 r \$0-fsm;
#X obj 40 33 r \$0-alph;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X restore 21 113 pd gfsm_markov_fsm_guts;
#N canvas 114 67 710 486 gfsm_markov_io_guts 0;
#X obj 21 87 symbol;
#X msg 209 301 load \$1;
#X obj 178 86 symbol;
#X msg 556 308 save \$1;
#X msg 21 215 load \$1;
#X obj 367 85 symbol;
#X obj 526 79 symbol;
#X obj 21 20 r \$0-load;
#X obj 367 22 r \$0-save;
#X obj 526 26 r \$0-save_bin;
#X obj 178 19 r \$0-load_bin;
#X obj 21 110 t s s;
#X obj 178 106 t s s;
#X obj 367 107 t s s;
#X obj 526 100 t s s;
#X msg 179 215 load_bin \$1;
#X msg 526 216 save_bin \$1;
#X msg 367 215 save \$1;
#X obj 21 193 makefilename %s.tfst;
#X obj 178 192 makefilename %s.gfst;
#X obj 367 193 makefilename %s.tfst;
#X obj 526 193 makefilename %s.gfst;
#X obj 556 286 makefilename %s.lab;
#X obj 209 280 makefilename %s.lab;
#X obj 179 434 s \$0-fsm;
#X obj 367 429 s \$0-alph;
#X connect 0 0 11 0;
#X connect 1 0 25 0;
#X connect 2 0 12 0;
#X connect 3 0 25 0;
#X connect 4 0 24 0;
#X connect 5 0 13 0;
#X connect 6 0 14 0;
#X connect 7 0 0 0;
#X connect 8 0 5 0;
#X connect 9 0 6 0;
#X connect 10 0 2 0;
#X connect 11 0 18 0;
#X connect 11 1 23 0;
#X connect 12 0 19 0;
#X connect 12 1 23 0;
#X connect 13 0 20 0;
#X connect 13 1 22 0;
#X connect 14 0 21 0;
#X connect 14 1 22 0;
#X connect 15 0 24 0;
#X connect 16 0 24 0;
#X connect 17 0 24 0;
#X connect 18 0 4 0;
#X connect 19 0 15 0;
#X connect 20 0 17 0;
#X connect 21 0 16 0;
#X connect 22 0 3 0;
#X connect 23 0 1 0;
#X restore 21 138 pd gfsm_markov_io_guts;
#N canvas 150 351 551 242 gfsm_markov_set_guts 0;
#X obj 32 18 r \$0-set;
#X obj 32 40 route bang;
#X obj 97 133 gfsm_alphabet \$1-alph;
#X obj 97 61 route float list;
#X msg 97 110 atom2char! \$1;
#X obj 204 83 symbol;
#X msg 97 156 set \$1;
#X obj 97 178 s \$0-state;
#X msg 32 83 0;
#X obj 345 15 r \$0-clear;
#X obj 389 78 s \$0-alph;
#X obj 367 126 s \$0-fsm;
#X msg 367 105 clear \, root 0;
#X msg 389 57 clear \, atom2char! 0;
#X obj 345 35 t b b b;
#X msg 345 150 set 0;
#X obj 346 170 s \$0-state;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 1 1 3 0;
#X connect 2 0 6 0;
#X connect 3 0 4 0;
#X connect 3 1 4 0;
#X connect 3 2 5 0;
#X connect 4 0 2 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 8 0 4 0;
#X connect 9 0 14 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 15 0;
#X connect 14 1 12 0;
#X connect 14 2 13 0;
#X connect 15 0 16 0;
#X restore 21 162 pd gfsm_markov_set_guts;
#X obj 261 60 loadbang;
#N canvas 142 144 416 223 gfsm_markov_init_guts 0;
#X obj 15 9 inlet;
#X msg 15 97 char2atom! 0;
#X obj 15 118 s \$0-alph;
#X obj 15 66 t b b;
#X obj 74 10 r \$0-loadbang;
#X obj 179 124 gfsm_automaton \$1-fsm;
#X msg 206 97 root;
#X obj 179 145 route root;
#X obj 179 168 route bang;
#X msg 155 98 root 0;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 3 1 6 0;
#X connect 4 0 3 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 5 0;
#X restore 261 81 pd gfsm_markov_init_guts;
#N canvas 66 12 666 508 gfsm_markov_add_guts 0;
#X obj 28 231 gfsm_alphabet \$1-alph;
#X obj 28 167 route float list;
#X msg 28 211 atom2char! \$1;
#X obj 95 190 symbol;
#X obj 58 426 gfsm_state \$1-fsm;
#X obj 71 402 r \$0-state;
#X msg 508 322 set \$1;
#X obj 508 428 s \$0-state;
#X obj 28 12 r \$0-add1;
#X obj 121 12 r \$0-add;
#X obj 123 320 1;
#X obj 28 260 t f f;
#X obj 413 14 r \$0-addi1;
#X obj 492 14 r \$0-addi;
#X obj 443 89 gfsm_automaton \$1-fsm;
#X msg 443 67 root;
#X obj 413 39 t a b;
#X obj 443 110 route root;
#X obj 443 132 route bang;
#X msg 481 67 root 0;
#X msg 58 372 add_weight \$1 \$1 \$2 \$3;
#X obj 28 89 t a b b;
#X obj 58 347 pack 0 0 0;
#X obj 90 320 0;
#X text 139 347 <-- Q=LO HI WEIGHT;
#X obj 28 112 niagara 1;
#X obj 231 129 niagara 1;
#X obj 231 236 gfsm_alphabet \$1-alph;
#X obj 231 172 route float list;
#X msg 231 216 atom2char! \$1;
#X obj 298 195 symbol;
#X obj 204 12 r \$0-add2;
#X obj 28 42 t a b;
#X obj 205 35 t a b;
#X obj 446 297 spigot;
#X obj 454 273 0;
#X obj 479 273 1;
#X connect 0 0 11 0;
#X connect 1 0 2 0;
#X connect 1 1 2 0;
#X connect 1 2 3 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 8 0 32 0;
#X connect 9 0 32 0;
#X connect 10 0 22 2;
#X connect 11 0 34 0;
#X connect 11 1 22 0;
#X connect 12 0 16 0;
#X connect 13 0 16 0;
#X connect 14 0 17 0;
#X connect 15 0 14 0;
#X connect 16 0 21 0;
#X connect 16 1 15 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 6 0;
#X connect 19 0 14 0;
#X connect 20 0 4 0;
#X connect 21 0 25 0;
#X connect 21 1 23 0;
#X connect 21 2 10 0;
#X connect 22 0 20 0;
#X connect 23 0 22 1;
#X connect 25 0 1 0;
#X connect 25 1 26 0;
#X connect 26 0 28 0;
#X connect 26 1 22 2;
#X connect 27 0 22 1;
#X connect 28 0 29 0;
#X connect 28 1 29 0;
#X connect 28 2 30 0;
#X connect 29 0 27 0;
#X connect 30 0 29 0;
#X connect 31 0 33 0;
#X connect 32 0 21 0;
#X connect 32 1 36 0;
#X connect 33 0 21 0;
#X connect 33 1 35 0;
#X connect 34 0 6 0;
#X connect 35 0 34 1;
#X connect 36 0 34 1;
#X restore 21 186 pd gfsm_markov_add_guts;
#N canvas 48 114 662 532 gfsm_markov_next_guts 0;
#X obj 28 4 r \$0-next;
#X obj 243 464 outlet;
#X obj 28 26 route bang;
#X obj 217 168 * 1;
#X obj 405 461 outlet;
#X obj 101 429 gfsm_alphabet \$1-alph;
#X msg 101 407 char2atom! \$1;
#X obj 70 377 unpack 0 0 0 0;
#X msg 18 411 set \$1;
#X obj 18 432 s \$0-state;
#X obj 502 461 outlet;
#X obj 263 428 gfsm_alphabet \$1-alph;
#X msg 263 406 char2atom! \$1;
#X obj 414 234 gfsm_state \$1-fsm 0;
#X obj 414 20 r \$0-state;
#X obj 502 283 route bang;
#X obj 502 305 t b;
#X obj 414 257 route total_weight arc_gen;
#X obj 28 48 t b;
#X obj 203 124 t b f;
#X obj 217 145 f 0;
#X obj 246 144 t b f;
#X msg 217 190 arc_gen \$1;
#X msg 47 190 arc_reset \, total_weight;
#X obj 28 70 random 524287;
#X obj 28 91 / 524287;
#X connect 0 0 2 0;
#X connect 2 0 18 0;
#X connect 2 1 19 0;
#X connect 3 0 22 0;
#X connect 5 1 1 0;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 7 1 6 0;
#X connect 7 2 12 0;
#X connect 8 0 9 0;
#X connect 11 1 4 0;
#X connect 12 0 11 0;
#X connect 13 0 17 0;
#X connect 14 0 13 0;
#X connect 15 0 16 0;
#X connect 15 1 7 0;
#X connect 16 0 10 0;
#X connect 17 0 21 0;
#X connect 17 1 15 0;
#X connect 18 0 24 0;
#X connect 19 0 23 0;
#X connect 19 1 20 1;
#X connect 20 0 3 0;
#X connect 21 0 20 0;
#X connect 21 1 3 1;
#X connect 22 0 13 0;
#X connect 23 0 13 0;
#X connect 24 0 25 0;
#X connect 25 0 19 0;
#X restore 22 216 pd gfsm_markov_next_guts;
#X obj 185 260 outlet;
#X connect 3 0 6 0;
#X connect 10 0 11 0;
#X connect 13 0 4 0;
#X connect 13 1 5 0;
#X connect 13 2 14 0;