summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_scene_change.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-04-28 19:58:24 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-04-28 19:58:24 -0400
commit2cf411e4be0b10e6ecf47d2070963299b6a810e7 (patch)
treec6dfb7e7fcd71d5ee2d4a7c2ba490fb882dde3ca /libs/ardour/ardour/midi_scene_change.h
parentb945cda5582d6565ef2ce4fa8cbafee8fd8e5db0 (diff)
merge (squash) with scenechange topic branch to provide MIDI-driven scene change markers
Diffstat (limited to 'libs/ardour/ardour/midi_scene_change.h')
-rw-r--r--libs/ardour/ardour/midi_scene_change.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_scene_change.h b/libs/ardour/ardour/midi_scene_change.h
new file mode 100644
index 0000000000..86793c57fb
--- /dev/null
+++ b/libs/ardour/ardour/midi_scene_change.h
@@ -0,0 +1,63 @@
+/*
+ Copyright (C) 2014 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef __libardour_midi_scene_change_h__
+#define __libardour_midi_scene_change_h__
+
+#include "evoral/PatchChange.hpp"
+
+#include "ardour/scene_change.h"
+
+namespace ARDOUR
+{
+
+class MidiPort;
+
+class MIDISceneChange : public SceneChange
+{
+ public:
+ MIDISceneChange (framepos_t time, int channel, int bank = -1, int program = -1);
+ MIDISceneChange (const XMLNode&, int version);
+ ~MIDISceneChange ();
+
+ void set_channel (int channel);
+ void set_program (int program);
+ void set_bank (int bank);
+
+ int channel () const { return _channel; }
+ int program () const { return _program; }
+ int bank () const { return _bank; }
+
+ size_t get_bank_msb_message (uint8_t* buf, size_t size) const;
+ size_t get_bank_lsb_message (uint8_t* buf, size_t size) const;
+ size_t get_program_message (uint8_t* buf, size_t size) const;
+
+ XMLNode& get_state();
+ int set_state (const XMLNode&, int version);
+
+ private:
+ int _bank;
+ int _program;
+ uint8_t _channel;
+};
+
+} /* namespace */
+
+
+#endif /* __libardour_scene_change_h__ */