This is midibuffer.h in view mode; [Download] [Up]
#pragma once #include <midi.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> #include "unix-flavors.h" #define CHANNEL_MESSAGE(x) ((x).mm.msgbuf) #define SYSEX_MESSAGE(x) ((x).mm.sysexbuf) #define MIprogramNr MIbyte1 #define MIbend(msg) (((MIbyte2(msg) << 2) | (MIbyte1(msg) >> 5)) + (MIbyte1(msg) & 0x1)) #define SMPTEnibble(msg) ((MIbyte1(msg) >> 4) & 0xF) #define SMPTEvalue(msg) (MIbyte1(msg) & 0xF) #define SMPTEfprintf(s,smpte) fprintf(s, "SMPTE %d %d %d %d", (int)smpte[3], (int)smpte[2], (int)smpte[1], (int)smpte[0]) extern void MIfree(MIevent*); typedef struct MIlist { MIevent* event; struct MIlist* next; } MIevent_cell, *MIevent_list; extern MIevent_list cdr(MIevent_list); extern MIevent* car(MIevent_list); typedef struct MIqueue { struct sembuf lock_op; struct sembuf unlock_op; int MIq_lock; MIevent_list events; MIevent_list first_event; MIevent_list last_event; MIevent_list first_free; MIevent_list first_recyclable; int length; BOOL close; char *name; } MIevent_queue; MIevent_list MIlist_alloc(); extern MIevent_queue *MIQnew(int,BOOL shared); extern MIevent_list MIQpush(MIevent_queue *, MIevent *); extern MIevent *MIQpop(MIevent_queue *); extern void MIQpopfree(MIevent_queue *); extern MIevent *MIQhead(MIevent_queue *); extern MIevent *MIQreserve(MIevent_queue *); extern MIevent_list MIQrecycle(MIevent_queue *, MIevent *); extern MIevent_list MIQextend(MIevent_queue *); extern int MIQlength(MIevent_queue *); extern BOOL MIQlock(MIevent_queue *); extern BOOL MIQunlock(MIevent_queue *); extern void MIQrelease(MIevent_queue *); extern char *MIQname(MIevent_queue *q); extern void MIQset_name(MIevent_queue *q, char *name); #define MIQclose(q) (q->close = YES) #define MIQclosed(q) (q->close == YES) #define MIQclose_done(q) (q->close = NO) MIevent_list MIQalloc(MIevent_queue *);
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.