summaryrefslogtreecommitdiff
path: root/src/inputfilter.h
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2016-06-14 21:13:28 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2016-06-14 21:13:28 +0200
commit9453078f2d66fad806ee104e7c6993bba1043c6a (patch)
tree3b1ffe1e7b67c7d626336d835b44203f2c2c6ac5 /src/inputfilter.h
parent1bc07f860fa7f01763586f45b7fb2e53cd1c2557 (diff)
New input processor filter system. Moved processing from Instrument calss to new input processing filter system and prepared for new latency filter.
Diffstat (limited to 'src/inputfilter.h')
-rw-r--r--src/inputfilter.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/inputfilter.h b/src/inputfilter.h
new file mode 100644
index 0000000..26f7294
--- /dev/null
+++ b/src/inputfilter.h
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * inputfilter.h
+ *
+ * Tue Jun 14 20:42:52 CEST 2016
+ * Copyright 2016 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#pragma once
+
+#include <event.h>
+
+//! An abstract filter component for the InputProcessor class filter chain.
+class InputFilter
+{
+public:
+ //! Implement to filter a single event.
+ //! \param[in,out] event The event being processed. The filter method
+ //! might alter any of the event parameters.
+ //! \param pos The absolute position of the buffer in which the event in
+ //! event was received. Add event.pos to it to get the absolute position of
+ //! the event in the stream.
+ //! \return true to keep the event, false to discard it.
+ virtual bool filter(event_t& event, std::size_t pos) = 0;
+
+ //! Returns the filter delay in samples.
+ //! Overload if needed.
+ virtual std::size_t getLatency() const
+ {
+ return 0;
+ }
+};