Subversion Repositories svn.mios32

Rev

Rev 32 | Rev 63 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
32 tk 1
// $Id: mios32_midi.h 33 2008-09-18 22:09:55Z tk $
2
/*
3
 * Header file for MIDI layer
4
 *
5
 * ==========================================================================
6
 *
7
 *  Copyright (C) 2008 Thorsten Klose (tk@midibox.org)
8
 *  Licensed for personal non-commercial use only.
9
 *  All other rights reserved.
10
 *
11
 * ==========================================================================
12
 */
13
 
14
#ifndef _MIOS32_MIDI_H
15
#define _MIOS32_MIDI_H
16
 
17
/////////////////////////////////////////////////////////////////////////////
18
// Global definitions
19
/////////////////////////////////////////////////////////////////////////////
20
 
33 tk 21
 
22
// aliases for the MIOS32_MIDI_SendEvent function for more comfortable usage
23
#define MIOS32_MIDI_SendNoteOff(port, chn, note, vel)          MIOS32_MIDI_SendEvent(port, 0x80 | (chn), note, vel)
24
#define MIOS32_MIDI_SendNoteOn(port, chn, note, vel)           MIOS32_MIDI_SendEvent(port, 0x90 | (chn), note, vel)
25
#define MIOS32_MIDI_SendPolyPressure(port, chn, note, val)     MIOS32_MIDI_SendEvent(port, 0xa0 | (chn), note, val)
26
#define MIOS32_MIDI_SendCC(port, chn, cc, val)                 MIOS32_MIDI_SendEvent(port, 0xb0 | (chn), cc,   val)
27
#define MIOS32_MIDI_SendProgramChange(port, chn, prg)          MIOS32_MIDI_SendEvent(port, 0xc0 | (chn), prg,  0x00)
28
#define MIOS32_MIDI_SendAftertouch(port, chn, val)             MIOS32_MIDI_SendEvent(port, 0xd0 | (chn), val,  0x00)
29
#define MIOS32_MIDI_SendPitchBend(port, chn, val)              MIOS32_MIDI_SendEvent(port, 0xe0 | (chn), val & 0x7f, val >> 7)
30
 
31
#define MIOS32_MIDI_SendMTC(port, val)                         MIOS32_MIDI_SendSpecialEvent(port, 0x2, 0xf1, val, 0x00)
32
#define MIOS32_MIDI_SendSongPosition(port, val)                MIOS32_MIDI_SendSpecialEvent(port, 0x3, 0xf2, val & 0x7f, val >> 7)
33
#define MIOS32_MIDI_SendSongSelect(port, val)                  MIOS32_MIDI_SendSpecialEvent(port, 0x2, 0xf3, val, 0x00)
34
#define MIOS32_MIDI_SendTuneRequest(port)                      MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xf6, 0x00, 0x00)
35
#define MIOS32_MIDI_SendClock(port)                            MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xf8, 0x00, 0x00)
36
#define MIOS32_MIDI_SendTick(port)                             MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xf9, 0x00, 0x00)
37
#define MIOS32_MIDI_SendStart(port)                            MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xfa, 0x00, 0x00)
38
#define MIOS32_MIDI_SendStop(port)                             MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xfb, 0x00, 0x00)
39
#define MIOS32_MIDI_SendContinue(port)                         MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xfc, 0x00, 0x00)
40
#define MIOS32_MIDI_SendActiveSense(port)                      MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xfe, 0x00, 0x00)
41
#define MIOS32_MIDI_SendReset(port)                            MIOS32_MIDI_SendSpecialEvent(port, 0x5, 0xff, 0x00, 0x00)
42
 
43
 
44
// MIDI port IDs
32 tk 45
#define MIOS32_MIDI_PORT_USB0         0x00
46
#define MIOS32_MIDI_PORT_USB1         0x01
47
#define MIOS32_MIDI_PORT_USB2         0x02
48
#define MIOS32_MIDI_PORT_USB3         0x03
49
#define MIOS32_MIDI_PORT_USB4         0x04
50
#define MIOS32_MIDI_PORT_USB5         0x05
51
#define MIOS32_MIDI_PORT_USB6         0x06
52
#define MIOS32_MIDI_PORT_USB7         0x07
53
#define MIOS32_MIDI_PORT_USB8         0x08
54
#define MIOS32_MIDI_PORT_USB9         0x09
55
#define MIOS32_MIDI_PORT_USB10        0x0a
56
#define MIOS32_MIDI_PORT_USB11        0x0b
57
#define MIOS32_MIDI_PORT_USB12        0x0c
58
#define MIOS32_MIDI_PORT_USB13        0x0d
59
#define MIOS32_MIDI_PORT_USB14        0x0e
60
#define MIOS32_MIDI_PORT_USB15        0x0f
61
 
62
#define MIOS32_MIDI_PORT_UART0        0x10
63
#define MIOS32_MIDI_PORT_UART1        0x11
64
#define MIOS32_MIDI_PORT_UART2        0x12
65
#define MIOS32_MIDI_PORT_UART3        0x13
66
#define MIOS32_MIDI_PORT_UART4        0x14
67
#define MIOS32_MIDI_PORT_UART5        0x15
68
#define MIOS32_MIDI_PORT_UART6        0x16
69
#define MIOS32_MIDI_PORT_UART7        0x17
70
#define MIOS32_MIDI_PORT_UART8        0x18
71
#define MIOS32_MIDI_PORT_UART9        0x19
72
#define MIOS32_MIDI_PORT_UART10       0x1a
73
#define MIOS32_MIDI_PORT_UART11       0x1b
74
#define MIOS32_MIDI_PORT_UART12       0x1c
75
#define MIOS32_MIDI_PORT_UART13       0x1d
76
#define MIOS32_MIDI_PORT_UART14       0x1e
77
#define MIOS32_MIDI_PORT_UART15       0x1f
78
 
79
#define MIOS32_MIDI_PORT_IIC0         0x20
80
#define MIOS32_MIDI_PORT_IIC1         0x21
81
#define MIOS32_MIDI_PORT_IIC2         0x22
82
#define MIOS32_MIDI_PORT_IIC3         0x23
83
#define MIOS32_MIDI_PORT_IIC4         0x24
84
#define MIOS32_MIDI_PORT_IIC5         0x25
85
#define MIOS32_MIDI_PORT_IIC6         0x26
86
#define MIOS32_MIDI_PORT_IIC7         0x27
87
#define MIOS32_MIDI_PORT_IIC8         0x28
88
#define MIOS32_MIDI_PORT_IIC9         0x29
89
#define MIOS32_MIDI_PORT_IIC10        0x2a
90
#define MIOS32_MIDI_PORT_IIC11        0x2b
91
#define MIOS32_MIDI_PORT_IIC12        0x2c
92
#define MIOS32_MIDI_PORT_IIC13        0x2d
93
#define MIOS32_MIDI_PORT_IIC14        0x2e
94
#define MIOS32_MIDI_PORT_IIC15        0x2f
95
 
96
 
97
/////////////////////////////////////////////////////////////////////////////
98
// Global Types
99
/////////////////////////////////////////////////////////////////////////////
100
 
101
typedef union {
102
  struct {
103
    unsigned ALL:32;
104
  };
105
  struct {
33 tk 106
    unsigned type:8;
32 tk 107
    unsigned evnt0:8;
108
    unsigned evnt1:8;
109
    unsigned evnt2:8;
110
  };
33 tk 111
} mios32_midi_package_t;
32 tk 112
 
113
 
114
/////////////////////////////////////////////////////////////////////////////
115
// Prototypes
116
/////////////////////////////////////////////////////////////////////////////
117
 
118
extern s32 MIOS32_MIDI_Init(u32 mode);
119
 
33 tk 120
extern s32 MIOS32_MIDI_SendPackage(u8 port, mios32_midi_package_t package);
121
extern s32 MIOS32_MIDI_SendEvent(u8 port, u8 evnt0, u8 evnt1, u8 evnt2);
122
extern s32 MIOS32_MIDI_SendSysEx(u8 port, u8 *stream, u32 count);
32 tk 123
 
33 tk 124
extern s32 MIOS32_MIDI_Receive_Handler(void *callback_event, void *callback_sysex);
32 tk 125
 
33 tk 126
 
32 tk 127
/////////////////////////////////////////////////////////////////////////////
128
// Export global variables
129
/////////////////////////////////////////////////////////////////////////////
130
 
131
 
132
 
133
#endif /* _MIOS32_MIDI_H */