1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
//
// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: 18 December 1997
// Last Modified: Mon Jan 26 23:53:05 GMT-0800 1998
// Last Modified: Sat Jan 30 14:00:29 PST 1999
// Last Modified: Sun Jul 18 18:52:42 PDT 1999 (added RPN functions)
// Filename: ...sig/maint/code/control/MidiOutput/MidiOutput.h
// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiOutput.h
// Syntax: C++
//
// Description: The MIDI output interface for MIDI synthesizers/equipment
// which has many convienience functions defined for
// various types of MIDI output.
//
#ifndef _MIDIOUTPUT_H_INCLUDED
#define _MIDIOUTPUT_H_INCLUDED
#include "MidiOutPort.h"
#include "FileIO.h"
#include "SigTimer.h"
#include "Array.h"
class MidiOutput : public MidiOutPort {
public:
MidiOutput (void);
MidiOutput (int aPort, int autoOpen = 1);
~MidiOutput ();
// Basic user MIDI output commands:
int cont (int channel, int controller, int data);
int off (int channel, int keynum, int releaseVelocity);
int pc (int channel, int timbre);
int play (int channel, int keynum, int velocity);
int pw (int channel, int mostByte, int leastByte);
int pw (int channel, int tuningData);
int pw (int channel, double tuningData);
void recordStart (char *filename, int format);
void recordStop (void);
void reset (void);
int send (int command, int p1, int p2);
int send (int command, int p1);
int send (int command);
void silence (int aChannel = -1);
void sustain (int channel, int status);
int sysex (char* data, int length);
int sysex (uchar* data, int length);
protected:
int outputRecordQ; // boolean for recording
int outputRecordType; // what form to record MIDI data in
int lastFlushTime; // for recording midi data
FileIO outputRecordFile; // file for recording midi data
static SigTimer timer; // for recording midi data
static Array<int>* rpn_lsb_status; // for RPN messages
static Array<int>* rpn_msb_status; // for RPN messages
static int objectCount; // for RPN messages
void deinitializeRPN (void);
void initializeRPN (void);
void writeOutputAscii (int channel, int p1, int p2);
void writeOutputBinary (int channel, int p1, int p2);
void writeOutputMidifile(int channel, int p1, int p2);
public: // RPN controller functions
int NRPN (int channel, int nrpn_msb, int nrpn_lsb,
int data_msb, int data_lsb);
int NRPN (int channel, int nrpn_msb, int nrpn_lsb,
int data_msb);
int NRPN (int channel, int nrpn_msb, int nrpn_lsb,
double data);
int NRPN_null (int channel);
int NRPN_attack (int channel, double value);
int NRPN_attack (int channel, int value);
int NRPN_decay (int channel, double value);
int NRPN_decay (int channel, int value);
int NRPN_drumAttack (int drum, double value);
int NRPN_drumAttack (int drum, int value);
int NRPN_drumChorus (int drum, double value);
int NRPN_drumChorus (int drum, int value);
int NRPN_drumDecay (int drum, double value);
int NRPN_drumDecay (int drum, int value);
int NRPN_drumLevel (int drum, double value);
int NRPN_drumLevel (int drum, int value);
int NRPN_drumPan (int drum, double value);
int NRPN_drumPan (int drum, int value);
int NRPN_drumPitch (int drum, double value);
int NRPN_drumPitch (int drum, int value);
int NRPN_drumFilterCutoff (int drum, double value);
int NRPN_drumFilterCutoff (int drum, int value);
int NRPN_drumFilterResonance(int drum, double value);
int NRPN_drumFilterResonance(int drum, int value);
int NRPN_drumReverb (int drum, double value);
int NRPN_drumReverb (int drum, int value);
int NRPN_drumVariation (int drum, double value);
int NRPN_drumVariation (int drum, int value);
int NRPN_filterCutoff (int channel, double value);
int NRPN_filterCutoff (int channel, int value);
int NRPN_release (int channel, double value);
int NRPN_release (int channel, int value);
int NRPN_vibratoDelay (int channel, double value);
int NRPN_vibratoDelay (int channel, int value);
int NRPN_vibratoDepth (int channel, double value);
int NRPN_vibratoDepth (int channel, int value);
int NRPN_vibratoRate (int channel, double value);
int NRPN_vibratoRate (int channel, int value);
int RPN (int channel, int rpn_msb, int rpn_lsb,
int data_msb, int data_lsb);
int RPN (int channel, int rpn_msb, int rpn_lsb,
int data_msb);
int RPN (int channel, int rpn_msb, int rpn_lsb,
double data);
int RPN_null (void);
int RPN_null (int channel);
int pbRange (int channel, int steps);
int tuneFine (int channel, int cents);
int fineTune (int channel, int cents);
int tuneCoarse (int channel, int steps);
int coarseTune (int channel, int steps);
int tuningProgram (int channel, int program);
int tuningBank (int channel, int bank);
};
#endif /* _MIDIOUTPUT_H_INCLUDED */
// Brief description of MidiOutput public member functions:
//
// send: sends a MIDI command to the MIDI output with up to two parameters
// play: sends a playnote command to the MIDI output
// pc: Patch Change. changes the timbre (instrument) on the given channel
// cont: sends a CONTinuous CONTroller MIDI command
// sysex: sends a system exclusive command to the MIDI output
//
// md5sum: 12ee02c32563ae219aaa8c7599de55db - MidiOutput.h =css= 20030102
|