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.
docstr: Updates mapping for the signal to the message's control change.
  
  Args:
    signal: The name of the signal to update the control change for.
    msg: The mido.Message whose control change the signal should be set to.
docstr_tok: ["Updates","mapping","for","the","signal","to","the","message","'s","control","change",".","Args",":","signal",":","The","name","of","the","signal","to","update","the","control","change","for",".","msg",":","The","mido.Message","whose","control","change","the","signal","should","be","set","to","."]
code: def _update_signal(self, signal, msg):
      """Updates mapping for the signal to the message's control change.
  
      Args:
        signal: The name of the signal to update the control change for.
        msg: The mido.Message whose control change the signal should be set to.
      """
      if msg.control in list(self._cc_map.values()):
          print(
              "Control number %d is already assigned. Ignoring."
              % msg.control
          )
      else:
          self._cc_map[signal] = msg.control
          print(
              "Assigned control number %d to `%s`."
              % (msg.control, signal)
          )
      self._update_event.set()
  
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 3 for calling the CCMapper obj's underlying member method code with example usage: obj._update_signal(signal, msg) without return types