diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-08-06 22:22:35 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-08-06 22:22:35 +0000 |
commit | 8164a0992d005659fe4cce1dce12f6464438f371 (patch) | |
tree | 5f1a95ee980d5f08f80dd1843275c98ed69b9a39 /libs/midi++2/jack_midiport.cc | |
parent | 6954080ce18e0eee08361c02b1f25bd4512e9d90 (diff) |
* fixed JACK_MidiPort to get the events into the slave
git-svn-id: svn://localhost/ardour2/branches/3.0@3662 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2/jack_midiport.cc')
-rw-r--r-- | libs/midi++2/jack_midiport.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/libs/midi++2/jack_midiport.cc b/libs/midi++2/jack_midiport.cc index 0b49517212..5b9fb79a4f 100644 --- a/libs/midi++2/jack_midiport.cc +++ b/libs/midi++2/jack_midiport.cc @@ -60,9 +60,29 @@ JACK_MidiPort::cycle_start (nframes_t nframes) _last_read_index = 0; _last_write_timestamp = 0; + // output void *buffer = jack_port_get_buffer (_jack_output_port, nframes); jack_midi_clear_buffer (buffer); flush (buffer); + + // input + void* jack_buffer = jack_port_get_buffer(_jack_input_port, nframes); + const nframes_t event_count = jack_midi_get_event_count(jack_buffer); + + jack_midi_event_t ev; + + for (nframes_t i=0; i < event_count; ++i) { + + jack_midi_event_get (&ev, jack_buffer, i); + + if (input_parser) { + input_parser->raw_preparse (*input_parser, ev.buffer, ev.size); + for (size_t i = 0; i < ev.size; i++) { + input_parser->scanner (ev.buffer[i]); + } + input_parser->raw_postparse (*input_parser, ev.buffer, ev.size); + } + } } int @@ -170,7 +190,7 @@ JACK_MidiPort::read(byte * buf, size_t bufsize) { assert(_currently_in_cycle); assert(_jack_input_port); - + jack_midi_event_t ev; int err = jack_midi_event_get (&ev, |