diff options
Diffstat (limited to 'backends/winmidi.h')
| -rw-r--r-- | backends/winmidi.h | 22 | 
1 files changed, 18 insertions, 4 deletions
diff --git a/backends/winmidi.h b/backends/winmidi.h index 4c740ea..40b3554 100644 --- a/backends/winmidi.h +++ b/backends/winmidi.h @@ -10,9 +10,20 @@ static int winmidi_handle(size_t num, managed_fd* fds);  static int winmidi_start(size_t n, instance** inst);  static int winmidi_shutdown(size_t n, instance** inst); +#define EPN_NRPN 8 +#define EPN_PARAMETER_HI 4 +#define EPN_PARAMETER_LO 2 +#define EPN_VALUE_HI 1 +  typedef struct /*_winmidi_instance_data*/ {  	char* read;  	char* write; +	 +	uint8_t epn_tx_short; +	uint16_t epn_control[16]; +	uint16_t epn_value[16]; +	uint8_t epn_status[16]; +  	HMIDIIN device_in;  	HMIDIOUT device_out;  } winmidi_instance_data; @@ -20,18 +31,21 @@ typedef struct /*_winmidi_instance_data*/ {  enum /*_winmidi_channel_type*/ {  	none = 0,  	note = 0x90, -	cc = 0xB0,  	pressure = 0xA0, +	cc = 0xB0, +	program = 0xC0,  	aftertouch = 0xD0, -	pitchbend = 0xE0 +	pitchbend = 0xE0, +	rpn = 0xF1, +	nrpn = 0xF2  };  typedef union {  	struct { -		uint8_t pad[5]; +		uint8_t pad[4];  		uint8_t type;  		uint8_t channel; -		uint8_t control; +		uint16_t control;  	} fields;  	uint64_t label;  } winmidi_channel_ident;  | 
