ftp.nice.ch/pub/next/unix/music/cm.sd.tar.gz#/midi/sgi/sh_midibuffer.h

This is sh_midibuffer.h in view mode; [Download] [Up]

#include <midi.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 MIevent_ref {
  long refcount;
  MIevent* event;
} MIevent_ref;


typedef struct MIlist {
  MIevent_ref* event;
  struct MIlist* next;
} MIevent_cell, *MIevent_list;

extern MIevent_list cdr(MIevent_list);
extern MIevent*     car(MIevent_list);

typedef struct MIqueue {
  MIevent_list  events;
  MIevent_list  first_event;
  MIevent_list  last_event;
  MIevent_list  first_free;
  MIevent_list  first_recyclable;
} MIevent_queue;
     


MIevent_list MIlist_alloc();

extern MIevent_queue *MIQnew(int);
extern MIevent_list   MIQpush(MIevent_queue *, MIevent *);
extern MIevent       *MIQpop(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 *);

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.