avr: Fix documentation for Bus
[avr-sim.git] / test / midi.h
blob973c7a51a9c00a9ddf317a7d6a81ca8f3bef99e0
1 #ifndef MIDI_H
2 #define MIDI_H
4 #include <stdint.h>
6 // midi channel messages
7 #define MIDI_IGNORE 0x0 // ignore running status
8 #define MIDI_NOTE_ON 0x9
9 #define MIDI_NOTE_OFF 0x8
10 #define MIDI_PITCHBEND 0xE
11 #define MIDI_AFTERTOUCH 0xA
12 #define MIDI_CHANPRESSURE 0xD
13 #define MIDI_CONTROLLER 0xB
14 #define MIDI_PROGRAMCHANGE 0xC
16 #define MIDI_ALL_NOTES_OFF 123
18 // system messages
19 #define MIDI_START 0xFA
20 #define MIDI_CONTINUE 0xFB
21 #define MIDI_STOP 0xFC
22 #define MIDI_CLOCK 0xF8
24 // SYSEX ID
25 #define MD_SYSEX_START 0xF0
26 #define MD_SYSEX_END 0xF7
28 // MIDI manufacturer ID
29 #define MD_MF_ID_1 0x00
30 #define MD_MF_ID_2 0x20
31 #define MD_MF_ID_3 0x64
33 // model number
34 #define MD_SYNTH_ID 0x01
36 extern int midi_putchar(uint8_t c);
37 extern int midi_getch(void);
38 extern int midi_getchar(void);
40 extern void midi_init(void);
41 extern uint8_t midi_readchannel(void);
42 extern void midi_handle(void);
44 #define midi_note_off(chan, note, velocity) midi_send(MIDI_NOTE_OFF<<4, chan, note, velocity)
45 #define midi_note_on(chan, note, velocity) midi_send(MIDI_NOTE_ON<<4, chan, note, velocity)
46 extern void midi_send(uint8_t status, uint8_t chan, uint8_t data, uint8_t data2);
48 extern uint8_t midi_recv_cmd(void);
50 extern void midi_stop(void);
51 extern void midi_notesoff(void);
53 // Sysex
54 extern void sysex_start(uint8_t command);
55 extern void sysex_data(uint8_t data);
56 extern void sysex_end(void);
57 #endif