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: Prints instructions for mapping control changes.
docstr_tok: ["Prints","instructions","for","mapping","control","changes","."]
code: def _print_instructions(self):
      """Prints instructions for mapping control changes."""
      print(
          "Enter the index of a signal to set the control change for, or `q` "
          "when done."
      )
      fmt = "{:>6}\t{:<20}\t{:>6}"
      print(fmt.format("Index", "Control", "Current"))
      for i, signal in enumerate(self._signals):
          print(fmt.format(i + 1, signal, self._cc_map.get(signal)))
      print("")
  
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 2 for calling the CCMapper obj's underlying member method code with example usage: obj._print_instructions() without return types