Re: [LAD] Segfault when trying to dereference __midi_event.buffer (c++ newbie question)

From: hermann meyer <brummer-@web.de>
Date: Wed Nov 21 2012 - 14:30:12 EET

Am 21.11.2012 13:24, schrieb SxDx:
> ----- Original Message -----
>> From: "Shani Hadiyanto Pribadi"<shanipribadi@email-addr-hidden>
>> jack_midi_event_get(&in_event, midi_buf, event_index);
>> if ((*(in_event.buffer)& 0xf0) == 0x90) // Segfault happens here, on
>> boolean mask operation
>> {
>> _note = *(in_event.buffer + 1);
>> }
> jack_midi_event_get may return ENODATA
> as explained in {wherever}/include/jack/midiport.h
> don't access in_event in that case, there is no data
> _______________________________________________
here is how we access jack_midi in data.

// ----- jack process callback for the midi input
void MidiControllerList::compute_midi_in(void* midi_input_port_buf) {
     jack_midi_event_t in_event;
     jack_nframes_t event_count =
jack_midi_get_event_count(midi_input_port_buf);
     unsigned int i;
     for (i = 0; i < event_count; i++) {
         jack_midi_event_get(&in_event, midi_input_port_buf, i);
         if ((in_event.buffer[0] & 0xf0) == 0xc0) { // program change
on any midi channel
             gx_system::atomic_set(&program_change, in_event.buffer[1]);
             pgm_chg();
         } else if ((in_event.buffer[0] & 0xf0) == 0xb0) { // controller
             set_ctr_val(in_event.buffer[1], in_event.buffer[2]);
         }
     }
}

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Wed Nov 21 16:15:02 2012

This archive was generated by hypermail 2.1.8 : Wed Nov 21 2012 - 16:15:03 EET