[01;34mwith[m PragmARC[31m.[mRem_NN_Wrapper[31m;[m
[01;34muse[m PragmARC[31m.[mRem_NN_Wrapper[31m;[m
[01;34mwith[m Libsens[31m.[mData[31m.[mNeural[31m,[m Libsens[31m.[mData[31m.[mNeural[31m.[mNetwork[31m;[m
[01;34muse[m Libsens[31m.[mData[31m.[mNeural[31m;[m

[01;34mwith[m Ada[31m.[mNumerics[31m.[mFloat_Random[31m;[m
[01;34muse[m Ada[31m.[mNumerics[31m.[mFloat_Random[31m;[m
[01;34mwith[m Ada[31m.[mNumerics[31m.[mDiscrete_Random[31m;[m
[01;34mwith[m Text_Io[31m;[m

[01;34mpackage[m [01;34mbody[m Libsens[31m.[mData[31m.[mlead [01;34mis[m   
   
   Network_Size [31m:[m [01;34mconstant[m Positive [31m:=[m [35m25[m[31m;[m
   Hidden_Num   [31m:[m [01;34mconstant[m Positive [31m:=[m [35m25[m[31m;[m
   
   [01;34mpackage[m Lead_Network [01;34mis[m [01;34mnew[m Libsens[31m.[mData[31m.[mNeural[31m.[m[01;30mNetwork[m[31m([mNetwork_Size[31m,[m Hidden_Num[31m);[m   
   [01;34muse[m Lead_Network[31m;[m
         
   
   
   [01;34mprocedure[m [01;30mRand_Init[m[31m([mSamples [31m:[m [01;34min[m [01;34mout[m Samples_Type[31m)[m [01;34mis[m
      Polyphony [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      Float_Gen [31m:[m Generator[31m;[m
   [01;34mbegin[m
      [01;30mReset[m[31m([mFloat_Gen[31m);[m
      [01;34mfor[m I [01;34min[m Samples'[01;34mRange[m [01;34mloop[m
	 [01;34mfor[m J [01;34min[m [35m1[m[31m..[mNetwork_Size [01;34mloop[m	   
	    [01;34mif[m [01;30mReal[m[31m([m[01;30mRandom[m[31m([mFloat_Gen[31m))[m [31m>=[m [35m0.5[m [01;34mthen[m
	       [01;30mSamples[m[31m([mI[31m)([mJ[31m)[m [31m:=[m [35m1.0[m[31m;[m
	       Polyphony [31m:=[m Polyphony [31m+[m [35m1[m[31m;[m
	    [01;34melse[m
	       [01;30mSamples[m[31m([mI[31m)([mJ[31m)[m [31m:=[m [35m0.0[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m	    
	    [01;34mexit[m [01;34mwhen[m Polyphony [31m>[m [35m4[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 
	 Polyphony [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Rand_Init[31m;[m
   
   [01;34mfunction[m Problem_Rand [01;34mreturn[m Node_Set [01;34mis[m
      Set [31m:[m [01;30mNode_Set[m[31m([m[35m1[m[31m..[mNetwork_Size[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [35m0.0[m[31m);[m
      Float_Gen [31m:[m Generator[31m;[m
   [01;34mbegin[m
      [01;30mReset[m[31m([mFloat_Gen[31m);[m
      [01;34mfor[m I [01;34min[m Set'[01;34mRange[m [01;34mloop[m
	 [01;34mif[m [01;30mReal[m[31m([m[01;30mRandom[m[31m([mFloat_Gen[31m))[m [31m>=[m [35m0.5[m [01;34mthen[m
	    [01;30mSet[m[31m([mI[31m)[m [31m:=[m [35m1.0[m[31m;[m
	 [01;34melse[m
	    [01;30mSet[m[31m([mI[31m)[m [31m:=[m [35m0.0[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m

      [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mreturn[m Set[31m;[m
   [01;34mend[m Problem_Rand[31m;[m
   
   [31m------------------------[m
   [31m-- initialize pattern --[m
   [31m------------------------               [m
   [01;34mprocedure[m [01;30mInit[m [31m([mPattern [31m:[m [01;34mout[m Lead_Sentence_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mfor[m I [01;34min[m Pattern'[01;34mRange[m [01;34mloop[m
	 [01;30mPattern[m[31m([mI[31m).[mKey [31m:=[m I[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Init[31m;[m
   
   [01;34mpackage[m Value_Rand [01;34mis[m [01;34mnew[m Ada[31m.[mNumerics[31m.[m[01;30mDiscrete_Random[m[31m([mValue_Type[31m);[m
      
   [01;34mtask[m [01;34mbody[m Lead_Gen [01;34mis[m
      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      Lead_Pattern [31m:[m Lead_Sentence_Type[31m;[m
      
      Networks_Path [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [31m"data/networks/"[m[31m;[m
      
      Network_Name [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [31m"-mod-Lead.wgt"[m[31m;[m
      
      Network_Filename  [31m:[m [01;34maccess[m [32mString[m[31m;[m
      
      
      Problem[31m,[m Response [31m:[m [01;30mNode_Set[m[31m([m[35m1[m[31m..[mNetwork_Size[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [35m0.0[m[31m);[m
      
      
      
      Melodic_Samples [31m:[m [01;30mSamples_Type[m[31m([m[35m1[m[31m..[m[35m128[m[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m([m[01;34mothers[m [31m=>[m [35m0.0[m[31m));[m
      Value_Gen [31m:[m Value_Rand[31m.[mGenerator[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 Halt [01;34mdo[m
	       End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m [01;30mInitialize[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[mReuse [31m:[m [01;34min[m [32mBoolean[m[31m;[m Converged [31m:[m [01;34min[m [32mFloat[m[31m;[m Max_Epochs [31m:[m [01;34min[m Positive[31m)[m [01;34mdo[m
		  
		  [01;30mRand_Init[m[31m([mMelodic_Samples[31m);[m
		  
		  Network_Filename [31m:=[m [01;34mnew[m [32mString[m ' [31m([mNetworks_Path [31m&[m Filename [31m&[m Network_Name[31m);[m
		  [01;34mif[m [01;34mnot[m Reuse [01;34mthen[m
		     [01;30mTrain[m[31m([mNetwork_Filename[31m.[m[01;34mall[m[31m,[m
			   Melodic_Samples[31m,[m
			   Reuse[31m,[m
			   [01;30mReal[m[31m([mConverged[31m),[m
			   Max_Epochs[31m);[m
		  [01;34mend[m [01;34mif[m[31m;[m
		  
	       [01;34mend[m Initialize[31m;[m
	       
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    
	    
	    [01;34mselect[m
	       
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	       
	    [01;34mor[m
	       [01;34maccept[m [01;30mRespond[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[mChannel [31m:[m [01;34min[m Channel_Type[31m;[m Seq [31m:[m [01;34min[m [01;34mout[m Seq_Vectors[31m.[mVector[31m)[m [01;34mdo[m
		  
		  
		  Lead_Pattern [31m:=[m [31m([m[01;34mothers[m [31m=>[m Null_Note[31m);[m
		  [01;30mInit[m[31m([mLead_Pattern[31m);[m      
		  [01;34mfor[m I [01;34min[m Word16_Index_Type [01;34mloop[m
		     [01;34mif[m I [31m=[m [35m8[m [01;34mor[m I [31m=[m [35m12[m [01;34mthen[m
			Problem [31m:=[m Problem_Rand[31m;[m
			Response [31m:=[m [01;30mRespond[m[31m([mNetworks_Path [31m&[m Filename [31m&[m Network_Name[31m,[m Problem[31m);[m
			[01;34mfor[m J [01;34min[m Response'[01;34mRange[m [01;34mloop[m
			   [01;34mif[m [01;30mResponse[m[31m([mJ[31m)[m [31m>=[m [35m0.5[m [01;34mthen[m
			      [01;30mResponse[m[31m([mJ[31m)[m [31m:=[m [35m1.0[m[31m;[m
			      
			   [01;34melse[m
			      [01;30mResponse[m[31m([mJ[31m)[m [31m:=[m [35m0.0[m[31m;[m
			      
			   [01;34mend[m [01;34mif[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
			[01;30mTo_Sentence[m[31m([mResponse[31m,[m I[31m,[m Lead_Pattern[31m);[m		     		     
			
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  
		  [01;34mfor[m I [01;34min[m Lead_Pattern'[01;34mRange[m [01;34mloop[m		  
		     [01;30mLead_Pattern[m[31m([mI[31m).[mSens [31m:=[m Value_Rand[31m.[m[01;30mRandom[m[31m([mValue_Gen[31m);[m
		     [01;30mLead_Pattern[m[31m([mI[31m).[mLength [31m:=[m Value_Rand[31m.[m[01;30mRandom[m[31m([mValue_Gen[31m);[m	    
		  [01;34mend[m [01;34mloop[m[31m;[m
		  
		  
		  
		  [01;30mPattern[m[31m([mFrom [31m=>[m Lead_Pattern[31m,[m Channel [31m=>[m Channel[31m,[m Seq [31m=>[m Seq[31m);[m
		  
		  
	       [01;34mend[m Respond[31m;[m
	    [01;34mor[m
	       [01;34maccept[m [01;30mInitialize[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[mReuse [31m:[m [01;34min[m [32mBoolean[m[31m;[m Converged [31m:[m [01;34min[m [32mFloat[m[31m;[m Max_Epochs [31m:[m [01;34min[m Positive[31m)[m [01;34mdo[m
		  
		  [01;30mRand_Init[m[31m([mMelodic_Samples[31m);[m
		  
		  Network_Filename [31m:=[m [01;34mnew[m [32mString[m ' [31m([mNetworks_Path [31m&[m Filename [31m&[m Network_Name[31m);[m
		  
		  [01;30mTrain[m[31m([mNetwork_Filename[31m.[m[01;34mall[m[31m,[m
			Melodic_Samples[31m,[m
			Reuse[31m,[m
			[01;30mReal[m[31m([mConverged[31m),[m
			Max_Epochs[31m);[m
		  
		  
	       [01;34mend[m Initialize[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 Lead_Gen[31m;[m
   
[01;34mend[m Libsens[31m.[mData[31m.[mlead[31m;[m
