package Ġorg . android aud iop l ugin . android aud iop l ugin . testing Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . media . midi . Midi DeviceInfo Ċ import Ġandroid . media . midi . Midi Manager Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ class ĠAudio Plugin Midi Device Service Testing ( private Ġval Ġapplication Context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġval Ġsimple Note On Ġ= ĠarrayOf ( 0 x 9 0 , Ġ 0 x 4 0 , Ġ 1 0 ). map Ġ{ Ġit . to Byte () Ġ}. toByteArray () ĊĠĠĠ Ġval Ġsimple Note Off Ġ= ĠarrayOf ( 0 x 8 0 , Ġ 0 x 4 0 , Ġ 0 ). map Ġ{ Ġit . to Byte () Ġ}. toByteArray () ĊĊĠĠĠ Ġfun Ġbasic Service Operations ( device Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmidi Manager Ġ= Ġapplication Context . getSystem Service ( Context . MIDI _ SERVICE ) Ġas ĠM idi Manager ĊĠĠĠĠĠĠĠ Ġval Ġdevice Info Ġ= Ġmidi Manager . devices . first Ġ{ Ġd Ġ-> Ġd . properties . getString ( Midi DeviceInfo . PROPERTY _ NAME ) Ġ== Ġdevice Name Ġ} ĊĊĠĠĠĠĠĠĠ Ġmidi Manager . open Device ( device Info , Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġdevice . open Input Port ( device Info . ports . first Ġ{ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . type Ġ== ĠM idi DeviceInfo . Port Info . TYPE _ INPUT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. port Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . send ( simple Note On , Ġ 0 , Ġsimple Note On . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . send ( simple Note Off , Ġ 0 , Ġsimple Note On . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ