Class: Vizcore::DSL::MidiMapExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/vizcore/dsl/midi_map_executor.rb

Overview

Executes ‘midi_map` action blocks against incoming MIDI events.

Defined Under Namespace

Classes: ActionContext

Instance Method Summary collapse

Constructor Details

#initialize(midi_maps:, scenes:, globals: {}) ⇒ MidiMapExecutor

Returns a new instance of MidiMapExecutor.

Parameters:

  • midi_maps (Array<Hash>)
  • scenes (Array<Hash>)
  • globals (Hash) (defaults to: {})


10
11
12
# File 'lib/vizcore/dsl/midi_map_executor.rb', line 10

def initialize(midi_maps:, scenes:, globals: {})
  update(midi_maps: midi_maps, scenes: scenes, globals: globals)
end

Instance Method Details

#globalsHash

Returns mutable global parameter snapshot.

Returns:

  • (Hash)

    mutable global parameter snapshot



25
26
27
# File 'lib/vizcore/dsl/midi_map_executor.rb', line 25

def globals
  @globals.dup
end

#handle_event(event) ⇒ Array<Hash>

Returns runtime actions (‘:switch_scene`, `:set_global`).

Parameters:

Returns:

  • (Array<Hash>)

    runtime actions (‘:switch_scene`, `:set_global`)



31
32
33
34
35
36
37
38
39
# File 'lib/vizcore/dsl/midi_map_executor.rb', line 31

def handle_event(event)
  @midi_maps.each_with_object([]) do |mapping, actions|
    next unless mapping_match?(mapping[:trigger], event)

    context = ActionContext.new(scenes: @scenes, globals: @globals)
    invoke_action_block(context, mapping[:action], event, mapping[:trigger])
    actions.concat(context.actions)
  end
end

#update(midi_maps:, scenes:, globals: nil) ⇒ void

This method returns an undefined value.

Parameters:

  • midi_maps (Array<Hash>)
  • scenes (Array<Hash>)
  • globals (Hash, nil) (defaults to: nil)


18
19
20
21
22
# File 'lib/vizcore/dsl/midi_map_executor.rb', line 18

def update(midi_maps:, scenes:, globals: nil)
  @midi_maps = normalize_midi_maps(midi_maps)
  @scenes = normalize_scenes(scenes)
  @globals = normalize_globals(globals) unless globals.nil?
end