class_docstr: A class for mapping control change numbers to specific controls.
  
  Args:
    cc_map: A dictionary containing mappings from signal names to control
        change numbers (or None). This dictionary will be updated by the class.
    midi_hub_: An initialized MidiHub to receive inputs from.
code: def __init__(self, cc_map, midi_hub_):
      self._cc_map = cc_map
      self._signals = list(cc_map.keys())
      self._midi_hub = midi_hub_
      self._update_event = threading.Event()
  
imports: import functools
  import re
  import threading
  import time
  from magenta.interfaces.midi import midi_hub
  from magenta.interfaces.midi import midi_interaction
  from magenta.models.drums_rnn import drums_rnn_sequence_generator
  from magenta.models.melody_rnn import melody_rnn_sequence_generator
  from magenta.models.performance_rnn import performance_sequence_generator
  from magenta.models.pianoroll_rnn_nade import pianoroll_rnn_nade_sequence_generator
  from magenta.models.polyphony_rnn import polyphony_sequence_generator
  from magenta.models.shared import sequence_generator_bundle
  import six
  import tensorflow.compat.v1
label_desc: Use image node_id 1 to create a new CCMapper object from inherited base classes: object with example: obj = CCMapper(cc_map, midi_hub_)