[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;34mpackage[m [01;34mbody[m Libsens[31m.[mMIDI[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 Libsens[31m.[mMIDI[31m.[mPortMIDI[31m;[m