Class: Deftones::Source::Players

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/deftones/source/players.rb

Defined Under Namespace

Classes: VolumeProxy

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(buffers = {}, context: Deftones.context) ⇒ Players

Returns a new instance of Players.



49
50
51
52
53
54
55
56
57
# File 'lib/deftones/source/players.rb', line 49

def initialize(buffers = {}, context: Deftones.context)
  @context = context
  @players = {}
  @mute = false
  @volume = VolumeProxy.new(self)
  @disposed = false
  source_buffers = buffers.is_a?(IO::Buffers) ? buffers : IO::Buffers.new(buffers)
  source_buffers.each { |name, buffer| add(name, buffer) }
end

Instance Attribute Details

#volumeObject

Returns the value of attribute volume.



47
48
49
# File 'lib/deftones/source/players.rb', line 47

def volume
  @volume
end

Instance Method Details

#[](name) ⇒ Object



69
70
71
# File 'lib/deftones/source/players.rb', line 69

def [](name)
  get(name)
end

#add(name, buffer) ⇒ Object

Raises:



59
60
61
62
63
64
65
66
67
# File 'lib/deftones/source/players.rb', line 59

def add(name, buffer)
  raise Deftones::Error, "cannot add player to disposed Players" if @disposed

  player = Player.new(buffer: buffer, context: @context)
  player.volume.value = @volume.value
  player.mute = @mute
  @players[name.to_sym] = player
  player
end

#apply_controls!Object (private)



157
158
159
160
161
162
163
# File 'lib/deftones/source/players.rb', line 157

def apply_controls!
  @players.each_value do |player|
    player.volume.value = @volume.value
    player.mute = @mute
  end
  self
end

#disposeObject



139
140
141
142
143
144
# File 'lib/deftones/source/players.rb', line 139

def dispose
  @players.each_value(&:dispose)
  @players.clear
  @disposed = true
  self
end

#disposed?Boolean

Returns:

  • (Boolean)


129
130
131
# File 'lib/deftones/source/players.rb', line 129

def disposed?
  @disposed
end

#each(&block) ⇒ Object



146
147
148
149
150
# File 'lib/deftones/source/players.rb', line 146

def each(&block)
  return enum_for(:each) unless block

  @players.each_value(&block)
end

#get(name) ⇒ Object



73
74
75
# File 'lib/deftones/source/players.rb', line 73

def get(name)
  @players[name.to_sym]
end

#has?(name) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/deftones/source/players.rb', line 81

def has?(name)
  @players.key?(name.to_sym)
end

#loadedObject



93
94
95
# File 'lib/deftones/source/players.rb', line 93

def loaded
  loaded?
end

#loaded?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/deftones/source/players.rb', line 89

def loaded?
  !@disposed
end

#muteObject



97
98
99
# File 'lib/deftones/source/players.rb', line 97

def mute
  @mute
end

#mute=(value) ⇒ Object



101
102
103
104
# File 'lib/deftones/source/players.rb', line 101

def mute=(value)
  @mute = !!value
  apply_controls!
end

#mute?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/deftones/source/players.rb', line 106

def mute?
  @mute
end

#namesObject



85
86
87
# File 'lib/deftones/source/players.rb', line 85

def names
  @players.keys
end

#player(name) ⇒ Object



77
78
79
# File 'lib/deftones/source/players.rb', line 77

def player(name)
  get(name)
end

#state(name = nil, time: @context.current_time) ⇒ Object



133
134
135
136
137
# File 'lib/deftones/source/players.rb', line 133

def state(name = nil, time: @context.current_time)
  return get(name)&.state(time) if name

  @players.transform_values { |player| player.state(time) }
end

#stop_all(time = nil, dispose: false) ⇒ Object Also known as: stopAll



114
115
116
117
118
# File 'lib/deftones/source/players.rb', line 114

def stop_all(time = nil, dispose: false)
  @players.each_value { |player| player.stop(time) }
  self.dispose if dispose
  self
end

#stop_all_and_dispose(time = nil) ⇒ Object Also known as: stopAllAndDispose



120
121
122
123
# File 'lib/deftones/source/players.rb', line 120

def stop_all_and_dispose(time = nil)
  stop_all(time)
  dispose
end

#stopped?(time = @context.current_time) ⇒ Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/deftones/source/players.rb', line 125

def stopped?(time = @context.current_time)
  state(time: time).values.all? { |entry| entry == :stopped }
end