From 0bf73b59335d917400c18ae9d664226c1a4da4c2 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 28 Nov 2008 01:26:54 +0000 Subject: MIDI learn for note trigger node. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1812 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/MidiTriggerNode.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/engine/MidiTriggerNode.cpp') diff --git a/src/engine/MidiTriggerNode.cpp b/src/engine/MidiTriggerNode.cpp index c68a0b96..0212154a 100644 --- a/src/engine/MidiTriggerNode.cpp +++ b/src/engine/MidiTriggerNode.cpp @@ -34,6 +34,7 @@ namespace Ingen { MidiTriggerNode::MidiTriggerNode(const string& path, bool polyphonic, PatchImpl* parent, SampleRate srate, size_t buffer_size) : NodeBase(new InternalPlugin(NS_INGEN "trigger_node", "trigger", "Trigger"), path, false, parent, srate, buffer_size) + , _learning(false) { _ports = new Raul::Array(5); @@ -106,6 +107,14 @@ MidiTriggerNode::note_on(ProcessContext& context, uchar note_num, uchar velocity { assert(time >= context.start() && time <= context.end()); assert(time - context.start() < _buffer_size); + + if (_learning) { + _note_port->set_value(note_num); + ((AudioBuffer*)_note_port->buffer(0))->set_value( + (float)note_num, context.start(), context.end()); + _note_port->broadcast_value(context, true); + _learning = false; + } /*cerr << "[MidiTriggerNode] " << path() << " Note " << (int)note_num << " on @ " << time << endl;*/ -- cgit v1.2.1