code: def testStartCapture_Multiple(self):
      captor_1 = self.midi_hub.start_capture(
          120, 0.0, stop_signal=midi_hub.MidiSignal(note=3)
      )
      captor_2 = self.midi_hub.start_capture(
          120,
          1.0,
          stop_signal=midi_hub.MidiSignal(
              type="control_change", control=1
          ),
      )
  
      self.send_capture_messages()
  
      captor_1.join()
      captor_2.join()
  
      captured_seq_1 = captor_1.captured_sequence()
      expected_seq = music_pb2.NoteSequence()
      expected_seq.tempos.add(qpm=120)
      expected_seq.total_time = 4.0
      testing_lib.add_track_to_sequence(
          expected_seq,
          0,
          [Note(0, 64, 0.01, 3), Note(1, 64, 2, 4), Note(2, 64, 3, 4)],
      )
      self.assertProtoEquals(captured_seq_1, expected_seq)
  
      captured_seq_2 = captor_2.captured_sequence()
      expected_seq = music_pb2.NoteSequence()
      expected_seq.tempos.add(qpm=120)
      expected_seq.total_time = 6.0
      testing_lib.add_track_to_sequence(
          expected_seq,
          0,
          [Note(1, 64, 2, 5), Note(2, 64, 3, 4), Note(3, 64, 4, 6)],
      )
      self.assertProtoEquals(captured_seq_2, expected_seq)
  
imports: import collections
  import queue
  import threading
  import time
  from magenta.common import concurrency
  from magenta.interfaces.midi import midi_hub
  import mido
  from note_seq import testing_lib
  from note_seq.protobuf import music_pb2
  import tensorflow.compat.v1
label_desc: Use image node_id 16 for calling the MidiHubTest obj's underlying member method code with example usage: obj.testStartCapture_Multiple() without return types