Class: Live::Tracks
Instance Method Summary collapse
- #[](id) ⇒ Object
- #each(&block) ⇒ Object
-
#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).
- #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
- #grant_registry_collection(tracks_data) ⇒ Object
-
#initialize(midi_devices, logger:) ⇒ Tracks
constructor
A new instance of Tracks.
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 |