[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 .[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-- .[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;34mwith[m Gmface[31m.[mGm_MIDI[31m.[mPorttime[31m;[m
[01;34mwith[m System[31m;[m
[01;34mwith[m Interfaces[31m.[mC[31m;[m
[01;34muse[m Interfaces[31m;[m
[01;34mwith[m System[31m.[mAddress_To_Access_Conversions[31m;[m
[01;34mpackage[m Gmface[31m.[mGm_MIDI[31m.[mPortMIDI [01;34mis[m
[01;34mtype[m Address_Access [01;34mis[m [01;34maccess[m [01;34mall[m System[31m.[mAddress[31m;[m
[01;34mtype[m PmError [01;34mis[m [31m([mpmNoError[31m,[m
PmHostError[31m,[m
pmInvalidDeviceId[31m,[m
pmInsufficientMemory[31m,[m
pmBufferTooSmall[31m,[m
pmBufferOverflow[31m,[m
pmBadPtr[31m,[m
pmBadData[31m,[m
pmInternalError[31m,[m
PmBufferMaxSize[31m);[m
[01;34mfunction[m Pm_Initialize [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Initialize[31m,[m [31m"Pm_Initialize"[m[31m);[m
[01;34mfunction[m Pm_Terminate [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Terminate[31m,[m [31m"Pm_Terminate"[m[31m);[m
[01;34mfunction[m [01;30mPm_HasHostError[m[31m([m PortMidiStream [31m:[m System[31m.[maddress[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mInt[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_HasHostError[31m,[m [31m"Pm_HasHostError"[m[31m);[m
[01;34msubtype[m T_ErrorText [01;34mis[m Interfaces[31m.[mC[31m.[m[01;30mChar_Array[m[31m([m[35m0[m[31m..[m[35m256[m[31m);[m
[01;34mfunction[m [01;30mPm_GetErrorText[m[31m([m Errnum [31m:[m PmError [31m)[m [01;34mreturn[m T_ErrorText[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_GetErrorText[31m,[m [31m"Pm_GetErrorText"[m[31m);[m
[01;34mpackage[m ErrorText_Conversion [01;34mis[m [01;34mnew[m System[31m.[mAddress_To_Access_Conversions
[31m([mT_ErrorText[31m);[m
[01;34muse[m ErrorText_Conversion[31m;[m
[01;34mtype[m DeviceInfo [01;34mis[m
[01;34mrecord[m
StructVersion [31m:[m [32mInteger[m[31m;[m
Interf [31m:[m System[31m.[maddress[31m;[m
Name [31m:[m System[31m.[mAddress[31m;[m
Input [31m:[m [32mInteger[m[31m;[m
Output [31m:[m [32mInteger[m[31m;[m
Opened [31m:[m [32minteger[m[31m;[m
[01;34mend[m [01;34mrecord[m[31m;[m
[01;34mfunction[m Pm_CountDevices [01;34mreturn[m [32mInteger[m[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_CountDevices[31m,[m [31m"Pm_CountDevices"[m[31m);[m
[01;34mfunction[m Pm_GetDefaultInputDeviceID [01;34mreturn[m Interfaces[31m.[mC[31m.[mint[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_GetDefaultInputDeviceID[31m,[m [31m"Pm_GetDefaultInputDeviceID"[m[31m);[m
[01;34mfunction[m Pm_GetDefaultOutputDeviceID [01;34mreturn[m Interfaces[31m.[mC[31m.[mInt[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_GetDefaultOutputDeviceID[31m,[m [31m"Pm_GetDefaultOutputDeviceID"[m[31m);[m
[01;34mfunction[m [01;30mPm_GetDeviceInfo[m[31m([mPmDeviceID [31m:[m [32mInteger[m[31m)[m [01;34mreturn[m System[31m.[mAddress[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_GetDeviceInfo[31m,[m [31m"Pm_GetDeviceInfo"[m[31m);[m
[01;34mpackage[m DeviceInfo_Conversion [01;34mis[m [01;34mnew[m System[31m.[m[01;30mAddress_To_Access_Conversions[m[31m([mDeviceInfo[31m);[m
[01;34muse[m DeviceInfo_Conversion[31m;[m
[01;34mfunction[m [01;30mPm_OpenInput[m[31m([mPortMidiStream [31m:[m [01;34maccess[m System[31m.[maddress[31m;[m
PmDeviceID [31m:[m [32mInteger[m[31m;[m
InputDriverInfo [31m:[m [01;34maccess[m DeviceInfo[31m;[m
BufferSize [31m:[m [32mInteger[m[31m;[m
PmTimeProcPtr [31m:[m Porttime[31m.[mTime_access[31m;[m
time_info [31m:[m System[31m.[maddress[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_OpenInput[31m,[m [31m"Pm_OpenInput"[m[31m);[m
[01;34mfunction[m [01;30mPm_OpenOutput[m[31m([mPortMidiStream [31m:[m [01;34maccess[m System[31m.[mAddress[31m;[m
OutputDevice [31m:[m [32mInteger[m[31m;[m
outputDriverInfo [31m:[m [01;34maccess[m DeviceInfo[31m;[m
BufferSize [31m:[m [32mInteger[m[31m;[m
Time_Proc [31m:[m Porttime[31m.[mTime_access[31m;[m
Time_Info [31m:[m System[31m.[maddress[31m;[m
latency [31m:[m Long_integer[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_OpenOutput[31m,[m [31m"Pm_OpenOutput"[m[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[31m;[m [31m--(1 << 0x0E)[m
[31m--/** filter system exclusive messages (0xF0): */[m
[01;34mfunction[m PM_FILT_SYSEX [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x00)[m
[31m--/** filter MIDI clock message (0xF8) */[m
[01;34mfunction[m PM_FILT_CLOCK [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x08)[m
[31m--/** filter play messages (start 0xFA, stop 0xFC, continue 0xFB) */[m
[01;34mfunction[m PM_FILT_PLAY [01;34mreturn[m Unsigned_32[31m;[m [31m--((1 << 0x0A) | (1 << 0x0C) | (1 << 0x0B))[m
[31m--/** filter tick messages (0xF9) */[m
[01;34mfunction[m PM_FILT_TICK [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x09)[m
[31m--/** filter undefined FD messages */[m
[01;34mfunction[m PM_FILT_FD [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x0D)[m
[31m--/** filter undefined real-time messages */[m
[01;34mfunction[m PM_FILT_UNDEFINED [01;34mreturn[m Unsigned_32[31m;[m [31m--PM_FILT_FD[m
[31m--/** filter reset messages (0xFF) */[m
[01;34mfunction[m PM_FILT_RESET [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x0F)[m
[31m--/** filter all real-time messages */[m
[01;34mfunction[m PM_FILT_REALTIME [01;34mreturn[m Unsigned_32[31m;[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;34mfunction[m PM_FILT_NOTE [01;34mreturn[m Unsigned_32[31m;[m [31m--((1 << 0x19) | (1 << 0x18))[m
[31m--/** filter channel aftertouch (most midi controllers use this) (0xD0-0xDF)*/[m
[01;34mfunction[m PM_FILT_CHANNEL_AFTERTOUCH [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x1D)[m
[31m--/** per-note aftertouch (0xA0-0xAF) */[m
[01;34mfunction[m PM_FILT_POLY_AFTERTOUCH [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x1A)[m
[31m--/** filter both channel and poly aftertouch */[m
[01;34mfunction[m PM_FILT_AFTERTOUCH [01;34mreturn[m Unsigned_32[31m;[m [31m--(PM_FILT_CHANNEL_AFTERTOUCH | PM_FILT_POLY_AFTERTOUCH)[m
[31m--/** Program changes (0xC0-0xCF) */[m
[01;34mfunction[m PM_FILT_PROGRAM [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x1C)[m
[31m--/** Control Changes (CC's) (0xB0-0xBF)*/[m
[01;34mfunction[m PM_FILT_CONTROL [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x1B)[m
[31m--/** Pitch Bender (0xE0-0xEF*/[m
[01;34mfunction[m PM_FILT_PITCHBEND [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x1E)[m
[31m--/** MIDI Time Code (0xF1)*/[m
[01;34mfunction[m PM_FILT_MTC [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x01)[m
[31m--/** Song Position (0xF2) */[m
[01;34mfunction[m PM_FILT_SONG_POSITION [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x02)[m
[31m--/** Song Select (0xF3)*/[m
[01;34mfunction[m PM_FILT_SONG_SELECT [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x03)[m
[31m--/** Tuning request (0xF6)*/[m
[01;34mfunction[m PM_FILT_TUNE [01;34mreturn[m Unsigned_32[31m;[m [31m--(1 << 0x06)[m
[31m--/** All System Common messages (mtc, song position, song select, tune request) */[m
[01;34mfunction[m PM_FILT_SYSTEMCOMMON [01;34mreturn[m Unsigned_32[31m;[m [31m--(PM_FILT_MTC | PM_FILT_SONG_POSITION | PM_FILT_SONG_SELECT | PM_FILT_TUNE)[m
[01;34mfunction[m [01;30mPm_SetFilter[m[31m([mPortMidiStream [31m:[m System[31m.[mAddress[31m;[m
filters [31m:[m Unsigned_32[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_SetFilter[31m,[m [31m"Pm_SetFilter"[m[31m);[m
[01;34mfunction[m [01;30mPm_SetChannelMask[m[31m([mPortMidiStream [31m:[m System[31m.[mAddress[31m;[m
Mask [31m:[m [32minteger[m[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_SetChannelMask[31m,[m [31m"Pm_SetChannelMask"[m[31m);[m
[01;34mfunction[m [01;30mPm_Abort[m[31m([m PortMidiStream [31m:[m System[31m.[mAddress[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Abort[31m,[m [31m"Pm_Abort"[m[31m);[m
[01;34mfunction[m [01;30mPm_Close[m[31m([m PortMidiStream [31m:[m System[31m.[mAddress[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Close[31m,[m [31m"Pm_Close"[m[31m);[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[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[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[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[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[31m;[m
[01;34mtype[m PmEvent [01;34mis[m
[01;34mrecord[m
Message [31m:[m Interfaces[31m.[mC[31m.[mLong [31m:=[m [35m0[m[31m;[m
PmTimestamp [31m:[m Interfaces[31m.[mC[31m.[mLong [31m:=[m [35m0[m[31m;[m
[01;34mend[m [01;34mrecord[m[31m;[m
[01;34mtype[m Pmevent_Access [01;34mis[m [01;34maccess[m [01;34mall[m Pmevent[31m;[m
[01;34mFunction[m [01;30mPm_Read[m[31m([mPortMidiStream [31m:[m System[31m.[mAddress[31m;[m
Pm_Event [31m:[m [01;34maccess[m PmEvent[31m;[m
length [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m PmError [31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Read[31m,[m [31m"Pm_Read"[m[31m);[m
[01;34mfunction[m [01;30mPm_Poll[m[31m([m PortMidiStream [31m:[m System[31m.[mAddress[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Poll[31m,[m [31m"Pm_Poll"[m[31m);[m
[01;34mfunction[m [01;30mPm_Write[m[31m([m PortMidiStream [31m:[m System[31m.[maddress[31m;[m
Pm_Event [31m:[m PmEvent[31m;[m
length [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m PmError [31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_Write[31m,[m [31m"Pm_Write"[m[31m);[m
[01;34mfunction[m [01;30mPm_WriteShort[m[31m([m PortMidiStream [31m:[m System[31m.[maddress[31m;[m
PmTimestamp [31m:[m Interfaces[31m.[mC[31m.[mlong[31m;[m
Msg [31m:[m Interfaces[31m.[mC[31m.[mlong[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_WriteShort[31m,[m [31m"Pm_WriteShort"[m[31m);[m
[01;34mfunction[m [01;30mPm_WriteSysEx[m[31m([m PortMidiStream [31m:[m System[31m.[mAddress[31m;[m
PmTimestamp [31m:[m [32mFloat[m[31m;[m
Msg [31m:[m [32minteger[m[31m)[m [01;34mreturn[m PmError[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Pm_WriteSysEx[31m,[m [31m"Pm_WriteSysEx"[m[31m);[m
[31m-- for testing because bug.[m
[01;34mfunction[m [01;30mRead_handler[m[31m([mDevice_Id [31m:[m System[31m.[maddress[31m)[m [01;34mreturn[m Interfaces[31m.[mC[31m.[mlong[31m;[m
[01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m Read_Handler[31m,[m [31m"Read_Handler"[m[31m);[m
[01;34mend[m Gmface[31m.[mGm_MIDI[31m.[mPortMIDI[31m;[m