
[01;34mwith[m Gmface[31m.[mGm_Application[31m.[mPreferences[31m;[m [01;34muse[m Gmface[31m.[mGm_Application[31m.[mPreferences[31m;[m
[01;34mwith[m Gmface[31m.[mGm_MIDI[31m.[mDevices[31m;[m            [01;34muse[m Gmface[31m.[mGm_MIDI[31m.[mDevices[31m;[m
[01;34mwith[m Gmface[31m.[mGm_MIDI[31m.[mPortmidi[31m;[m           [01;34muse[m Gmface[31m.[mGm_MIDI[31m.[mPortmidi[31m;[m
[01;34mwith[m Ada[31m.[mContainers[31m.[mVectors[31m;[m            [01;34muse[m Ada[31m.[mContainers[31m;[m
[01;34mwith[m Interfaces[31m.[mC[31m;[m                      [01;34muse[m Interfaces[31m.[mC[31m;[m
[01;34muse[m Interfaces[31m;[m

[01;34mwith[m Text_Io[31m;[m                           [01;34muse[m Text_Io[31m;[m

[01;34mpackage[m [01;34mbody[m Gmface[31m.[mGm_MIDI[31m.[mInstruments [01;34mis[m
   
   Message_Max [31m:[m [01;34mconstant[m Positive [31m:=[m [35m1024[m[31m;[m
   
   [01;34msubtype[m Message_Index_Type [01;34mis[m Positive [01;34mrange[m [35m1[m[31m..[mMessage_Max[31m;[m
   
   [01;34mpackage[m Step_Vectors [01;34mis[m [01;34mnew[m Ada[31m.[mContainers[31m.[m[01;30mVectors[m[31m([mMessage_Index_Type[31m,[m C[31m.[mLong[31m,[m C[31m.[m[31m"="[m[31m);[m
   
   [01;34msubtype[m Step_Vector_Type [01;34mis[m Step_Vectors[31m.[mVector[31m;[m 
   
   [01;34muse[m Step_Vectors[31m;[m
   
   
   [01;34mtask[m [01;34mbody[m Mod_Sequencer_Type [01;34mis[m
      
      
      
      [01;34mtype[m Sequence_Type [01;34mis[m [01;34marray[m [31m([mPositive  [01;34mrange[m [31m<>)[m [01;34mof[m Step_Vector_Type[31m;[m
      
      [01;34msubtype[m Input_Sequence_Type [01;34mis[m [01;30mSequence_Type[m[31m([m[35m1[m[31m..[m[35m1024[m[31m);[m
      
      [01;34mtype[m Sheduler_Type [01;34mis[m [01;34marray[m [31m([m[32mBoolean[m[31m)[m [01;34mof[m Input_Sequence_Type[31m;[m
                  
      
      
      Message [31m:[m Long [31m:=[m [35m0[m[31m;[m
      Verax [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Sheduled_Sequence [31m:[m Sheduler_Type[31m;[m
      Step_index     [31m:[m Positive [31m:=[m [35m1[m[31m;[m
      Rec_Mod_Status  [31m:[m [32mBoolean[m [31m:=[m False[31m;[m      
      The_Control   [31m:[m Control_Type [31m:=[m Null_Item[31m;[m
      
      [01;34mtask[m Synth_Input_Deamon [01;34mis[m     	    
	 [01;34mentry[m Start[31m;[m
	 [01;34mentry[m Stop[31m;[m
	 [01;34mentry[m Halt[31m;[m
      [01;34mend[m Synth_Input_Deamon[31m;[m
      
      [01;34mtask[m [01;34mbody[m Synth_Input_Deamon [01;34mis[m
	 Message [31m:[m Interfaces[31m.[mC[31m.[mLong[31m;[m
	 End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
	 Suspended   [31m:[m [32mBoolean[m [31m:=[m True[31m;[m
      [01;34mbegin[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    [01;34mloop[m
	       
	       [01;34mselect[m
		  [01;34maccept[m Stop[31m;[m
	       [01;34mor[m
		  [01;34maccept[m Halt [01;34mdo[m
		     End_Of_Task [31m:=[m True[31m;[m
		     Suspended [31m:=[m True[31m;[m						
		  [01;34mend[m Halt[31m;[m		  
		  [01;34mexit[m[31m;[m
	       [01;34mor[m
		  [01;34maccept[m Start [01;34mdo[m
		     Suspended [31m:=[m False[31m;[m		  			
		  [01;34mend[m Start[31m;[m
		  [01;34mexit[m[31m;[m
	       [01;34mend[m [01;34mselect[m[31m;[m
	    [01;34mend[m [01;34mloop[m[31m;[m	    	 	 
	    Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Deamon input starting..."[m[31m);[m	    
	    
	    [01;34mwhile[m [01;34mnot[m Suspended [01;34mloop[m
	       
	       [01;34mselect[m
		  [01;34maccept[m Start[31m;[m
		  
	       [01;34mor[m
		  [01;34maccept[m Stop [01;34mdo[m			
		     Suspended [31m:=[m True[31m;[m		  
		  [01;34mend[m Stop[31m;[m
	       [01;34mor[m
		  
		  [01;34maccept[m Halt [01;34mdo[m
		     End_Of_Task [31m:=[m True[31m;[m
		     Suspended [31m:=[m True[31m;[m			
		  [01;34mend[m Halt[31m;[m
		  
		  [01;34mexit[m[31m;[m
	       [01;34mor[m 
		  [01;34mdelay[m [35m0.001[m[31m;[m 
		  [01;34mif[m instrument[31m.[mInput_Device_Driver [31m/=[m [01;34mnull[m [01;34mthen[m
		     [01;34mif[m Rec_Mod_Status [01;34mthen[m
			[01;34mselect[m
		     
			   Instrument[31m.[mInput_Device_Driver[31m.[mInput_Driver[31m.[m[01;30mSend[m[31m([mMessage[31m);[m
			   
			   
			   [31m--			select[m
			   [31m--Synth_Input_Deamon.Send(Message);[m
			   [31m--Text_Io.Put_Line("Receive message from channel :" & Channel_Type'Image(Channel_Of(Message)));		     [m
			   
			   [31m--The_Control := Control_of(Message);[m
			   
			   [31m--Text_Io.Put_Line(Control_Type'Image(The_Control));		     [m
			   
			   [01;30mSheduled_Sequence[m[31m([m[01;34mnot[m Verax[31m)([mStep_Index[31m)[m [31m:=[m Step_Vectors[31m.[m[31m"&"[m[31m([m[01;30mSheduled_Sequence[m[31m([m[01;34mnot[m Verax[31m)([mStep_Index[31m),[m Message[31m);[m
			   
			   [31m--			or[m
			   [31m--			   delay 0.05;[m
			   [31m--			end select;[m
			[01;34mor[m [01;34mdelay[m [35m0.001[m[31m;[m
			[31m--Put("No input message");[m
			[01;34mend[m [01;34mselect[m[31m;[m
		     [01;34mend[m [01;34mif[m[31m;[m	       
		     
		     
		     
		[31m--  	--	select[m
		[31m--  	   accept Send(Message : out Long) do[m
		[31m--  	      Message := Synth_Input_Deamon.Message;			      [m
		[31m--  	   end Send;[m
		[31m--  --	or[m
		[31m--  --	   delay 0.01;[m
		[31m--  --	end select;[m
		[31m--    --   or[m
		[31m--  --	delay 0.05;[m
		[31m--    --   end select;[m
		  [01;34melse[m
		     [01;34mdelay[m [35m0.05[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m [01;34mselect[m[31m;[m
	    [01;34mend[m [01;34mloop[m[31m;[m
	    [01;30mPut_Line[m[31m([m[31m"Deamon input stopped..."[m[31m);[m	    
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;30mPut_Line[m[31m([m[31m"Deamon input halted..."[m[31m);[m	    
      [01;34mend[m Synth_Input_Deamon[31m;[m
      

      
      
      Quantum [31m:[m [32mDuration[m [31m:=[m [35m0.0[m[31m;[m
      
      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Suspended   [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Play_Mod_Status [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      
      
      
      
      
      
      
      
      Tempo [31m:[m Tempo_Type [31m:=[m [35m120.0[m[31m;[m
      Date      [31m:[m Time [31m:=[m Clock[31m;[m
   [01;34mbegin[m
      
      [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	 [01;34mloop[m	    
	    
	    
	    [01;34mselect[m
	       [01;34maccept[m Stop[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Reset [01;34mdo[m		  
		  [01;34mfor[m I [01;34min[m [01;30mSheduled_Sequence[m[31m([mTrue[31m)[m'[01;34mRange[m [01;34mloop[m
		     Step_Vectors[31m.[m[01;30mClear[m [31m([m[01;30mSheduled_Sequence[m[31m([mTrue[31m)([mI[31m));[m
		     Step_Vectors[31m.[m[01;30mClear[m [31m([m[01;30mSheduled_Sequence[m[31m([mFalse[31m)([mI[31m));[m
		  [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mend[m Reset[31m;[m
	    [01;34mor[m	       
	       [01;34maccept[m [01;30mRec[m[31m([mIn_Rec [31m:[m [01;34min[m [32mBoolean[m[31m)[m [01;34mdo[m
		  Rec_Mod_Status [31m:=[m In_Rec[31m;[m
		  [01;30mPut_Line[m[31m([m[31m"Rec mod "[m [31m&[m [32mBoolean[m'[01;30mImage[m[31m([mRec_Mod_Status[31m));[m
	       [01;34mend[m Rec[31m;[m		     	       
	    [01;34mor[m
	       [01;34maccept[m [01;30mPlay[m[31m([mIn_Play [31m:[m [01;34min[m [32mBoolean[m[31m)[m [01;34mdo[m
		  Play_Mod_Status [31m:=[m In_Play[31m;[m
		  [01;30mPut_Line[m[31m([m[31m"Play mod "[m [31m&[m [32mBoolean[m'[01;30mImage[m[31m([mPlay_Mod_Status[31m));[m
	       [01;34mend[m Play[31m;[m
	       
	    [01;34mor[m
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
		  Suspended [31m:=[m True[31m;[m
		  Synth_Input_Deamon[31m.[mHalt[31m;[m
	       [01;34mend[m Halt[31m;[m		  
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m [01;30mStart[m[31m([mTempo [31m:[m [01;34min[m Tempo_Type[31m;[m Signature [31m:[m [01;34min[m Time_Signature_type[31m)[m [01;34mdo[m
		  Quantum [31m:=[m  [32mDuration[m[31m([m[35m60000.0[m[31m/[m[32mFloat[m[31m([mTempo[31m)/[m[35m16.0[m[31m/[m[35m1000.0[m[31m);[m	       
		  Suspended [31m:=[m False[31m;[m
		  Synth_Input_Deamon[31m.[mStart[31m;[m
	       [01;34mend[m Start[31m;[m	       	       	       
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	    
	 [01;34mend[m [01;34mloop[m[31m;[m
	 
	 
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Mod Sequencer starting..."[m[31m);[m	    
	 Date [31m:=[m Clock [31m+[m Quantum[31m;[m
	 [01;34mwhile[m [01;34mnot[m Suspended [01;34mloop[m	    	       
	    
	    [01;34mselect[m
	       [01;34maccept[m Stop[31m;[m		  
	       Synth_Input_Deamon[31m.[mStop[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m [01;30mStart[m[31m([mTempo [31m:[m [01;34min[m Tempo_Type[31m;[m Signature [31m:[m [01;34min[m Time_Signature_Type[31m)[m [01;34mdo[m
		  Quantum [31m:=[m  [32mDuration[m[31m([m[35m60000.0[m[31m/[m[32mFloat[m[31m([mTempo[31m)/[m[35m16.0[m[31m/[m[35m1000.0[m[31m);[m
	       [01;34mend[m Start[31m;[m
	    [01;34mor[m		  
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
		  Synth_Input_Deamon[31m.[mHalt[31m;[m	       
	       [01;34mend[m Halt[31m;[m	       	       
	       [01;34mexit[m[31m;[m		  
	    [01;34mor[m
	       [01;34maccept[m [01;30mRec[m[31m([mIn_Rec [31m:[m [01;34min[m [32mBoolean[m[31m)[m [01;34mdo[m
		  Rec_Mod_Status [31m:=[m In_Rec[31m;[m
		  [01;30mPut_Line[m[31m([m[31m"Rec mod "[m [31m&[m [32mBoolean[m'[01;30mImage[m[31m([mRec_Mod_Status[31m));[m
	       [01;34mend[m Rec[31m;[m
	       
	       
	    [01;34mor[m
	       [01;34maccept[m [01;30mPlay[m[31m([mIn_Play [31m:[m [01;34min[m [32mBoolean[m[31m)[m [01;34mdo[m
		  Play_Mod_Status [31m:=[m In_Play[31m;[m
		  [01;30mPut_Line[m[31m([m[31m"Play mod "[m [31m&[m [32mBoolean[m'[01;30mImage[m[31m([mPlay_Mod_Status[31m));[m
	       [01;34mend[m Play[31m;[m
	       
	    [01;34mor[m
	       [01;34maccept[m Reset [01;34mdo[m		     
		  [01;34mfor[m I [01;34min[m [01;30mSheduled_Sequence[m[31m([mTrue[31m)[m'[01;34mRange[m [01;34mloop[m
		     [01;30mClear[m [31m([m[01;30mSheduled_Sequence[m[31m([mTrue[31m)([mI[31m));[m
		     [01;30mClear[m [31m([m[01;30mSheduled_Sequence[m[31m([mFalse[31m)([mI[31m));[m
		  [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mend[m Reset[31m;[m
	    [01;34mor[m [01;34mdelay[m [35m0.001[m[31m;[m
	    [31m--Put_Line("TETE -1.0");[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	    [31m--Put_Line("TETE 0.0");[m
	    [01;34mif[m Play_Mod_Status [01;34mthen[m	     		     
	       [01;34mif[m [01;34mnot[m Step_Vectors[31m.[m[01;30mIs_Empty[m [31m([m[01;30mSheduled_Sequence[m[31m([mVerax[31m)([mStep_Index[31m))[m [01;34mthen[m
		  [31m--Put_Line("TETE 1.0");[m
		  [01;34mfor[m Num_Message [01;34min[m [35m1[m[31m..[mStep_Vectors[31m.[m[01;30mLast_Index[m[31m([m[01;30mSheduled_Sequence[m[31m([mVerax[31m)([mStep_Index[31m))[m [01;34mloop[m
		     [31m--Put_Line("TETE 1.1");[m
		     [01;34mdeclare[m
			Message [31m:[m [01;34mconstant[m Long [31m:=[m Step_Vectors[31m.[m[01;30mElement[m[31m([m[01;30mSheduled_Sequence[m[31m([mVerax[31m)([mStep_Index[31m),[m Num_Message[31m);[m
			
		     [01;34mbegin[m
			
			[31m--Put_Line("TETE 1.3");[m
			[31m--Text_Io.Put_Line("outputing message");[m
			instrument[31m.[mOutput_Device_Driver[31m.[mOutput_Driver[31m.[m[01;30mReceive[m[31m([mMessage[31m);[m			      
			[31m--Text_Io.Put_Line("message outputed");[m
		     [01;34mend[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m		     
	    [01;34mend[m [01;34mif[m[31m;[m	       
	    [01;34mif[m Step_Index [31m+[m [35m1[m [31m>[m Input_Sequence_Type'Last [01;34mthen[m
	       Step_Index [31m:=[m [35m1[m[31m;[m
	       Verax [31m:=[m [01;34mnot[m Verax[31m;[m
	    [01;34melse[m
	       Step_Index [31m:=[m Step_Index [31m+[m [35m1[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m		     
	    
	    Date [31m:=[m Date [31m+[m Quantum[31m;[m
	    [01;34mdelay[m [01;34muntil[m Date [31m-[m [35m0.001[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m	 
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Mod Sequencer stopping..."[m[31m);[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m      
      Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Mod Sequencer halted."[m[31m);[m
   [01;34mend[m Mod_Sequencer_Type[31m;[m
   
   
   [01;34mtask[m [01;34mbody[m Tempo_Sync_Type [01;34mis[m
      Start_Time  [31m:[m Time [31m:=[m Clock[31m;[m
      Quantum     [31m:[m [32mDuration[m [31m:=[m [35m0.0[m[31m;[m
      
      Tempo [31m:[m Tempo_Type [31m:=[m [35m120.0[m[31m;[m	 
      Date      [31m:[m Time [31m:=[m Clock[31m;[m
      
      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
   [01;34mbegin[m	 	 
      
      [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	 [01;34mloop[m
	    
	    [01;34mselect[m	       
	       [01;34maccept[m [01;30mStart[m[31m([mStart_Time [31m:[m [01;34min[m Time[31m;[m Tempo [31m:[m [01;34min[m Tempo_Type[31m;[m Signature [31m:[m [01;34min[m Time_Signature_type[31m)[m [01;34mdo[m
		  Quantum [31m:=[m  [32mDuration[m[31m([m[35m60000.0[m[31m/[m[32mFloat[m[31m([mTempo[31m)/[m[35m24.0[m[31m/[m[35m1000.0[m[31m);[m
	       [01;34mend[m Start[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt[31m;[m
	       End_Of_Task [31m:=[m True[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Stop[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 Start_Time [31m:=[m Clock[31m;[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    
	    [01;34mselect[m
	       [01;34maccept[m Stop[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt[31m;[m
	       End_Of_Task [31m:=[m True[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m [01;30mStart[m[31m([mStart_Time [31m:[m [01;34min[m Time[31m;[m Tempo [31m:[m [01;34min[m Tempo_Type[31m;[m Signature [31m:[m [01;34min[m Time_Signature_type[31m)[m [01;34mdo[m
		  Quantum [31m:=[m  [32mDuration[m[31m([m[35m60000.0[m[31m/[m[32mFloat[m[31m([mTempo[31m)/[m[35m24.0[m[31m/[m[35m1000.0[m[31m);[m
	       [01;34mend[m Start[31m;[m
	    [01;34mor[m 
	       [01;34mdelay[m [01;34muntil[m Start_Time[31m;[m		  
	       
	       [01;34mif[m Instrument[31m.[mSync [01;34mthen[m
		  Instrument[31m.[mOutput_Device_Driver[31m.[mOutput_Driver[31m.[m[01;30mReceive[m[31m([mPortmidi[31m.[m[01;30mPm_Message[m[31m([m[35m16[m#F8#[31m,[m [35m0[m[31m,[m [35m0[m[31m));[m		  
	       [01;34mend[m [01;34mif[m[31m;[m
	       
	       Start_Time [31m:=[m Start_Time [31m+[m Quantum[31m;[m
	       
	    [01;34mend[m [01;34mselect[m[31m;[m
	    
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Tempo_Sync_Type[31m;[m                        
   
   
   [01;34mprocedure[m [01;30mInitialize[m[31m([mMaster [31m:[m [01;34min[m [01;34mout[m Bandmaster_Record[31m)[m [01;34mis[m
      Outputs [31m:[m [01;34mconstant[m Devices_List_Access [31m:=[m Outputs_List[31m;[m
      Inputs  [31m:[m [01;34mconstant[m Devices_List_Access [31m:=[m Inputs_List[31m;[m
            
      
      
   [01;34mbegin[m      
      
      [01;34mfor[m Id [01;34min[m Instrument_Id'[01;34mrange[m [01;34mloop[m
	 
	 [01;34mif[m [01;30mInputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mor[m [01;30mOutputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mthen[m
	    
	    [01;34mif[m [01;30mInputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mthen[m
	       [01;34mif[m Master[31m.[m[01;30mOrchester[m[31m([mId[31m)[m [31m=[m [01;34mnull[m [01;34mthen[m
		  Master[31m.[m[01;30mOrchester[m[31m([mId[31m)[m [31m:=[m [01;34mnew[m MIDI_Instrument_Record[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       Master[31m.[m[01;30mOrchester[m[31m([mId[31m).[mInput_Device_Driver [31m:=[m
		 [01;34mnew[m Input_Device_Driver_Type[31m;[m	 
	       
	       [01;30mPut_Line[m[31m([m[31m"initializing Input driver for device : "[m [31m&[m 
			  [01;30mInputs[m[31m([m[01;30mInputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))).[mName[31m.[m[01;34mall[m [31m&[m 
			  [31m"instrument Num "[m [31m&[m Instrument_Id'[01;30mImage[m[31m([mId[31m));[m
	       
	       
	       [01;30mInitialize_Input[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mInput_Device_Driver[31m.[m[01;34mall[m[31m,[m
				[01;30mInputs[m[31m([m[01;30mInputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))));[m
	       Gmface[31m.[mGm_MIDI[31m.[mDevices[31m.[m[01;30mOpen[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mInput_Device_Driver[31m.[mInput[31m.[m[01;34mall[m[31m);[m
	       Master[31m.[m[01;30mOrchester[m[31m([mId[31m).[mInput_Device_Driver[31m.[mInput_Driver[31m.[mStart[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 
	    [01;34mif[m [01;30mOutputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mthen[m
	       [01;34mif[m Master[31m.[m[01;30mOrchester[m[31m([mId[31m)[m [31m=[m [01;34mnull[m [01;34mthen[m
		  Master[31m.[m[01;30mOrchester[m[31m([mId[31m)[m [31m:=[m [01;34mnew[m MIDI_Instrument_Record[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       Master[31m.[m[01;30mOrchester[m[31m([mId[31m).[mOutput_Device_Driver [31m:=[m
		 [01;34mnew[m Output_Device_Driver_Type[31m;[m
	       
	       [01;30mPut_Line[m[31m([m[31m"initializing output driver for device : "[m [31m&[m 
			  [01;30mOutputs[m[31m([m[01;30mOutputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))).[mName[31m.[m[01;34mall[m [31m&[m 
			  [31m"instrument Num "[m [31m&[m Instrument_Id'[01;30mImage[m[31m([mId[31m));[m
	       
	       [01;30mInitialize_Output[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mOutput_Device_Driver[31m.[m[01;34mall[m[31m,[m
				 [01;30mOutputs[m[31m([m[01;30mOutputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))));[m
	       
	       Gmface[31m.[mGm_MIDI[31m.[mDevices[31m.[m[01;30mOpen[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mOutput_Device_Driver[31m.[mOutput[31m.[m[01;34mall[m[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	    Master[31m.[mInst_Last [31m:=[m Master[31m.[mInst_Last [31m+[m [35m1[m[31m;[m
	 [01;34melse[m
	    [01;34mexit[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m      
            
   [01;34mend[m Initialize[31m;[m
   
   [01;34mprocedure[m [01;30mFinalize[m[31m([mMaster [31m:[m [01;34min[m [01;34mout[m Bandmaster_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mfor[m Id [01;34min[m Instrument_Id'[01;34mrange[m [01;34mloop[m
	 [01;34mif[m [01;30mInputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mthen[m
	    Gmface[31m.[mGm_MIDI[31m.[mDevices[31m.[m[01;30mClose[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mInput_Device_Driver[31m.[mInput[31m.[m[01;34mall[m[31m);[m
	 [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mif[m [01;30mOutputs_Devices[m[31m([m[32mInteger[m[31m([mId[31m))[m [31m/=[m [31m(-[m[35m1[m[31m)[m [01;34mthen[m
	    Gmface[31m.[mGm_MIDI[31m.[mDevices[31m.[m[01;30mClose[m[31m([mMaster[31m.[m[01;30mOrchester[m[31m([mId[31m).[mOutput_Device_Driver[31m.[mOutput[31m.[m[01;34mall[m[31m);[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Finalize[31m;[m
	 
[01;34mend[m Gmface[31m.[mGm_MIDI[31m.[mInstruments[31m;[m
