rename Op:update_out → setup_out
s-ol
1 year, 7 months ago
168 | 168 | -- @tparam string metatype (one of `!` or `~`) |
169 | 169 | -- @tparam Type type |
170 | 170 | -- @tparam[opt] any val initial value |
171 | update_out: (metatype, type, val) => | |
171 | setup_out: (metatype, type, val) => | |
172 | 172 | if @out and @out.type == type and @out.metatype == metatype |
173 | 173 | -- we can just keep it. do nothing. |
174 | 174 | return false |
56 | 56 | if typ |
57 | 57 | assert (ancestor typ.__class) == Type, "not a type: #{typ}" |
58 | 58 | metatype = if trigger then '!' else '~' |
59 | @update_out metatype, typ | |
59 | @setup_out metatype, typ | |
60 | 60 | |
61 | 61 | map_fn = if trigger then hot_if_trigger trigger else Input.hot |
62 | 62 | inputs = deep_map args, map_fn |
338 | 338 | { i, values } = pattern\match inputs |
339 | 339 | |
340 | 340 | val1 = values[1] |
341 | @update_out val1.result.metatype, val1.result.type | |
341 | @setup_out val1.result.metatype, val1.result.type | |
342 | 342 | |
343 | 343 | if i\type! == T.bang |
344 | 344 | @state or= 1 |
461 | 461 | |
462 | 462 | super event: Input.hot event |
463 | 463 | |
464 | @update_out '~', event\type!, initial.result! | |
464 | @setup_out '~', event\type!, initial.result! | |
465 | 465 | |
466 | 466 | tick: => @out\set @inputs.event! |
467 | 467 | |
491 | 491 | else |
492 | 492 | super sig: Input.hot sig_ |
493 | 493 | |
494 | @update_out '!', @inputs.sig\type! | |
494 | @setup_out '!', @inputs.sig\type! | |
495 | 495 | |
496 | 496 | tick: (setup) => |
497 | 497 | return if setup |
513 | 513 | setup: (inputs) => |
514 | 514 | values = pattern\match inputs |
515 | 515 | super [Input.hot v for v in *values] |
516 | @update_out '!', @inputs[1]\type! | |
516 | @setup_out '!', @inputs[1]\type! | |
517 | 517 | |
518 | 518 | tick: => |
519 | 519 | for input in *@inputs |
81 | 81 | error "no port opened" |
82 | 82 | |
83 | 83 | @state or= {} |
84 | @update_out '~', type | |
84 | @setup_out '~', type | |
85 | 85 | |
86 | 86 | tick: => |
87 | 87 | if @inputs.inp and @inputs.inp\dirty! |
357 | 357 | press: Input.hot COPILOT.mouse_presses |
358 | 358 | release: Input.hot COPILOT.mouse_releases |
359 | 359 | |
360 | @update_out '~', T.bool, false | |
360 | @setup_out '~', T.bool, false | |
361 | 361 | |
362 | 362 | poll: => |
363 | 363 | |
465 | 465 | press: Input.hot COPILOT.key_presses |
466 | 466 | release: Input.hot COPILOT.key_releases |
467 | 467 | |
468 | @update_out '~', T.bool, false | |
468 | @setup_out '~', T.bool, false | |
469 | 469 | |
470 | 470 | poll: => |
471 | 471 |
18 | 18 | |
19 | 19 | internal: Input.hot T.bool\mk_sig! |
20 | 20 | |
21 | @update_out '~', T.bool | |
21 | @setup_out '~', T.bool | |
22 | 22 | |
23 | 23 | poll: => |
24 | 24 | { :port, :note, :chan, :internal } = @inputs |
106 | 106 | internal: Input.hot T.bang\mk_evt! |
107 | 107 | |
108 | 108 | @state or= 0 |
109 | @update_out '~', T.num, apply_range @inputs.range, @state | |
109 | @setup_out '~', T.num, apply_range @inputs.range, @state | |
110 | 110 | |
111 | 111 | poll: => |
112 | 112 | { :port, :cc, :chan, :internal } = @inputs |
17 | 17 | host: Input.hot host |
18 | 18 | port: Input.hot port |
19 | 19 | |
20 | @update_out '~', T['udp/socket'] | |
20 | @setup_out '~', T['udp/socket'] | |
21 | 21 | |
22 | 22 | tick: => |
23 | 23 | { :host, :port } = @unwrap_all! |
35 | 35 | value: class extends Op |
36 | 36 | new: (...) => |
37 | 37 | super ... |
38 | @update_out '~', T.num | |
38 | @setup_out '~', T.num | |
39 | 39 | @state or @gen! |
40 | 40 | |
41 | 41 | gen: => @state = math.random! |
63 | 63 | value: class extends Op |
64 | 64 | new: (...) => |
65 | 65 | super ... |
66 | @update_out '~', typ | |
66 | @setup_out '~', typ | |
67 | 67 | @state or @gen! |
68 | 68 | |
69 | 69 | gen: => @state = for i=1,n do math.random! |
19 | 19 | fps: Input.cold fps or Constant.num 60 |
20 | 20 | io: Input.hot T.bang\mk_evt! |
21 | 21 | |
22 | @update_out '!', T.clock | |
22 | @setup_out '!', T.clock | |
23 | 23 | |
24 | 24 | poll: => |
25 | 25 | time = monotime! |
64 | 64 | clock: Input.hot clock or scope\get '*clock*' |
65 | 65 | scale: Input.cold scale |
66 | 66 | |
67 | @update_out '!', T.clock | |
67 | @setup_out '!', T.clock | |
68 | 68 | |
69 | 69 | tick: => |
70 | 70 | { :clock, :scale } = @unwrap_all! |
95 | 95 | wave: Input.hot wave or default_wave |
96 | 96 | |
97 | 97 | @state or= 0 |
98 | @update_out '~', T.num | |
98 | @setup_out '~', T.num | |
99 | 99 | |
100 | 100 | tau = math.pi * 2 |
101 | 101 | tick: => |
135 | 135 | max: max and Input.cold max |
136 | 136 | |
137 | 137 | @state or= 0 |
138 | @update_out '~', T.num, 0 | |
138 | @setup_out '~', T.num, 0 | |
139 | 139 | |
140 | 140 | tick: => |
141 | 141 | { :clock, :period, :max } = @unwrap_all! |
174 | 174 | period: Input.cold period |
175 | 175 | |
176 | 176 | @state or= { phase: 0, count: 0 } |
177 | @update_out '~', T.num, @state.count | |
177 | @setup_out '~', T.num, @state.count | |
178 | 178 | |
179 | 179 | tick: => |
180 | 180 | { :clock, :period } = @unwrap_all! |
210 | 210 | evt: Input.cold evt or T.bang\mk_const true |
211 | 211 | |
212 | 212 | @state or= 0 |
213 | @update_out '!', @inputs.evt\type! | |
213 | @setup_out '!', @inputs.evt\type! | |
214 | 214 | |
215 | 215 | tick: => |
216 | 216 | { :clock, :period, :evt } = @unwrap_all! |
256 | 256 | clock: Input.hot clock or scope\get '*clock*' |
257 | 257 | steps: [inputify step for step in *steps] |
258 | 258 | |
259 | @update_out '!', steps[1].value\type! | |
259 | @setup_out '!', steps[1].value\type! | |
260 | 260 | |
261 | 261 | tick: => |
262 | 262 | if tick = @inputs.clock! |
342 | 342 | rate: Input.cold rate |
343 | 343 | value: Input.cold value |
344 | 344 | |
345 | @update_out '~', T.num, @inputs.value! | |
345 | @setup_out '~', T.num, @inputs.value! | |
346 | 346 | |
347 | 347 | tick: => |
348 | 348 | { :clock, :rate, :value } = @unwrap_all! |
376 | 376 | evt: Input.hot evt |
377 | 377 | |
378 | 378 | @state or= {} |
379 | if @update_out '!', @inputs.evt\type! | |
379 | if @setup_out '!', @inputs.evt\type! | |
380 | 380 | @state = {} |
381 | 381 | |
382 | 382 | tick: => |
21 | 21 | min: Input.cold min or Constant.num 0 |
22 | 22 | max: Input.cold max or Constant.num 1 |
23 | 23 | |
24 | @update_out val.result.metatype, val\type! | |
24 | @setup_out val.result.metatype, val\type! | |
25 | 25 | |
26 | 26 | tick: => |
27 | 27 | { :val, :min, :max } = @unwrap_all! |
57 | 57 | val: Input.hot val |
58 | 58 | max: Input.cold max or Constant.num 1 |
59 | 59 | |
60 | @update_out val.result.metatype, val\type! | |
60 | @setup_out val.result.metatype, val\type! | |
61 | 61 | |
62 | 62 | tick: => |
63 | 63 | { :val, :max } = @unwrap_all! |