Class: Deftones::Event::Part
- Inherits:
-
Object
- Object
- Deftones::Event::Part
show all
- Includes:
- CallbackBehavior
- Defined in:
- lib/deftones/event/part.rb
Instance Attribute Summary
#humanize, #mute, #playback_rate, #probability, #state
Instance Method Summary
collapse
#callback_interval, #callback_permitted?, #callback_time, #humanized_time, #initialize_callback_behavior, #mark_started, #mark_stopped, #mute?, #playbackRate=
Constructor Details
#initialize(events:, transport: Deftones.transport, probability: 1.0, humanize: false, mute: false, playback_rate: 1.0, seed: nil, rng: nil, &callback) ⇒ Part
Returns a new instance of Part.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/deftones/event/part.rb', line 8
def initialize(events:, transport: Deftones.transport,
probability: 1.0, humanize: false, mute: false, playback_rate: 1.0,
seed: nil, rng: nil, &callback)
raise ArgumentError, "callback is required" unless callback
@events = normalize_events(events)
@transport = transport
@callback = callback
@event_ids = []
initialize_callback_behavior(
probability: probability,
humanize: humanize,
mute: mute,
playback_rate: playback_rate,
seed: seed,
rng: rng
)
end
|
Instance Method Details
#cancel ⇒ Object
43
44
45
46
47
48
|
# File 'lib/deftones/event/part.rb', line 43
def cancel
@event_ids.each { |event_id| @transport.cancel(event_id: event_id) }
@event_ids.clear
mark_stopped
self
end
|
#dispose ⇒ Object
50
51
52
53
|
# File 'lib/deftones/event/part.rb', line 50
def dispose
cancel
self
end
|
#normalize_events(events) ⇒ Object
57
58
59
60
61
62
63
|
# File 'lib/deftones/event/part.rb', line 57
def normalize_events(events)
Array(events).map do |event|
next { time: event[0], value: event[1] } if event.is_a?(Array)
event
end
end
|
#start(time = 0) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/deftones/event/part.rb', line 27
def start(time = 0)
offset = callback_time(time)
@event_ids = @events.map do |event|
event_time = offset + callback_interval(event.fetch(:time, 0))
@transport.schedule(event_time) do |scheduled_time|
@callback.call(humanized_time(scheduled_time), event) if callback_permitted?
end
end
mark_started
self
end
|
#stop(_time = nil) ⇒ Object
39
40
41
|
# File 'lib/deftones/event/part.rb', line 39
def stop(_time = nil)
cancel
end
|