[31m----------------------------------------------------[m
[31m-- Gmface is General MIDI attempt to interfacing. --[m
[31m-- Copyright (C) 2018 Manuel De Girardi           --[m
[31m----------------------------------------------------[m
[31m--         gggg       mm              mm          --[m
[31m--       ggg  ggg     mmmm          mmmm          --[m
[31m--     gg             mm  mm      mm  mm          --[m
[31m--    gg    ggggggg   mm    mm  mm    mm          --[m
[31m--     gg     gg      mm      mm      mm          --[m
[31m--      ggg   gg      mm              mm          --[m
[31m--         gggg       mm              mm   face   --[m
[31m--                                                --[m
[31m----------------------------------------------------[m
[31m-- Date        : Wed Feb  7 22:50:13 CET 2018     --[m
[31m-- Version     : 0.1.6gnu_src                     --[m
[31m-- Authors     : E. Sens                          --[m
[31m-- Description : General MIDI interface           --[m
[31m----------------------------------------------------[m
[31m-- History :                                      --[m
[31m--           This version is the full implementation[m
[31m-- of Gmface interface without export capabilities.[m
[31m----------------------------------------------------[m
[31m-- License :                                      --[m
[31m--                                                  ---------------------------[m
[31m-- This program is free software; you can redistribute it and/or modify      --[m
[31m-- it under the terms of the GNU General Public License as published by      --[m
[31m-- the Free Software Foundation; either version 2 of the License, or         --[m
[31m-- (at your option) any later version.                                       --[m
                                                                               
[31m-- This program is distributed in the hope that it will be useful,           --[m
[31m-- but WITHOUT ANY WARRANTY; without even the implied warranty of            --[m
[31m-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             --[m
[31m-- GNU General Public License for more details.                              --[m
                                                                               
[31m-- You should have received a copy of the GNU General Public License         --[m
[31m-- along with this program; if not, write to the Free Software               --[m
[31m-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA --[m
[31m-------------------------------------------------------------------------------[m
[01;34mwith[m Gmface[31m.[mGm_Application[31m;[m
[01;34muse[m Gmface[31m.[mGm_Application[31m;[m
[01;34mwith[m Gmface[31m.[mGm_Application[31m.[mGtk_Interface[31m;[m
[01;34muse[m Gmface[31m.[mGm_Application[31m.[mGtk_Interface[31m;[m
[01;34mwith[m Gmface[31m.[mGm_Virtual[31m;[m
[01;34muse[m Gmface[31m.[mGm_Virtual[31m;[m
[01;34mwith[m Gmface[31m.[mGm_Virtual[31m.[mGmface[31m.[mGmface_Work[31m;[m
[01;34muse[m Gmface[31m.[mGm_Virtual[31m.[mGmface[31m.[mGmface_Work[31m;[m
[01;34mwith[m Gmface[31m.[mGm_Virtual[31m.[mGmidi[31m.[mGmidi_Work[31m;[m
[01;34muse[m Gmface[31m.[mGm_Virtual[31m.[mGmidi[31m.[mGmidi_Work[31m;[m

[01;34mwith[m Gmface[31m.[mGm_Case[31m;[m
[01;34muse[m Gmface[31m.[mGm_Case[31m;[m

[01;34mwith[m Gnat[31m.[mCommand_Line[31m;[m
[01;34muse[m Gnat[31m.[mCommand_Line[31m;[m

[01;34mwith[m Text_Io[31m;[m
[01;34muse[m Text_Io[31m;[m
[01;34mprocedure[m Gmfacemain [01;34mis[m
   
   Gtk_Interface [31m:[m Gtk_Interface_Pointer[31m;[m
   
   Gm_Works [31m:[m [01;34maliased[m Work_Array[31m;[m
   
   Auto_Play [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   In_Loop   [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   
   Work_Id   [31m:[m Natural [31m:=[m [35m0[m[31m;[m
[01;34mbegin[m
   
   [01;34mbegin[m
      
      [01;34mloop[m
	 [01;34mcase[m [01;30mGetopt[m [31m([m[31m"i a l v h"[m[31m)[m [01;34mis[m
	    [31m-- Accept :=[m
	    [31m-- h help ;[m
	    [31m-- a auto play ;[m
	    [31m-- l in loop ;[m
	    [01;34mwhen[m ASCII[31m.[mNUL [31m=>[m
	       [01;34mexit[m[31m;[m	       	       
	    [01;34mwhen[m [31m'a'[m [31m=>[m
	       [01;34mif[m Full_Switch [31m=[m [31m"a"[m [01;34mthen[m
		  [01;30mPut_Line[m [31m([m[31m"Got auto play"[m[31m);[m
		  Auto_Play [31m:=[m True[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mwhen[m [31m'l'[m [31m=>[m
	       [01;34mif[m Full_Switch [31m=[m [31m"l"[m [01;34mthen[m
		  In_Loop [31m:=[m True[31m;[m
		  [01;30mPut_Line[m [31m([m[31m"Got in loop"[m[31m);[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mwhen[m [31m'h'[m [31m=>[m 
	       [01;34mif[m Full_Switch [31m=[m [31m"h"[m [01;34mthen[m		  
		  [01;30mPut_Line[m [31m([m[31m"Got help"[m[31m);[m
		  [01;30mPut_Line[m[31m([m[31m"ultrason : usage : ultarson [ -a ] [ -l ] [ -h ] [Filename(s)...]"[m[31m);[m
		  [01;34mreturn[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m	       
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       [01;34mraise[m Program_Error[31m;[m [31m-- cannot occur[m
	 [01;34mend[m [01;34mcase[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
            	 
      [01;34mbegin[m
	 
	 [01;34mloop[m
	    [01;34mdeclare[m
	       S [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [01;30mGet_Argument[m [31m([mDo_Expansion [31m=>[m True[31m);[m
	    [01;34mbegin[m	 
	       
	       [01;34mexit[m [01;34mwhen[m S'Length [31m=[m [35m0[m[31m;[m
	       [01;34mcase[m [01;30mFiletype[m[31m([mS[31m)[m [01;34mis[m
		  [01;34mwhen[m Gmface[31m.[mGmidi_Work [31m=>[m
		     [01;34mnull[m[31m;[m
		  [01;34mwhen[m Gmface[31m.[mGmface_Work [31m=>[m
		     
		     [01;30mPut_Line[m [31m([m[31m"Adding Gmface work for "[m [31m&[m S[31m);[m
		     
		     [01;30mGm_Works[m[31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m))[m [31m:=[m [01;34mnew[m Gmface_Work_Record[31m;[m
		     
		     [01;30mGmface_Work_Record[m[31m([m[01;30mGm_Works[m[31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m)).[m[01;34mall[m[31m).[mInitialize
		       [31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m),[m S[31m);[m
		     
		     Work_Id [31m:=[m Work_Id [31m+[m [35m1[m[31m;[m
	       [01;34mend[m [01;34mcase[m[31m;[m
	    [01;34mend[m[31m;[m   
	 [01;34mend[m [01;34mloop[m[31m;[m
	 
      [01;34mend[m[31m;[m
   [01;34mexception[m
      [01;34mwhen[m Invalid_Switch    [31m=>[m [01;30mPut_Line[m [31m([m[31m"Invalid Switch "[m [31m&[m Full_Switch[31m);[m
	 [01;34mraise[m[31m;[m
      [01;34mwhen[m Invalid_Parameter [31m=>[m [01;30mPut_Line[m [31m([m[31m"No parameter for "[m [31m&[m Full_Switch[31m);[m
	 [01;34mraise[m[31m;[m
   [01;34mend[m[31m;[m
   
   
   [01;34mif[m Work_Id [31m=[m [35m0[m [01;34mthen[m
      [01;30mGm_Works[m[31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m))[m [31m:=[m [01;34mnew[m Gmface_Work_Record[31m;[m
      [01;30mGmface_Work_Record[m[31m([m[01;30mGm_Works[m[31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m)).[m[01;34mall[m[31m).[m[01;30mInitialize[m[31m([m[01;30mWork_Num[m[31m([mWork_Id[31m+[m[35m1[m[31m),[m [31m""[m[31m);[m      
      Work_Id [31m:=[m Work_Id [31m+[m [35m1[m[31m;[m     
   [01;34mend[m [01;34mif[m[31m;[m
         

   [01;30mGtk_New[m[31m([mGtk_Interface[31m,[m Gm_Works'[01;34maccess[m[31m,[m Auto_Play[31m,[m In_loop[31m);[m
[01;34mend[m Gmfacemain[31m;[m
