Class: Live::Tracks

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/live/tracks.rb

Instance Method Summary collapse

Constructor Details

#initialize(midi_devices, logger:) ⇒ Tracks

Returns a new instance of Tracks.



73
74
75
76
77
# File 'lib/live/tracks.rb', line 73

def initialize(midi_devices, logger:)
  @midi_devices = midi_devices
  @logger = logger
  @tracks = {}
end

Instance Method Details

#[](id) ⇒ Object



125
126
127
# File 'lib/live/tracks.rb', line 125

def [](id)
  @tracks[id]
end

#each(&block) ⇒ Object



117
118
119
120
121
122
123
# File 'lib/live/tracks.rb', line 117

def each(&block)
  if block_given?
    @tracks.values.each(&block)
  else
    @tracks.values.each
  end
end

#find_by_name(name) ⇒ Object

TODO adaptar a contrato y semántica de Bitwig (en bitwig sólo hay un track con un nombre determinado, el id no existe)



131
132
133
# File 'lib/live/tracks.rb', line 131

def find_by_name(name)
  @tracks.values.select { |_| _.name == name }
end

#grant_registry(id, name = nil, has_midi_input = nil, has_midi_output = nil, has_audio_input = nil, has_audio_output = nil, current_input_routing = nil, current_input_sub_routing = nil, current_output_routing = nil, current_output_sub_routing = nil) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/live/tracks.rb', line 93

def grant_registry(id, name = nil,
                   has_midi_input = nil, has_midi_output = nil,
                   has_audio_input = nil, has_audio_output = nil,
                   current_input_routing = nil, current_input_sub_routing = nil,
                   current_output_routing = nil, current_output_sub_routing = nil)

  track = @tracks[id]

  unless track
    track = Track.new(id, @midi_devices, logger: @logger)
    @tracks[id] = track
  end

  track._update_name(name) if name
  track._update_has_midi_input(has_midi_input) if has_midi_input
  track._update_has_midi_output(has_midi_output) if has_midi_output
  track._update_has_audio_input(has_audio_input) if has_audio_input
  track._update_has_audio_output(has_audio_output) if has_audio_output
  track._update_current_input_routing(parse_device_name(current_input_routing)) if current_input_routing
  track._update_current_input_sub_routing(current_input_sub_routing) if current_input_sub_routing
  track._update_current_output_routing(parse_device_name(current_output_routing)) if current_output_routing
  track._update_current_output_sub_routing(current_output_sub_routing) if current_output_sub_routing
end

#grant_registry_collection(tracks_data) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/live/tracks.rb', line 79

def grant_registry_collection(tracks_data)
  tracks_to_delete = Set[*@tracks.keys]

  tracks_data.each do |track_data|
    grant_registry(*track_data)
    tracks_to_delete.delete track_data[0]
  end

  tracks_to_delete.each do |id|
    @tracks.delete(id)
    @logger.info "deleted track #{id}"
  end
end