FilterPtr


A filter can be used to specify the events accepted by an application (see MidiSetFilter and MidiGetFilter). For an event to be accepted, the corresponding bits of its port, type and channel must be set to 1 in the filter.

typedef struct TFilter *FilterPtr;
typedef struct TFilter
{
    char port[32];                   // 256 bits : 1 = port accepted, 0 = port rejected    
    char evType[32];                 // 256 bits : 1 = type accepted, 0 = type rejected
    char channel[2];                 //  16 bits : 1 = channel accepted, 0 = channel rejected    
    char unused[2];                  //  16 bits 
} TFilter; 

Macros for accessing filter bits.

#define AcceptBit(a,n)     ( ((char*) (a))[(n)>>3] |=   (1<<((n)&7)) )
#define RejectBit(a,n)     ( ((char*) (a))[(n)>>3] &=  ~(1<<((n)&7)) )
#define InvertBit(a,n)     ( ((char*) (a))[(n)>>3] ^=   (1<<((n)&7)) )
#define IsAcceptedBit(a,n) ( ((char*) (a))[(n)>>3]  &   (1<<((n)&7)) )