minor changes

This commit is contained in:
Lauchmelder 2022-04-09 19:08:28 +02:00
parent 918d31692f
commit 553a02cc25
5 changed files with 1239 additions and 8 deletions

91
src/midi_parser.h Normal file
View file

@ -0,0 +1,91 @@
/**
* https://github.com/Gegel85/midi_parser
*/
#ifndef __LIB_MIDI_PARSER_HEADER_
#define __LIB_MIDI_PARSER_HEADER_
#include <stdbool.h>
typedef enum {
MidiSequenceNumber,
MidiTextEvent,
MidiNewLyric,
MidiNewMarker,
MidiNewCuePoint,
MidiNewChannelPrefix,
MidiPortChange,
MidiTempoChanged,
MidiSMTPEOffset,
MidiNewTimeSignature,
MidiNewKeySignature,
MidiSequencerSpecificEvent,
MidiNoteReleased,
MidiNotePressed,
MidiPolyphonicPressure,
MidiControllerValueChanged,
MidiProgramChanged,
MidiPressureOfChannelChanged,
MidiPitchBendChanged,
} EventType;
typedef struct {
EventType type;
int timeToAppear;
void *infos;
} Event;
typedef struct {
unsigned char numerator;
unsigned char denominator;
unsigned char clockTicksPerMetTick;
unsigned char ticksPerQuarterNote;
} MidiTimeSignature;
typedef struct {
unsigned char channel;
unsigned char pitch;
unsigned char velocity;
} MidiNote;
typedef struct Note {
unsigned char pitch;
unsigned char channel;
unsigned char velocity;
unsigned char fadeOutVelocity;
unsigned long int timeBeforeAppear;
unsigned long int duration;
} Note;
typedef struct {
char *copyright;
char *name;
char *instrumentName;
int nbOfEvents;
int nbOfNotes;
Note *notes;
Event *events;
} Track;
typedef struct NoteList {
Note *note;
struct NoteList *next;
struct NoteList *prev;
} NoteList;
typedef struct {
unsigned short format;
short nbOfTracks;
char fps;
short ticks;
int nbOfNotes;
Track *tracks;
} MidiParser;
bool parseMidiTrack(unsigned char *buffer, int buffLen, Track *track, bool outputDebug, MidiParser *result, int posInFile, bool createNoteArray);
MidiParser *parseMidi(char *path, bool outputDebug, bool createNoteArray);
char *getNoteString(char note);
void deleteTrack(Track *track);
void deleteMidiParserStruct(MidiParser *result);
#endif