[01;34mwith[m Ada[31m.[mText_Io[31m;[m
[01;34muse[m Ada[31m;[m



[01;34mpackage[m [01;34mbody[m Libsens[31m.[mData [01;34mis[m
   
   [01;34muse[m Step_Vectors[31m;[m
   
   [01;34mfunction[m [01;30mBeat[m[31m([mWord16 [31m:[m [01;34min[m Word16_Type[31m;[m Index [31m:[m [01;34min[m Natural[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m [31m([mWord16 [01;34mand[m [35m2[m[31m**([mIndex [01;34mmod[m [35m16[m[31m))[m [31m>[m [35m0[m[31m;[m
   [01;34mend[m Beat[31m;[m
   
   
   [01;34mtype[m Step_Seq_Type [01;34mis[m [01;34marray[m [31m([m[35m0[m[31m..[m[35m15[m[31m)[m [01;34mof[m Step_Vectors[31m.[mVector[31m;[m
   
   [01;34mprocedure[m [01;30mPattern[m[31m([mFrom [31m:[m [01;34min[m Sentence_Type[31m;[m Channel [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;34mis[m
      Step_Seq [31m:[m Step_Seq_Type[31m;[m
   [01;34mbegin[m
      [01;34mfor[m I [01;34min[m [35m1[m[31m..[mSeq_Vectors[31m.[m[01;30mLast_Index[m[31m([mSeq[31m)[m [01;34mloop[m
	 [01;30mStep_Seq[m[31m([mI[31m)[m [31m:=[m Seq_Vectors[31m.[m[01;30mElement[m[31m([mSeq[31m,[m I[31m);[m
	 [01;34mexit[m [01;34mwhen[m I [31m=[m Step_Seq'Last[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
            
      [01;34mfor[m I [01;34min[m Step_Seq'[01;34mrange[m [01;34mloop[m
	 [01;34mfor[m J [01;34min[m From'[01;34mRange[m [01;34mloop[m
	    [01;34mif[m [01;30mBeat[m[31m([m[01;30mFrom[m[31m([mJ[31m).[mSentence[31m,[m I[31m)[m [01;34mthen[m
	       
	       [01;30mStep_Seq[m[31m([mI[31m)[m [31m:=[m [01;30mStep_Seq[m[31m([mI[31m)[m [31m&[m 
		 [01;30mTo_Long[m[31m([m[01;30mNote_On[m[31m([mChannel[31m,[m [01;30mFrom[m[31m([mJ[31m).[mkey[31m,[m [01;30mFrom[m[31m([mJ[31m).[msens[31m));[m	       
	       
	       [01;30mStep_Seq[m[31m([m[32mInteger[m[31m'Min(Integer(I+Integer(From(J).Length)) mod (Step_Seq'[mLength[31m-[m[35m1[m[31m),[m [32mInteger[m[31m([mStep_Seq'Last[31m)))[m [31m:=[m 
		 [01;30mStep_Seq[m[31m([m[32mInteger[m[31m'Min(Integer(I+Integer(From(J).Length)) mod (Step_Seq'[mlength[31m-[m[35m1[m[31m),[m [32mInteger[m[31m([mStep_Seq'Last[31m)))[m [31m&[m [01;30mTo_Long[m[31m([m[01;30mNote_Off[m[31m([mChannel[31m,[m [01;30mFrom[m[31m([mJ[31m).[mkey[31m));[m
	       
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      Seq [31m:=[m Seq_Vectors[31m.[mEmpty_Vector[31m;[m
      [01;34mfor[m I [01;34min[m Step_Seq_Type'[01;34mRange[m [01;34mloop[m
	 Seq [31m:=[m Seq_Vectors[31m.[m[31m"&"[m[31m([mSeq[31m,[m [01;30mStep_Seq[m[31m([mI[31m));[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m

   [01;34mend[m Pattern[31m;[m      
   
[01;34mend[m Libsens[31m.[mData[31m;[m
