code: def testMidiSignal_Message(self):
      sig = midi_hub.MidiSignal(
          msg=mido.Message(type="note_on", note=1)
      )
      self.assertEqual(
          r"^note_on channel=0 note=1 velocity=64 time=\d+.\d+$",
          str(sig),
      )
  
      sig = midi_hub.MidiSignal(
          msg=mido.Message(type="note_off", velocity=127)
      )
      self.assertEqual(
          r"^note_off channel=0 note=0 velocity=127 time=\d+.\d+$",
          str(sig),
      )
  
      sig = midi_hub.MidiSignal(
          msg=mido.Message(type="control_change", control=1, value=2)
      )
      self.assertEqual(
          r"^control_change channel=0 control=1 value=2 time=\d+.\d+$",
          str(sig),
      )
  
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 5 for calling the MidiHubTest obj's underlying member method code with example usage: obj.testMidiSignal_Message() without return types