
[31m-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[m
[31m--                                                                                                                                                                         --[m
[31m--                                                                      ---------------------------                                                                        --[m
[31m--                                                                      --       El-Sofware      --                                                                        --[m
[31m--                                                                      ---------------------------                                                                        --[m
[31m--                                                                                                                                                                         --[m
[31m--                                                                                present                                                                                  --[m
[31m--                                                                                                                                                                         --[m
[31m--                                                                            ---------------                                                                              --[m
[31m--                                                                            --  MidiSurf --                                                                              --[m
[31m--                                                                            ---------------                                                                              --[m
[31m--                                                                                                                                                                         --[m
[31m-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[m
[31m--                                                                                                                                                                         --[m
[31m-- Auteur      : Manuel De Girardi                                                                                                                                         --[m
[31m-- Date        : 25/11/2010                                                                                                                                                --[m
[31m-- Description : Surface de contrôle pour instrument MIDI                                                                                                                  --[m
[31m--                                                                                                                                                                         --[m
[31m-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[m



[31m--with PragmARC.Math.Functions;[m

[01;34mwith[m Text_Io[31m;[m                           [01;34muse[m Text_Io[31m;[m
[01;34mwith[m Interfaces[31m.[mC[31m;[m                      [01;34muse[m Interfaces[31m.[mC[31m;[m

[01;34mpackage[m [01;34mbody[m Libsens[31m.[mRem_Common [01;34mis[m


   [01;34mpackage[m Real_Io [01;34mis[m [01;34mnew[m Text_Io[31m.[m[01;30mFloat_Io[m[31m([mPragmARC[31m.[mREM_NN_Wrapper[31m.[mReal[31m);[m
   [01;34muse[m Real_Io[31m;[m
   [31m--package Real_Math is new PragmARC.Math.Functions (Supplied_Real => PragmARC.REM_NN_Wrapper.Real);[m
   [31m--use Real_Math;[m

   [01;34mfunction[m [01;30mTo_Bbyte[m[31m([mByte [31m:[m [01;34min[m T_Byte[31m)[m [01;34mreturn[m T_Bbyte [01;34mis[m
      Bbyte [31m:[m T_Bbyte[31m;[m
      Tmp   [31m:[m T_Byte   [31m:=[m Byte[31m;[m
   [01;34mbegin[m
      [01;34mfor[m I [01;34min[m [01;34mreverse[m Bbyte'[01;34mRange[m [01;34mloop[m
         [01;30mBbyte[m [31m([mI[31m)[m [31m:=[m [32mBoolean[m'[01;30mVal[m [31m([mTmp [01;34mrem[m [35m2[m[31m);[m
         Tmp [31m:=[m Tmp [31m/[m [35m2[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mreturn[m Bbyte[31m;[m
   [01;34mend[m To_Bbyte[31m;[m
   [01;34mfunction[m [01;30mTo_byte[m[31m([mBbyte [31m:[m [01;34min[m T_Bbyte[31m)[m [01;34mreturn[m T_Byte [01;34mis[m
      Byte [31m:[m T_Byte [31m:=[m [35m0[m[31m;[m
   [01;34mbegin[m
      [01;34mfor[m I [01;34min[m [01;34mreverse[m Bbyte'[01;34mRange[m [01;34mloop[m
         Byte [31m:=[m Byte [31m+[m [31m([m[32mboolean[m'[01;30mPos[m[31m([m[01;30mBbyte[m[31m([mI[31m))*([m[35m2[m[31m**([m[35m7[m[31m-[mI[31m)));[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mreturn[m Byte[31m;[m
   [01;34mend[m To_Byte[31m;[m
   [01;34mfunction[m [01;30mChord_To_Register[m[31m([mChord [31m:[m T_Chord[31m)[m [01;34mreturn[m T_Register [01;34mis[m
      Register [31m:[m T_Register [31m:=[m [31m([m[01;34mothers[m [31m=>[m [35m0.0[m[31m);[m
      Bbyte [31m:[m T_Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
   [01;34mbegin[m
      [31m--Put_Line("fafa 0.0");[m
      [01;34mfor[m I [01;34min[m [35m0[m[31m..[mChord'Last[31m-[m[35m1[m [01;34mloop[m
	 [31m--Put_Line("fafa 0.1");[m
         Bbyte [31m:=[m [01;30mTo_Bbyte[m[31m([m[32mInteger[m[31m([m[01;30mChord[m[31m([mI[31m+[m[35m1[m[31m).[mKey[31m));[m
         [01;34mfor[m J [01;34min[m [35m1[m[31m..[m[35m7[m [01;34mloop[m
	    [31m--Put_Line("fafa 0.2");[m
            [01;30mRegister[m[31m([m[35m14[m[31m*[mI[31m+[mJ[31m)[m [31m:=[m [01;30mReal[m[31m([m[32mboolean[m'[01;30mpos[m[31m([m[01;30mBbyte[m[31m([mJ[31m)));[m
         [01;34mend[m [01;34mloop[m[31m;[m
	 [31m--Put_Line("fafa 0.4");[m
         Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
	 
         Bbyte [31m:=[m [01;30mTo_Bbyte[m[31m([m[32mInteger[m[31m([m[01;30mChord[m[31m([mI[31m+[m[35m1[m[31m).[mVel[31m));[m
	 [31m--Put_Line("fafa 0.5");[m
         [01;34mfor[m J [01;34min[m [35m1[m[31m..[m[35m7[m [01;34mloop[m
	    [31m--Put_Line("fafa 0.6");[m
            [01;30mRegister[m[31m([m[35m14[m[31m*[mI[31m+[mJ[31m+[m[35m7[m[31m)[m [31m:=[m [01;30mReal[m[31m([m[32mboolean[m'[01;30mpos[m[31m([m[01;30mBbyte[m[31m([mJ[31m)));[m
         [01;34mend[m [01;34mloop[m[31m;[m
         Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
	 [31m--Put_Line("fafa 0.7");[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [31m--Put_Line("fafa 0.8");[m
      [01;34mreturn[m Register[31m;[m
   [01;34mend[m Chord_To_Register[31m;[m

   [01;34mfunction[m [01;30mRegister_To_Chord[m[31m([mRegister [31m:[m T_Register[31m)[m [01;34mreturn[m T_Chord [01;34mis[m
      Chord [31m:[m [01;30mT_Chord[m[31m([m[35m1[m[31m..[m[35m3[m[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [01;34mnew[m T_note ' [31m([m[35m64[m[31m,[m [35m64[m[31m,[m [35m64[m[31m));[m
      Bbyte [31m:[m T_Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
      Byte [31m:[m T_Byte [31m:=[m [35m0[m[31m;[m
   [01;34mbegin[m
      [01;34mfor[m I [01;34min[m [35m0[m[31m..[mChord'Length[31m-[m[35m1[m [01;34mloop[m
         [01;34mfor[m J [01;34min[m [35m1[m[31m..[m[35m7[m [01;34mloop[m
            [01;30mBbyte[m[31m([mJ[31m)[m [31m:=[m [32mBoolean[m'[01;30mVal[m[31m([m[32mInteger[m[31m([m[01;30mRegister[m[31m([mI[31m*[m[35m14[m[31m+[mJ[31m)));[m
         [01;34mend[m [01;34mloop[m[31m;[m
         Byte [31m:=[m [01;30mTo_Byte[m[31m([mBbyte[31m);[m
         [01;34mif[m Byte [31m<[m [35m128[m [01;34mthen[m
            [01;30mChord[m[31m([mI[31m+[m[35m1[m[31m).[mKey [31m:=[m [01;30mLong[m[31m([mByte[31m);[m
         [01;34mend[m [01;34mif[m[31m;[m
         Byte [31m:=[m [35m0[m[31m;[m
         Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
         [01;34mfor[m J [01;34min[m [35m1[m[31m..[m[35m7[m [01;34mloop[m
            [01;30mBbyte[m[31m([mJ[31m)[m [31m:=[m [32mBoolean[m'[01;30mVal[m[31m([m[32mInteger[m[31m([m[01;30mRegister[m[31m([mI[31m*[m[35m14[m[31m+[mJ[31m+[m[35m7[m[31m)));[m
         [01;34mend[m [01;34mloop[m[31m;[m
         Byte [31m:=[m [01;30mTo_Byte[m[31m([mBbyte[31m);[m
         [01;34mif[m Byte [31m<[m [35m128[m [01;34mthen[m
            [01;30mChord[m[31m([mI[31m+[m[35m1[m[31m).[mvel [31m:=[m [01;30mLong[m[31m([mByte[31m);[m
         [01;34mend[m [01;34mif[m[31m;[m
         Byte [31m:=[m [35m0[m[31m;[m
         Bbyte [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mreturn[m Chord[31m;[m
   [01;34mend[m Register_To_Chord[31m;[m




   [01;34mfunction[m [01;30mREM_NN_Expl[m[31m([mNetwork [31m:[m [32mString[m[31m;[mProb [31m:[m [32mstring[m[31m)[m [01;34mreturn[m T_Register [01;34mis[m

      [01;34mprocedure[m [01;30mGet_Input[m [31m([mPattern [31m:[m [01;34min[m Positive[31m;[m
                           Input [31m:[m [01;34mout[m Node_Set[31m;[m
                           Desired [31m:[m [01;34mout[m Node_Set[31m)[m [01;34mis[m
         File [31m:[m Register_Io[31m.[mFile_Type[31m;[m
      [01;34mbegin[m
         Register_Io[31m.[m[01;30mOpen[m[31m([mFile[31m,[m Register_Io[31m.[mIn_File[31m,[m Prob[31m);[m
         Register_Io[31m.[m[01;30mRead[m[31m([mFile[31m,[m [01;30mT_Register[m[31m([mInput[31m),[m Register_Io[31m.[m[01;30mCount[m[31m([mPattern[31m));[m
         Register_Io[31m.[m[01;30mClose[m[31m([mFile[31m);[m
         Desired [31m:=[m [31m([m[01;34mothers[m [31m=>[m [35m0.0[m[31m);[m
      [01;34mend[m Get_Input[31m;[m


      [01;34mpackage[m Harmonie_REM_NN_Expl [01;34mis[m [01;34mnew[m REM_NN
        [31m([mNum_Input_Nodes [31m=>[m T_Register'length[31m,[m
         Num_Hidden_Nodes [31m=>[m [31m([mT_Register'Length[31m/[m[35m7[m[31m),[m
         Num_Output_Nodes [31m=>[m T_Register'length[31m,[m
         Input_To_Output_Connections [31m=>[m True[31m,[m
         New_Random_Weights [31m=>[m False[31m,[m
         Weight_File_Name [31m=>[m network[31m,[m
         Num_Patterns [31m=>[m [35m1[m[31m,[m
         Get_Input [31m=>[m Get_Input[31m);[m

      Response [31m:[m Harmonie_REM_NN_Expl[31m.[mOutput_Set[31m;[m

   [01;34mbegin[m
      Harmonie_REM_NN_Expl[31m.[m[01;30mRespond[m [31m([m[35m1[m[31m,[m Response[31m);[m
      [01;34mreturn[m [01;30mT_Register[m[31m([mResponse[31m);[m
   [01;34mend[m REM_NN_Expl[31m;[m
[01;34mend[m Libsens[31m.[mRem_Common[31m;[m
