summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/evoral/src/Sequence.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/libs/evoral/src/Sequence.cpp b/libs/evoral/src/Sequence.cpp
index 00ae5d5cfa..0ca0537ac9 100644
--- a/libs/evoral/src/Sequence.cpp
+++ b/libs/evoral/src/Sequence.cpp
@@ -25,6 +25,7 @@
#include <cstdio>
#include "pbd/compose.h"
+#include "pbd/error.h"
#include "evoral/Control.hpp"
#include "evoral/ControlList.hpp"
@@ -35,6 +36,8 @@
#include "evoral/TypeMap.hpp"
#include "evoral/midi_util.h"
+#include "i18n.h"
+
using namespace std;
using namespace PBD;
@@ -874,10 +877,17 @@ Sequence<Time>::append_note_on_unlocked (NotePtr note, event_id_t evid)
DEBUG_TRACE (DEBUG::Sequence, string_compose ("%1 c=%2 note %3 on @ %4 v=%5\n", this,
(int) note->channel(), (int) note->note(),
note->time(), (int) note->velocity()));
- assert(note->note() <= 127);
- assert(note->channel() < 16);
assert(_writing);
+ if (note->note() > 127) {
+ error << string_compose (_("illegal note number (%1) used in Note event - event will be ignored"), note->note()) << endmsg;
+ return;
+ }
+ if (note->channel() >= 16) {
+ error << string_compose (_("illegal channel number (%1) used in Note event - event will be ignored"), note->channel()) << endmsg;
+ return;
+ }
+
if (note->id() < 0) {
note->set_id (evid);
}