summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/JackMidiDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/engine/JackMidiDriver.cpp')
-rw-r--r--src/libs/engine/JackMidiDriver.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/libs/engine/JackMidiDriver.cpp b/src/libs/engine/JackMidiDriver.cpp
index f49794d7..730f5d80 100644
--- a/src/libs/engine/JackMidiDriver.cpp
+++ b/src/libs/engine/JackMidiDriver.cpp
@@ -13,7 +13,7 @@
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
+() */
#include <iostream>
#include <cstdlib>
@@ -26,6 +26,7 @@
#include "AudioDriver.hpp"
#include "MidiBuffer.hpp"
#include "DuplexPort.hpp"
+#include "ProcessContext.hpp"
#include "jack_compat.h"
/*#ifdef HAVE_LASH
#include "LashDriver.hpp"
@@ -66,7 +67,7 @@ JackMidiPort::~JackMidiPort()
* This is simple since Jack MIDI is in-band with audio.
*/
void
-JackMidiPort::pre_process(SampleCount block_start, SampleCount block_end)
+JackMidiPort::pre_process(ProcessContext& context)
{
if ( ! is_input() )
return;
@@ -76,11 +77,10 @@ JackMidiPort::pre_process(SampleCount block_start, SampleCount block_end)
MidiBuffer* patch_buf = dynamic_cast<MidiBuffer*>(_patch_port->buffer(0));
assert(patch_buf);
- const SampleCount nframes = block_end - block_start;
- void* jack_buffer = jack_port_get_buffer(_jack_port, nframes);
+ void* jack_buffer = jack_port_get_buffer(_jack_port, context.nframes());
const jack_nframes_t event_count = jack_midi_get_event_count(jack_buffer);
- patch_buf->prepare_write(nframes);
+ patch_buf->prepare_write(context.nframes());
// Copy events from Jack port buffer into patch port buffer
for (jack_nframes_t i=0; i < event_count; ++i) {
@@ -102,7 +102,7 @@ JackMidiPort::pre_process(SampleCount block_start, SampleCount block_end)
* This is simple since Jack MIDI is in-band with audio.
*/
void
-JackMidiPort::post_process(SampleCount block_start, SampleCount block_end)
+JackMidiPort::post_process(ProcessContext& context)
{
if (is_input())
return;
@@ -112,11 +112,10 @@ JackMidiPort::post_process(SampleCount block_start, SampleCount block_end)
MidiBuffer* patch_buf = dynamic_cast<MidiBuffer*>(_patch_port->buffer(0));
assert(patch_buf);
- const SampleCount nframes = block_end - block_start;
- void* jack_buffer = jack_port_get_buffer(_jack_port, nframes);
+ void* jack_buffer = jack_port_get_buffer(_jack_port, context.nframes());
const jack_nframes_t event_count = patch_buf->event_count();
- patch_buf->prepare_read(nframes);
+ patch_buf->prepare_read(context.nframes());
jack_midi_clear_buffer(jack_buffer);
@@ -177,20 +176,20 @@ JackMidiDriver::deactivate()
/** Build flat arrays of events to be used as input for the given cycle.
*/
void
-JackMidiDriver::pre_process(ProcessContext& context, SampleCount nframes, FrameTime start, FrameTime end)
+JackMidiDriver::pre_process(ProcessContext& context)
{
for (Raul::List<JackMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
- (*i)->pre_process(start, end);
+ (*i)->pre_process(context);
}
/** Write the output from any (top-level, exported) MIDI output ports to Jack ports.
*/
void
-JackMidiDriver::post_process(ProcessContext& context, SampleCount nframes, FrameTime start, FrameTime end)
+JackMidiDriver::post_process(ProcessContext& context)
{
for (Raul::List<JackMidiPort*>::iterator i = _out_ports.begin(); i != _out_ports.end(); ++i)
- (*i)->post_process(start, end);
+ (*i)->post_process(context);
}