Subversion Repositories svn.mios32

Rev

Rev 78 | Rev 89 | 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 80 2008-10-13 23:26:38Z 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
 
78 tk 21
// the default MIDI port for MIDI output
22
#ifndef MIOS32_MIDI_DEFAULT_PORT
23
#define MIOS32_MIDI_DEFAULT_PORT USB0
24
#endif
33 tk 25
 
78 tk 26
 
69 tk 27
/////////////////////////////////////////////////////////////////////////////
28
// Global Types
29
/////////////////////////////////////////////////////////////////////////////
33 tk 30
 
31
 
69 tk 32
typedef enum {
78 tk 33
  DEFAULT = 0x00,
33 tk 34
 
78 tk 35
  USB0 = 0x10,
36
  USB1 = 0x11,
37
  USB2 = 0x12,
38
  USB3 = 0x13,
39
  USB4 = 0x14,
40
  USB5 = 0x15,
41
  USB6 = 0x16,
42
  USB7 = 0x17,
32 tk 43
 
44
 
78 tk 45
  UART0 = 0x20,
46
  UART1 = 0x21,
47
 
48
  IIC0 = 0x30,
49
  IIC1 = 0x31,
50
  IIC2 = 0x32,
51
  IIC3 = 0x33,
52
  IIC4 = 0x34,
53
  IIC5 = 0x35,
54
  IIC6 = 0x36,
55
  IIC7 = 0x37
69 tk 56
} mios32_midi_port_t;
32 tk 57
 
58
 
69 tk 59
typedef enum {
60
  NoteOff       = 0x8,
61
  NoteOn        = 0x9,
62
  PolyPressure  = 0xa,
63
  CC            = 0xb,
64
  ProgramChange = 0xc,
65
  Aftertouch    = 0xd,
66
  PitchBend     = 0xe
67
} mios32_midi_event_t;
32 tk 68
 
69 tk 69
 
70
typedef enum {
71
  Chn1,
72
  Chn2,
73
  Chn3,
74
  Chn4,
75
  Chn5,
76
  Chn6,
77
  Chn7,
78
  Chn8,
79
  Chn9,
80
  Chn10,
81
  Chn11,
82
  Chn12,
83
  Chn13,
84
  Chn14,
85
  Chn15,
86
  Chn16
87
} mios32_midi_chn_t;
88
 
89
 
32 tk 90
typedef union {
91
  struct {
92
    unsigned ALL:32;
93
  };
94
  struct {
33 tk 95
    unsigned type:8;
32 tk 96
    unsigned evnt0:8;
97
    unsigned evnt1:8;
98
    unsigned evnt2:8;
99
  };
69 tk 100
  struct {
101
    unsigned cin:4;
102
    unsigned cable:4;
103
    mios32_midi_chn_t chn:4;
104
    mios32_midi_event_t event:4;
105
    unsigned value1:8;
106
    unsigned value2:8;
107
  };
108
  struct {
109
    unsigned cin:4;
110
    unsigned cable:4;
111
    mios32_midi_chn_t chn:4;
112
    mios32_midi_event_t event:4;
113
    unsigned note:8;
114
    unsigned velocity:8;
115
  };
116
  struct {
117
    unsigned cin:4;
118
    unsigned cable:4;
119
    mios32_midi_chn_t chn:4;
120
    mios32_midi_event_t event:4;
121
    unsigned cc_number:8;
122
    unsigned value:8;
123
  };
124
  struct {
125
    unsigned cin:4;
126
    unsigned cable:4;
127
    mios32_midi_chn_t chn:4;
128
    mios32_midi_event_t event:4;
129
    unsigned program_change:8;
130
    unsigned dummy:8;
131
  };
33 tk 132
} mios32_midi_package_t;
32 tk 133
 
134
 
135
/////////////////////////////////////////////////////////////////////////////
136
// Prototypes
137
/////////////////////////////////////////////////////////////////////////////
138
 
139
extern s32 MIOS32_MIDI_Init(u32 mode);
140
 
78 tk 141
extern s32 MIOS32_MIDI_CheckAvailable(mios32_midi_port_t port);
142
 
69 tk 143
extern s32 MIOS32_MIDI_SendPackage(mios32_midi_port_t port, mios32_midi_package_t package);
32 tk 144
 
69 tk 145
extern s32 MIOS32_MIDI_SendEvent(mios32_midi_port_t port, u8 evnt0, u8 evnt1, u8 evnt2);
146
extern s32 MIOS32_MIDI_SendNoteOff(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 note, u8 vel);
147
extern s32 MIOS32_MIDI_SendNoteOn(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 note, u8 vel);
148
extern s32 MIOS32_MIDI_SendPolyPressure(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 note, u8 val);
149
extern s32 MIOS32_MIDI_SendPolyPressure(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 note, u8 val);
150
extern s32 MIOS32_MIDI_SendProgramChange(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 prg);
151
extern s32 MIOS32_MIDI_SendAftertouch(mios32_midi_port_t port, mios32_midi_chn_t chn, u8 val);
152
extern s32 MIOS32_MIDI_SendPitchBend(mios32_midi_port_t port, mios32_midi_chn_t chn, u16 val);
153
 
154
extern s32 MIOS32_MIDI_SendSysEx(mios32_midi_port_t port, u8 *stream, u32 count);
155
extern s32 MIOS32_MIDI_SendMTC(mios32_midi_port_t port, u8 val);
156
extern s32 MIOS32_MIDI_SendSongPosition(mios32_midi_port_t port, u16 val);
157
extern s32 MIOS32_MIDI_SendSongSelect(mios32_midi_port_t port, u8 val);
158
extern s32 MIOS32_MIDI_SendTuneRequest(mios32_midi_port_t port);
159
extern s32 MIOS32_MIDI_SendClock(mios32_midi_port_t port);
160
extern s32 MIOS32_MIDI_SendTick(mios32_midi_port_t port);
161
extern s32 MIOS32_MIDI_SendStart(mios32_midi_port_t port);
162
extern s32 MIOS32_MIDI_SendStop(mios32_midi_port_t port);
163
extern s32 MIOS32_MIDI_SendContinue(mios32_midi_port_t port);
164
extern s32 MIOS32_MIDI_SendActiveSense(mios32_midi_port_t port);
165
extern s32 MIOS32_MIDI_SendReset(mios32_midi_port_t port);
166
 
167
 
33 tk 168
extern s32 MIOS32_MIDI_Receive_Handler(void *callback_event, void *callback_sysex);
32 tk 169
 
33 tk 170
 
32 tk 171
/////////////////////////////////////////////////////////////////////////////
172
// Export global variables
173
/////////////////////////////////////////////////////////////////////////////
174
 
80 tk 175
extern const u8 mios32_midi_pcktype_num_bytes[16];
32 tk 176
 
177
 
178
#endif /* _MIOS32_MIDI_H */