/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 2 0 ĠV asy l ĠR ud as Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġio . lp 4 k . launch pad . midi Ċ Ċ import Ġio . lp 4 k . launch pad . api . Launch pad Ċ import Ġjavax . sound . midi . Midi Unavailable Exception Ċ import Ġjavax . sound . midi . Receiver Ċ import Ġjavax . sound . midi . Transmit ter Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġphysical ĠMIDI ĠLaunch pad Ġdevice . Ċ Ġ* Ċ Ġ* Ġ@ param Ġconfiguration ĠThe ĠMIDI Ġconfiguration Ġto Ġuse . ĠMust Ġnot Ġbe Ġnull . Ċ Ġ* Ġ@ author ĠO liv ier ĠC ro is ier Ġ( ol iv ier . cro is ier @ gmail . com ) Ċ Ġ*/ Ċ abstract Ġclass ĠM idi Launch pad ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠMIDI Ġconfiguration Ġholder . ĊĠĠĠĠ Ġ* Ġ@ throws ĠM idi Unavailable Exception ĠIf Ġthe Ġinput Ġor Ġoutput Ġchannels Ġcannot Ġbe Ġopened . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġconfiguration : ĠM idi Device Configuration Ċ ) Ġ: ĠLaunch pad Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠLaunch pad 's Ġinput Ġchannel Ġ( Device Ġ-> ĠLP 4 J ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġreceiver : ĠReceiver ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠLaunch pad 's Ġoutput Ġchannel Ġ( LP 4 J Ġ-> ĠDevice ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġtransmit ter : ĠTrans mit ter ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġthat Ġthe Ġoutput Ġchannel Ġhas Ġbeen Ġsuccessfully Ġopened . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġopened Output Device Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġthat Ġthe Ġinput Ġchannel Ġhas Ġbeen Ġsuccessfully Ġopened . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġopened Input Device Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . receiver Ġ= Ġopen Receiver () ĊĠĠĠĠĠĠĠ Ġthis . transmit ter Ġ= Ġopen Transmit ter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Receiver (): ĠReceiver Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Device Ġ= Ġconfiguration . output Device ĊĠĠĠĠĠĠĠ Ġif Ġ(! output Device . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Device . open () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopened Output Device Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoutput Device . receiver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Transmit ter (): ĠTrans mit ter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Device Ġ= Ġconfiguration . input Device ĊĠĠĠĠĠĠĠ Ġif Ġ(! input Device . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Device . open () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopened Input Device Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput Device . transmit ter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( opened Output Device ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Device Ġ= Ġconfiguration . output Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( output Device . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Device . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( opened Input Device ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Device Ġ= Ġconfiguration . input Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Device . isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Device . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ