Logo Search packages:      
Sourcecode: yiff version File versions  Download package

midi.h

#ifndef MIDI_H
#define MIDI_H

#include <sys/types.h>

/*
 *    Midi return error codes:
 */
#define MidiSuccess           0
#define MidiBadValue          1
#define MidiNoBuffers         2
#define MidiNoAccess          3
#define MidiErrorNotMidi      4


/*
 *    Chunk type names:
 */
#define MidiChunkTypeNameHeader     "MThd"
#define MidiChunkTypeNameTrack      "MTrk"


/*
 *    Chunk type length in bytes:
 *
 *    Not counting NULL terminating byte.
 */
#define MidiChunkTypeNameLen  4

/*
 *    Chunk types:
 */
#define     MidiChunkTypeUnknown    0
#define MidiChunkTypeHeader   1
#define MidiChunkTypeTrack    2


/*
 *    Midi track event structure.
 */
typedef struct {

      int type;       /* One of MidiEventType*. */
      int dtime;  /* Delta time. */

} MidiEventStruct;

/*
 *    Midi chunk structure:
 */
typedef struct {

      int type;         /* One of MidiChunkType*. */
      u_int32_t len;


      /* Raw data contained in this chunk (except chunk type
       * and length information.
       */
      u_int8_t *buf;
      int buf_len;      /* len - 8. */


      /* Events if type is MidiChunkTypeTrack. */
      MidiEventStruct   **event;
      int         total_events;

} MidiChunkStruct;

/*
 *    Midi data structure:
 */
typedef struct {

      char *filename;

      /* Header. */
      int format;
      int tracks; /* Number of tracks. */
      int divisions;

      /* Chunks. */
      MidiChunkStruct **chunk;
      int total_chunks;

} MidiDataStruct;


extern int MidiIsFileMidi(const char *filename);
extern int MidiRead(const char *filename, FILE *fp, MidiDataStruct *md);
extern void MidiDestroy(MidiDataStruct *md);



#endif      /* MIDI_H */

Generated by  Doxygen 1.6.0   Back to index