summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/MidiBuffer.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-02 07:23:56 +0000
committerDavid Robillard <d@drobilla.net>2007-08-02 07:23:56 +0000
commit191b78d09365112a868ddaf3f813ef2b5bc2c252 (patch)
tree48000d7f46c7b7102f1e8f013b72eccd41418abe /src/libs/engine/MidiBuffer.hpp
parenta8ea9db4af11208293543f50392127819c8007cd (diff)
downloadingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.tar.gz
ingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.tar.bz2
ingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.zip
Implement MIDI copying, fixes MIDI patching from patch input -> patch output (fix ticket 70).
git-svn-id: http://svn.drobilla.net/lad/ingen@670 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/MidiBuffer.hpp')
-rw-r--r--src/libs/engine/MidiBuffer.hpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libs/engine/MidiBuffer.hpp b/src/libs/engine/MidiBuffer.hpp
index bf1eacac..dbccd4e8 100644
--- a/src/libs/engine/MidiBuffer.hpp
+++ b/src/libs/engine/MidiBuffer.hpp
@@ -40,6 +40,8 @@ public:
uint32_t this_nframes() const { return _this_nframes; }
+ void copy(const Buffer* src, size_t start_sample, size_t end_sample);
+
inline LV2_MIDI* data()
{ return ((_joined_buf != NULL) ? _joined_buf->data() : _state->midi); }
@@ -49,13 +51,13 @@ public:
inline void clear()
{ assert(_state); assert(_state->midi); lv2midi_reset_buffer(_state->midi); _state->position = 0; }
- inline void reset(SampleCount nframes)
+ inline void reset(SampleCount nframes) const
{ assert(_state); assert(_state->midi); lv2midi_reset_state(_state, _state->midi, nframes); _this_nframes = nframes; }
- inline double increment()
+ inline double increment() const
{ assert(_state); assert(_state->midi); return lv2midi_step(_state); }
- inline double get_event(double* timestamp, uint32_t* size, unsigned char** data)
+ inline double get_event(double* timestamp, uint32_t* size, unsigned char** data) const
{ assert(_state); assert(_state->midi); return lv2midi_get_event(_state, timestamp, size, data); }
inline int put_event(double timestamp, uint32_t size, const unsigned char* data)
@@ -68,7 +70,7 @@ private:
MidiBuffer* _joined_buf; ///< Buffer to mirror, if joined
- uint32_t _this_nframes;
+ mutable uint32_t _this_nframes;
};