diff --git a/raveloxmidi/configure.ac b/raveloxmidi/configure.ac index a0b7b4d..f15b3d8 100755 --- a/raveloxmidi/configure.ac +++ b/raveloxmidi/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([raveloxmidi],[0.7.8]) +AC_INIT([raveloxmidi],[0.7.99]) AC_CANONICAL_HOST AC_CANONICAL_BUILD AC_CANONICAL_TARGET diff --git a/raveloxmidi/include/net_distribute.h b/raveloxmidi/include/net_distribute.h index 2840245..6b3f618 100644 --- a/raveloxmidi/include/net_distribute.h +++ b/raveloxmidi/include/net_distribute.h @@ -21,6 +21,6 @@ #ifndef _NET_DISTRIBUTE_H #define _NET_DISTRIBUTE_H -void net_distribute_midi( unsigned char *packet, size_t recv_len ); +void net_distribute_midi( unsigned char *packet, size_t recv_len, char first_byte_ignore ); #endif diff --git a/raveloxmidi/src/net_distribute.c b/raveloxmidi/src/net_distribute.c index 8f8a548..380fb11 100644 --- a/raveloxmidi/src/net_distribute.c +++ b/raveloxmidi/src/net_distribute.c @@ -63,11 +63,12 @@ extern int errno; #include "raveloxmidi_alsa.h" /* Send MIDI commands to all connections */ -void net_distribute_midi( unsigned char *packet, size_t recv_len ) +void net_distribute_midi( unsigned char *packet, size_t recv_len, char first_byte_ignore ) { rtp_packet_t *rtp_packet = NULL; unsigned char *packed_rtp_buffer = NULL; size_t packed_rtp_buffer_len = 0; + char offset = 0; midi_note_t *midi_note = NULL; midi_control_t *midi_control = NULL; @@ -87,11 +88,12 @@ void net_distribute_midi( unsigned char *packet, size_t recv_len ) enum midi_message_type_t message_type = 0; size_t midi_payload_len = 0; + offset = ( first_byte_ignore ? 1 : 0 ); // Convert the buffer into a set of commands - midi_payload_len = recv_len - 1; + midi_payload_len = recv_len - offset; initial_midi_payload = midi_payload_create(); - midi_payload_set_buffer( initial_midi_payload, packet + 1 , &midi_payload_len ); + midi_payload_set_buffer( initial_midi_payload, packet + offset , &midi_payload_len ); midi_payload_to_commands( initial_midi_payload, MIDI_PAYLOAD_STREAM, &midi_commands, &num_midi_commands ); midi_payload_destroy( &initial_midi_payload ); diff --git a/raveloxmidi/src/net_socket.c b/raveloxmidi/src/net_socket.c index 3e488ac..050a2dd 100644 --- a/raveloxmidi/src/net_socket.c +++ b/raveloxmidi/src/net_socket.c @@ -341,7 +341,7 @@ int net_socket_read( int fd ) #endif // MIDI data on internal socket or ALSA rawmidi device { - net_distribute_midi( read_buffer, read_buffer_size ); + net_distribute_midi( read_buffer, read_buffer_size , (fd==RAVELOXMIDI_ALSA_INPUT) ); } else { // RTP MIDI inbound from remote socket rtp_packet_t *rtp_packet = NULL; diff --git a/raveloxmidi/src/raveloxmidi_alsa.c b/raveloxmidi/src/raveloxmidi_alsa.c index d97afcd..27acc6e 100644 --- a/raveloxmidi/src/raveloxmidi_alsa.c +++ b/raveloxmidi/src/raveloxmidi_alsa.c @@ -173,14 +173,7 @@ int raveloxmidi_alsa_read( unsigned char *buffer, size_t buffer_size ) if( input_handle ) { - bytes_read = snd_rawmidi_read( input_handle, buffer + 1, buffer_size - 1 ); - - if( bytes_read > 0 ) - { - // Add fake 0xaa identifier for origin identifier - buffer[0] = 0xaa; - bytes_read++; - } + bytes_read = snd_rawmidi_read( input_handle, buffer, buffer_size ); } return bytes_read;