ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
midi.c File Reference
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#include "midi.h"

Go to the source code of this file.

Data Structures

struct  _MidiLastNote
struct  _MidiFileTrack
struct  _MidiHeader
struct  _MidiFileInternal
struct  MIDI_END_POINT

Macros

#define DT_DEF   32
#define SWAP_WORD(w)
#define SWAP_DWORD(d)
#define _VAR_CAST   MidiFileInternal *pMF = (MidiFileInternal *)_pMF
#define IsFilePtrValid(pMF)
#define IsTrackValid(_x)
#define IsChannelValid(_x)
#define IsNoteValid(_x)
#define IsMessageValid(_x)

Typedefs

typedef struct _MidiLastNote MidiLastNote
typedef struct _MidiFileTrack MidiFileTrack
typedef struct _MidiHeader MidiHeader
typedef struct _MidiFileInternal MidiFileInternal

Functions

char * strcopy (char *_dest, const char *_source)
MidiFilemidiFileCreate (const char *pFilename, int bOverwriteIfExists)
int midiFileSetTracksDefaultChannel (MidiFile *_pMF, int iTrack, int iChannel)
int midiFileGetTracksDefaultChannel (const MidiFile *_pMF, int iTrack)
int midiFileSetPPQN (MidiFile *_pMF, int PPQN)
int midiFileGetPPQN (const MidiFile *_pMF)
int midiFileSetVersion (MidiFile *_pMF, int iVersion)
int midiFileGetVersion (const MidiFile *_pMF)
MidiFilemidiFileOpen (const char *pFilename)
int midiFileFlushTrack (MidiFile *_pMF, int iTrack, int bFlushToEnd, DWORD dwEndTimePos)
int midiFileSyncTracks (MidiFile *_pMF, int iTrack1, int iTrack2)
int midiFileClose (MidiFile *_pMF)
int midiSongAddSMPTEOffset (MidiFile *_pMF, int iTrack, int iHours, int iMins, int iSecs, int iFrames, int iFFrames)
int midiSongAddSimpleTimeSig (MidiFile *_pMF, int iTrack, int iNom, int iDenom)
int midiSongAddTimeSig (MidiFile *_pMF, int iTrack, int iNom, int iDenom, int iClockInMetroTick, int iNotated32nds)
int midiSongAddKeySig (MidiFile *_pMF, int iTrack, MidiNote iKey)
int midiSongAddTempo (MidiFile *_pMF, int iTrack, int iTempo)
int midiSongAddMIDIPort (MidiFile *_pMF, int iTrack, int iPort)
int midiSongAddEndSequence (MidiFile *_pMF, int iTrack)
int midiTrackAddRaw (MidiFile *_pMF, int iTrack, int data_sz, const BYTE *pData, int bMovePtr, int dt)
int midiTrackIncTime (MidiFile *_pMF, int iTrack, int iDeltaTime, int bOverridePPQN)
int midiTrackAddText (MidiFile *_pMF, int iTrack, MidiTextInfo iType, const char *pTxt)
int midiTrackSetKeyPressure (MidiFile *pMF, int iTrack, int iNote, int iAftertouch)
int midiTrackAddControlChange (MidiFile *pMF, int iTrack, MidiControlCommand iCCType, int iParam)
int midiTrackAddProgramChange (MidiFile *pMF, int iTrack, int iInstrPatch)
int midiTrackChangeKeyPressure (MidiFile *pMF, int iTrack, int iDeltaPressure)
int midiTrackSetPitchWheel (MidiFile *pMF, int iTrack, int iWheelPos)
int midiTrackAddMsg (MidiFile *_pMF, int iTrack, MidiMessage iMsg, int iParam1, int iParam2)
int midiTrackAddNote (MidiFile *_pMF, int iTrack, int iNote, int iLength, int iVol, int bAutoInc, int bOverrideLength)
int midiTrackAddRest (MidiFile *_pMF, int iTrack, int iLength, int bOverridePPQN)
int midiTrackGetEndPos (MidiFile *_pMF, int iTrack)
int midiReadGetNumTracks (const MidiFile *_pMF)
int midiReadGetNextMessage (const MidiFile *_pMF, int iTrack, MidiMessagePayload *pMsg)
void midiReadInitMessage (MidiMessagePayload *pMsg)
void midiReadFreeMessage (MidiMessagePayload *pMsg)
int muGetInstrumentName (char *pName, int iInstr)
int muGetDrumName (char *pName, int iInstr)
int muGetMIDIMsgName (char *pName, MidiMessage iMsg)
int muGetControlName (char *pName, MidiControlCommand iCC)
int muGetKeySigName (char *pName, MidiNote iKey)
int muGetTextName (char *pName, MidiTextInfo iEvent)
int muGetMetaName (char *pName, MidiMetaInfo iEvent)
int muGetNoteFromName (const char *pName)
char * muGetNameFromNote (char *pStr, int iNote)
float muGetFreqFromNote (int iNote)
int muGetNoteFromFreq (float fFreq)
int muGuessChord (const int *pNoteStatus, const int channel, const int lowRange, const int highRange)
char * muGetChordName (char *str, int chord)

Macro Definition Documentation

◆ _VAR_CAST

#define _VAR_CAST   MidiFileInternal *pMF = (MidiFileInternal *)_pMF

Definition at line 93 of file midi.c.

◆ DT_DEF

#define DT_DEF   32

Definition at line 78 of file midi.c.

◆ IsChannelValid

#define IsChannelValid ( _x)
Value:
((_x)>=1 && (_x)<=16)

Definition at line 96 of file midi.c.

◆ IsFilePtrValid

#define IsFilePtrValid ( pMF)
Value:
(pMF)

Definition at line 94 of file midi.c.

◆ IsMessageValid

#define IsMessageValid ( _x)
Value:
@ messageMetaEvent
Definition midi.h:44
@ messageNoteOff
Definition midi.h:37

Definition at line 98 of file midi.c.

◆ IsNoteValid

#define IsNoteValid ( _x)
Value:
((_x)>=0 && (_x)<128)

Definition at line 97 of file midi.c.

◆ IsTrackValid

#define IsTrackValid ( _x)
Value:
(_midiValidateTrack(pMF, _x))

Definition at line 95 of file midi.c.

◆ SWAP_DWORD

#define SWAP_DWORD ( d)
Value:
(DWORD)((d)>>24)|(((d)>>8)&0xff00)|(((d)<<8)&0xff0000)|(((d)<<24))
uint32_t DWORD
Definition midi.h:588

Definition at line 90 of file midi.c.

◆ SWAP_WORD

#define SWAP_WORD ( w)
Value:
(WORD)(((w)>>8)|((w)<<8))
uint16_t WORD
Definition midi.h:587

Definition at line 89 of file midi.c.

Typedef Documentation

◆ MidiFileInternal

◆ MidiFileTrack

typedef struct _MidiFileTrack MidiFileTrack

◆ MidiHeader

typedef struct _MidiHeader MidiHeader

◆ MidiLastNote

typedef struct _MidiLastNote MidiLastNote

Function Documentation

◆ midiFileClose()

int midiFileClose ( MidiFile * _pMF)

Definition at line 515 of file midi.c.

◆ midiFileCreate()

MidiFile * midiFileCreate ( const char * pFilename,
int bOverwriteIfExists )

Definition at line 240 of file midi.c.

◆ midiFileFlushTrack()

int midiFileFlushTrack ( MidiFile * _pMF,
int iTrack,
int bFlushToEnd,
DWORD dwEndTimePos )

Definition at line 433 of file midi.c.

◆ midiFileGetPPQN()

int midiFileGetPPQN ( const MidiFile * _pMF)

Definition at line 319 of file midi.c.

◆ midiFileGetTracksDefaultChannel()

int midiFileGetTracksDefaultChannel ( const MidiFile * _pMF,
int iTrack )

Definition at line 299 of file midi.c.

◆ midiFileGetVersion()

int midiFileGetVersion ( const MidiFile * _pMF)

Definition at line 338 of file midi.c.

◆ midiFileOpen()

MidiFile * midiFileOpen ( const char * pFilename)

Definition at line 345 of file midi.c.

◆ midiFileSetPPQN()

int midiFileSetPPQN ( MidiFile * _pMF,
int PPQN )

Definition at line 308 of file midi.c.

◆ midiFileSetTracksDefaultChannel()

int midiFileSetTracksDefaultChannel ( MidiFile * _pMF,
int iTrack,
int iChannel )

Definition at line 285 of file midi.c.

◆ midiFileSetVersion()

int midiFileSetVersion ( MidiFile * _pMF,
int iVersion )

Definition at line 326 of file midi.c.

◆ midiFileSyncTracks()

int midiFileSyncTracks ( MidiFile * _pMF,
int iTrack1,
int iTrack2 )

Definition at line 496 of file midi.c.

◆ midiReadFreeMessage()

void midiReadFreeMessage ( MidiMessagePayload * pMsg)

Definition at line 1149 of file midi.c.

◆ midiReadGetNextMessage()

int midiReadGetNextMessage ( const MidiFile * _pMF,
int iTrack,
MidiMessagePayload * pMsg )

Definition at line 922 of file midi.c.

◆ midiReadGetNumTracks()

int midiReadGetNumTracks ( const MidiFile * _pMF)

Definition at line 916 of file midi.c.

◆ midiReadInitMessage()

void midiReadInitMessage ( MidiMessagePayload * pMsg)

Definition at line 1142 of file midi.c.

◆ midiSongAddEndSequence()

int midiSongAddEndSequence ( MidiFile * _pMF,
int iTrack )

Definition at line 667 of file midi.c.

◆ midiSongAddKeySig()

int midiSongAddKeySig ( MidiFile * _pMF,
int iTrack,
MidiNote iKey )

Definition at line 627 of file midi.c.

◆ midiSongAddMIDIPort()

int midiSongAddMIDIPort ( MidiFile * _pMF,
int iTrack,
int iPort )

Definition at line 656 of file midi.c.

◆ midiSongAddSimpleTimeSig()

int midiSongAddSimpleTimeSig ( MidiFile * _pMF,
int iTrack,
int iNom,
int iDenom )

Definition at line 607 of file midi.c.

◆ midiSongAddSMPTEOffset()

int midiSongAddSMPTEOffset ( MidiFile * _pMF,
int iTrack,
int iHours,
int iMins,
int iSecs,
int iFrames,
int iFFrames )

Definition at line 586 of file midi.c.

◆ midiSongAddTempo()

int midiSongAddTempo ( MidiFile * _pMF,
int iTrack,
int iTempo )

Definition at line 640 of file midi.c.

◆ midiSongAddTimeSig()

int midiSongAddTimeSig ( MidiFile * _pMF,
int iTrack,
int iNom,
int iDenom,
int iClockInMetroTick,
int iNotated32nds )

Definition at line 612 of file midi.c.

◆ midiTrackAddControlChange()

int midiTrackAddControlChange ( MidiFile * pMF,
int iTrack,
MidiControlCommand iCCType,
int iParam )

Definition at line 755 of file midi.c.

◆ midiTrackAddMsg()

int midiTrackAddMsg ( MidiFile * _pMF,
int iTrack,
MidiMessage iMsg,
int iParam1,
int iParam2 )

Definition at line 778 of file midi.c.

◆ midiTrackAddNote()

int midiTrackAddNote ( MidiFile * _pMF,
int iTrack,
int iNote,
int iLength,
int iVol,
int bAutoInc,
int bOverrideLength )

Definition at line 812 of file midi.c.

◆ midiTrackAddProgramChange()

int midiTrackAddProgramChange ( MidiFile * pMF,
int iTrack,
int iInstrPatch )

Definition at line 760 of file midi.c.

◆ midiTrackAddRaw()

int midiTrackAddRaw ( MidiFile * _pMF,
int iTrack,
int data_sz,
const BYTE * pData,
int bMovePtr,
int dt )

Definition at line 678 of file midi.c.

◆ midiTrackAddRest()

int midiTrackAddRest ( MidiFile * _pMF,
int iTrack,
int iLength,
int bOverridePPQN )

Definition at line 862 of file midi.c.

◆ midiTrackAddText()

int midiTrackAddText ( MidiFile * _pMF,
int iTrack,
MidiTextInfo iType,
const char * pTxt )

Definition at line 724 of file midi.c.

◆ midiTrackChangeKeyPressure()

int midiTrackChangeKeyPressure ( MidiFile * pMF,
int iTrack,
int iDeltaPressure )

Definition at line 765 of file midi.c.

◆ midiTrackGetEndPos()

int midiTrackGetEndPos ( MidiFile * _pMF,
int iTrack )

Definition at line 872 of file midi.c.

◆ midiTrackIncTime()

int midiTrackIncTime ( MidiFile * _pMF,
int iTrack,
int iDeltaTime,
int bOverridePPQN )

Definition at line 708 of file midi.c.

◆ midiTrackSetKeyPressure()

int midiTrackSetKeyPressure ( MidiFile * pMF,
int iTrack,
int iNote,
int iAftertouch )

Definition at line 750 of file midi.c.

◆ midiTrackSetPitchWheel()

int midiTrackSetPitchWheel ( MidiFile * pMF,
int iTrack,
int iWheelPos )

Definition at line 770 of file midi.c.

◆ muGetChordName()

char * muGetChordName ( char * str,
int chord )

Definition at line 1794 of file midi.c.

◆ muGetControlName()

int muGetControlName ( char * pName,
MidiControlCommand iCC )

Definition at line 1578 of file midi.c.

◆ muGetDrumName()

int muGetDrumName ( char * pName,
int iInstr )

Definition at line 1520 of file midi.c.

◆ muGetFreqFromNote()

float muGetFreqFromNote ( int iNote)

Definition at line 1677 of file midi.c.

◆ muGetInstrumentName()

int muGetInstrumentName ( char * pName,
int iInstr )

Definition at line 1512 of file midi.c.

◆ muGetKeySigName()

int muGetKeySigName ( char * pName,
MidiNote iKey )

Definition at line 1586 of file midi.c.

◆ muGetMetaName()

int muGetMetaName ( char * pName,
MidiMetaInfo iEvent )

Definition at line 1608 of file midi.c.

◆ muGetMIDIMsgName()

int muGetMIDIMsgName ( char * pName,
MidiMessage iMsg )

Definition at line 1528 of file midi.c.

◆ muGetNameFromNote()

char * muGetNameFromNote ( char * pStr,
int iNote )

Definition at line 1665 of file midi.c.

◆ muGetNoteFromFreq()

int muGetNoteFromFreq ( float fFreq)

Definition at line 1695 of file midi.c.

◆ muGetNoteFromName()

int muGetNoteFromName ( const char * pName)

Definition at line 1633 of file midi.c.

◆ muGetTextName()

int muGetTextName ( char * pName,
MidiTextInfo iEvent )

Definition at line 1602 of file midi.c.

◆ muGuessChord()

int muGuessChord ( const int * pNoteStatus,
const int channel,
const int lowRange,
const int highRange )

Definition at line 1715 of file midi.c.

◆ strcopy()

char * strcopy ( char * _dest,
const char * _source )