[31m-----------------------------------------------------[m
[31m-- portmidi is Ada binding to C library "portmidi".[m
[31m-----------------------------------------------------[m
[31m--  Copyright (C) 2010 Manuel De Girardi.[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 3 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, see <http://www.gnu.org/licenses/>.[m

[31m-- French translation --[m

[31m-----------------------------------------------------[m
[31m-- porttime is Ada binding to C library "porttime".[m
[31m-----------------------------------------------------[m
[31m--  Copyright (C) 2010 Manuel De Girardi.[m

[31m--  Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le[m
[31m--  modifier suivant les termes de la ?GNU General Public License? telle que[m
[31m--  publiée par la Free Software Foundation : soit la version 3 de cette[m
[31m--  licence, soit (à votre gré) toute version ultérieure.[m

[31m--  Ce programme est distribué dans l?espoir qu?il vous sera utile, mais SANS[m
[31m--  AUCUNE GARANTIE : sans même la garantie implicite de COMMERCIALISABILITÉ[m
[31m--  ni d?ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale[m
[31m--  Publique GNU pour plus de détails.[m

[31m--  Vous devriez avoir reçu une copie de la Licence Générale Publique GNU avec[m
[31m--  ce programme ; si ce n?est pas le cas, consultez :[m
[31m--  <http://www.gnu.org/licenses/>.[m

[31m-----------------------------------------------------[m
[31m-- Author      : Manuel De Girardi[m
[31m-- Date        : 2012/07/14[m
[31m-- Version     : 0.0.2[m
[31m-- unit type   : specification[m
[31m-- Description : Ada binding to C library "portmidi".[m
[31m-----------------------------------------------------[m

[01;34mpackage[m [01;34mbody[m Gmface[31m.[mGm_MIDI[31m.[mPortMIDI [01;34mis[m
   
      [01;34mfunction[m [01;30mPm_Message[m[31m([mStatus[31m,[m Data1[31m,[m Data2 [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mLong [01;34mis[m
      
      Message [31m:[m Unsigned_32 [31m:=[m [35m0[m[31m;[m
      Low     [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mUnsigned_32[m[31m([mData2[31m);[m
      Middle  [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mUnsigned_32[m[31m([mData1[31m);[m
      High    [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mUnsigned_32[m[31m([mstatus[31m);[m                       
   [01;34mbegin[m      
      Message [31m:=[m [31m(([m[01;30mShift_Left[m[31m([mLow[31m,[m [35m16[m[31m)[m [01;34mand[m [35m16[m#FF0000#[31m)[m [01;34mor[m
		     [31m([m[01;30mShift_Left[m[31m([mmiddle[31m,[m [35m8[m[31m)[m [01;34mand[m [35m16[m#FF00#[31m)[m [01;34mor[m
		     [31m([mhigh [01;34mand[m [35m16[m#FF#[31m));[m
		    
      [01;34mreturn[m Interfaces[31m.[mC[31m.[m[01;30mLong[m[31m([mMessage[31m);[m
   [01;34mend[m Pm_Message[31m;[m
   
   [01;34mfunction[m [01;30mStatus[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mlong[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mlong [01;34mis[m
      Status [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [31m([m[01;30mUnsigned_32[m[31m([mMessage[31m)[m [01;34mand[m [35m16[m#FF#[31m);[m
   [01;34mbegin[m
      [01;34mreturn[m Interfaces[31m.[mC[31m.[m[01;30mLong[m[31m([mStatus[31m);[m
   [01;34mend[m Status[31m;[m

   
   [01;34mfunction[m [01;30mdata1[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mlong[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mlong [01;34mis[m
      data1 [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [31m([m[01;30mShift_Right[m[31m([m[01;30mUnsigned_32[m[31m([mMessage[31m),[m [35m8[m[31m)[m [01;34mand[m [35m16[m#FF#[31m);[m
   [01;34mbegin[m
      [01;34mreturn[m Interfaces[31m.[mC[31m.[m[01;30mLong[m[31m([mData1[31m);[m
   [01;34mend[m data1[31m;[m

   [01;34mfunction[m [01;30mChannel[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mLong [01;34mis[m
      channel [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mShift_left[m[31m([m[01;30mUnsigned_32[m[31m([mMessage[31m),[m [35m1[m[31m);[m
   [01;34mbegin[m
      [01;34mreturn[m Interfaces[31m.[mC[31m.[m[01;30mLong[m[31m([mChannel[31m);[m
   
   [01;34mend[m Channel[31m;[m

   [01;34mfunction[m [01;30mdata2[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mlong[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mLong [01;34mis[m
      Data2 [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [31m([m[01;30mShift_Right[m[31m([m[01;30mUnsigned_32[m[31m([mMessage[31m),[m [35m16[m[31m)[m [01;34mand[m [35m16[m#FF#[31m);[m
   [01;34mbegin[m
      [01;34mreturn[m Interfaces[31m.[mC[31m.[m[01;30mLong[m[31m([mData2[31m);[m
   [01;34mend[m data2[31m;[m

   [31m--   /* Filter bit-mask definitions */[m
   [31m--/** filter active sensing messages (0xFE): */[m
   [01;34mfunction[m PM_FILT_ACTIVE [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x0E)[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#0E#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
					       [31m--/** filter system exclusive messages (0xF0): */[m
   [01;34mfunction[m PM_FILT_SYSEX [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x00)      [m

      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m00[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   						[31m--/** filter MIDI clock message (0xF8) */[m
   [01;34mfunction[m PM_FILT_CLOCK [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x08)[m
						[31m--/** filter play messages (start 0xFA, stop 0xFC, continue 0xFB) */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m08[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_PLAY [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--((1 << 0x0A) | (1 << 0x0C) | (1 << 0x0B))[m
					       [31m--/** filter tick messages (0xF9) */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#0A#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m)[m [01;34mor[m [01;30mShift_Left[m[31m([m[35m16[m#0C#[31m,[m [35m1[m[31m)[m [01;34mor[m [01;30mShift_Left[m[31m([m[35m16[m#0B#[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_TICK [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x09)[m
					       [31m--/** filter undefined FD messages */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m09[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_FD [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x0D)      [m
					     [31m--/** filter undefined real-time messages */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#0D#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_UNDEFINED [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--PM_FILT_FD[m
						    [31m--/** filter reset messages (0xFF) */[m
   [01;34mbegin[m
      [01;34mreturn[m PM_FILT_FD[31m;[m
   [01;34mend[m[31m;[m
   
   [01;34mfunction[m PM_FILT_RESET [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x0F)[m
						[31m--/** filter all real-time messages */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#0F#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   
   [01;34mfunction[m PM_FILT_REALTIME [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(PM_FILT_ACTIVE | PM_FILT_SYSEX | PM_FILT_CLOCK | \[m
						 [31m--    PM_FILT_PLAY | PM_FILT_UNDEFINED | PM_FILT_RESET | PM_FILT_TICK)[m
						 [31m--/** filter note-on and note-off (0x90-0x9F and 0x80-0x8F */[m
   [01;34mbegin[m      
      [01;34mreturn[m [31m([mPM_FILT_ACTIVE [01;34mor[m PM_FILT_SYSEX [01;34mor[m PM_FILT_CLOCK [01;34mor[m PM_FILT_PLAY [01;34mor[m PM_FILT_UNDEFINED [01;34mor[m PM_FILT_RESET [01;34mor[m PM_FILT_TICK[31m);[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_NOTE [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--((1 << 0x19) | (1 << 0x18))[m
					       [31m--/** filter channel aftertouch (most midi controllers use this) (0xD0-0xDF)*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m19[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m)[m [01;34mor[m [01;30mShift_Left[m[31m([m[35m16[m#[35m18[m#[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_CHANNEL_AFTERTOUCH [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x1D)[m
							     [31m--/** per-note aftertouch (0xA0-0xAF) */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#1D#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   
   [01;34mfunction[m PM_FILT_POLY_AFTERTOUCH [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x1A)[m
							  [31m--/** filter both channel and poly aftertouch */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#1A#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_AFTERTOUCH [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(PM_FILT_CHANNEL_AFTERTOUCH | PM_FILT_POLY_AFTERTOUCH)[m
						     [31m--/** Program changes (0xC0-0xCF) */[m
   [01;34mbegin[m
      [01;34mreturn[m [31m([mPM_FILT_CHANNEL_AFTERTOUCH [01;34mor[m PM_FILT_POLY_AFTERTOUCH[31m);[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_PROGRAM [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x1C)[m
						  [31m--/** Control Changes (CC's) (0xB0-0xBF)*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#1C#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_CONTROL [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x1B)[m
						  [31m--/** Pitch Bender (0xE0-0xEF*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#1B#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_PITCHBEND [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x1E)[m
						    [31m--/** MIDI Time Code (0xF1)*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#1E#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_MTC [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x01)[m
					      [31m--/** Song Position (0xF2) */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m01[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_SONG_POSITION [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x02)[m
							[31m--/** Song Select (0xF3)*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m02[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_SONG_SELECT [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x03)[m
						      [31m--/** Tuning request (0xF6)*/[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m03[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_TUNE [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(1 << 0x06)[m
					       [31m--/** All System Common messages (mtc, song position, song select, tune request) */[m
      Filter [31m:[m Unsigned_32 [31m:=[m [35m16[m#[35m06[m#[31m;[m
   [01;34mbegin[m
      Filter [31m:=[m [01;30mShift_Left[m[31m([mFilter[31m,[m [35m1[m[31m);[m
      [01;34mreturn[m Filter[31m;[m
   [01;34mend[m[31m;[m
   [01;34mfunction[m PM_FILT_SYSTEMCOMMON [01;34mreturn[m Unsigned_32 [01;34mis[m [31m--(PM_FILT_MTC | PM_FILT_SONG_POSITION | PM_FILT_SONG_SELECT | PM_FILT_TUNE)[m
      
   [01;34mbegin[m
      [01;34mreturn[m [31m([mPM_FILT_MTC [01;34mor[m PM_FILT_SONG_POSITION [01;34mor[m PM_FILT_SONG_SELECT [01;34mor[m PM_FILT_TUNE[31m);[m
   [01;34mend[m[31m;[m      
   
[01;34mend[m Gmface[31m.[mGm_MIDI[31m.[mPortMIDI[31m;[m
