mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
The midifile library used by the playmidi1 program dates from 1989, and used pre-ANSI function definitions and prototypes. GCC 15 now defaults to C23 where () means the same as (void) in prototypes, which causes type mismatch errors. Update the code to use ANSI function definitions and prototypes, so it'll compile happily as anything from ANSI C to C23. This revealed that playmidi1's do_tempo had the wrong argument type, so correct that as well. Closes: https://github.com/alsa-project/alsa-lib/pull/463 Signed-off-by: Adam Sampson <ats@offog.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
135 lines
4.6 KiB
C
135 lines
4.6 KiB
C
/* definitions for MIDI file parsing code */
|
|
extern int (*Mf_getc)(void);
|
|
extern void (*Mf_error)(char *s);
|
|
extern void (*Mf_header)(int format, int ntrks, int division);
|
|
extern void (*Mf_trackstart)(void);
|
|
extern void (*Mf_trackend)(void);
|
|
extern void (*Mf_noteon)(int chan, int c1, int c2);
|
|
extern void (*Mf_noteoff)(int chan, int c1, int c2);
|
|
extern void (*Mf_pressure)(int chan, int c1, int c2);
|
|
extern void (*Mf_parameter)(int chan, int c1, int c2);
|
|
extern void (*Mf_pitchbend)(int chan, int c1, int c2);
|
|
extern void (*Mf_program)(int chan, int c1);
|
|
extern void (*Mf_chanpressure)(int chan, int c1);
|
|
extern void (*Mf_sysex)(int len, char *msg);
|
|
extern void (*Mf_arbitrary)(int len, char *msg);
|
|
extern void (*Mf_metamisc)(int type, int len, char *msg);
|
|
extern void (*Mf_seqnum)(int num);
|
|
extern void (*Mf_eot)(void);
|
|
extern void (*Mf_smpte)(char m0, char m1, char m2, char m3, char m4);
|
|
extern void (*Mf_tempo)(long tempo);
|
|
extern void (*Mf_timesig)(char m0, char m1, char m2, char m3);
|
|
extern void (*Mf_keysig)(char m0, char m1);
|
|
extern void (*Mf_seqspecific)(int len, char *msg);
|
|
extern void (*Mf_text)(int type, int len, char *msg);
|
|
extern unsigned long Mf_currtime;
|
|
extern unsigned long Mf_realtime;
|
|
extern unsigned long Mf_currtempo;
|
|
extern int Mf_division;
|
|
extern int Mf_nomerge;
|
|
#ifdef READ_MODS
|
|
extern unsigned char *Mf_file_contents;
|
|
extern int Mf_file_size;
|
|
#endif
|
|
|
|
/* definitions for MIDI file writing code */
|
|
extern int (*Mf_putc)(unsigned char c);
|
|
extern int (*Mf_writetrack)(int track);
|
|
extern int (*Mf_writetempotrack)(void);
|
|
|
|
extern void midifile(void);
|
|
extern unsigned long mf_sec2ticks(double secs, int division,
|
|
unsigned long tempo);
|
|
extern void mfwrite(int format, int ntracks, int division, FILE *fp);
|
|
extern int mf_write_meta_event(unsigned long delta_time, unsigned char type,
|
|
unsigned char *data, unsigned long size);
|
|
extern int mf_write_midi_event(unsigned long delta_time, int type,
|
|
int chan, char *data, unsigned long size);
|
|
extern double mf_ticks2sec(unsigned long ticks, int division,
|
|
unsigned long tempo);
|
|
extern void mf_write_tempo(unsigned long delta_time, unsigned long tempo);
|
|
extern void mf_write_seqnum(unsigned long delta_time, unsigned int seqnum);
|
|
extern void mfread(void);
|
|
extern void mferror(char *s);
|
|
|
|
#ifndef NO_LC_DEFINES
|
|
/* MIDI status commands most significant bit is 1 */
|
|
#define note_off 0x80
|
|
#define note_on 0x90
|
|
#define poly_aftertouch 0xa0
|
|
#define control_change 0xb0
|
|
#define program_chng 0xc0
|
|
#define channel_aftertouch 0xd0
|
|
#define pitch_wheel 0xe0
|
|
#define system_exclusive 0xf0
|
|
#define delay_packet (1111)
|
|
|
|
/* 7 bit controllers */
|
|
#define damper_pedal 0x40
|
|
#define portamento 0x41
|
|
#define sustenuto 0x42
|
|
#define soft_pedal 0x43
|
|
#define general_4 0x44
|
|
#define hold_2 0x45
|
|
#define general_5 0x50
|
|
#define general_6 0x51
|
|
#define general_7 0x52
|
|
#define general_8 0x53
|
|
#ifndef PLAYMIDI
|
|
#define tremolo_depth 0x5c
|
|
#define ctrl_chorus_depth 0x5d
|
|
#define detune 0x5e
|
|
#define phaser_depth 0x5f
|
|
#endif
|
|
|
|
/* parameter values */
|
|
#define data_inc 0x60
|
|
#define data_dec 0x61
|
|
|
|
/* parameter selection */
|
|
#define non_reg_lsb 0x62
|
|
#define non_reg_msb 0x63
|
|
#define reg_lsb 0x64
|
|
#define reg_msb 0x65
|
|
|
|
/* Standard MIDI Files meta event definitions */
|
|
#define meta_event 0xFF
|
|
#define sequence_number 0x00
|
|
#define text_event 0x01
|
|
#define copyright_notice 0x02
|
|
#define sequence_name 0x03
|
|
#define instrument_name 0x04
|
|
#define lyric 0x05
|
|
#define marker 0x06
|
|
#define cue_point 0x07
|
|
#define channel_prefix 0x20
|
|
#define end_of_track 0x2f
|
|
#define set_tempo 0x51
|
|
#define smpte_offset 0x54
|
|
#define time_signature 0x58
|
|
#define key_signature 0x59
|
|
#define sequencer_specific 0x74
|
|
|
|
/* Manufacturer's ID number */
|
|
#define Seq_Circuits (0x01) /* Sequential Circuits Inc. */
|
|
#define Big_Briar (0x02) /* Big Briar Inc. */
|
|
#define Octave (0x03) /* Octave/Plateau */
|
|
#define Moog (0x04) /* Moog Music */
|
|
#define Passport (0x05) /* Passport Designs */
|
|
#define Lexicon (0x06) /* Lexicon */
|
|
#define Tempi (0x20) /* Bon Tempi */
|
|
#define Siel (0x21) /* S.I.E.L. */
|
|
#define Kawai (0x41)
|
|
#define Roland (0x42)
|
|
#define Korg (0x42)
|
|
#define Yamaha (0x43)
|
|
#endif
|
|
|
|
/* miscellaneous definitions */
|
|
#define MThd 0x4d546864
|
|
#define MTrk 0x4d54726b
|
|
|
|
#ifndef NO_LC_DEFINES
|
|
#define lowerbyte(x) ((unsigned char)(x & 0xff))
|
|
#define upperbyte(x) ((unsigned char)((x & 0xff00)>>8))
|
|
#endif
|