summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac41
-rw-r--r--drumgizmo/input/ossmidi.cc50
-rw-r--r--drumgizmo/input/ossmidi.h25
3 files changed, 114 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 7d67a22..f323db2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -359,7 +359,44 @@ AS_IF(
have_input_midifile=no]
)
- INPUT_PLUGINS="midifile jackmidi dummy test"
+ dnl *** oss
+ case $host_os in
+ freebsd*)
+ enable_oss_midi_value=yes
+ ;;
+ *)
+ enable_oss_midi_value=no
+ ;;
+ esac
+ AC_ARG_ENABLE([input_oss],
+ AS_HELP_STRING(
+ [--disable-input-oss],
+ [Disable input oss plugin [enabled by default on FreeBSD, disabled otherwise]]),,
+ [enable_input_ossmidi=$enable_oss_midi_value]
+ )
+
+ AS_IF(
+ [test "x$enable_input_ossmidi" = "xyes"],
+ [AC_MSG_CHECKING(for OSS in)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include <sys/soundcard.h>
+ #ifndef AFMT_S32_NE
+ # error no oss
+ #endif
+ ]])],
+ [
+ have_input_ossmidi=yes
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_FAILURE([no OSS headers found])]
+ )],
+
+ [AC_MSG_RESULT([*** input ossmidi plugin disabled per user request ***])
+ have_input_ossmidi=no]
+ )
+
+ INPUT_PLUGINS="midifile jackmidi dummy test ossmidi"
AC_SUBST(INPUT_PLUGINS)
dnl ***
@@ -441,7 +478,7 @@ AS_IF(
AS_IF(
[test "x$enable_output_oss" = "xyes"],
- [AC_MSG_CHECKING(for OSS)
+ [AC_MSG_CHECKING(for OSS out)
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[
#include <sys/soundcard.h>
diff --git a/drumgizmo/input/ossmidi.cc b/drumgizmo/input/ossmidi.cc
index 16c2e2d..024415e 100644
--- a/drumgizmo/input/ossmidi.cc
+++ b/drumgizmo/input/ossmidi.cc
@@ -25,4 +25,54 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#include "ossmidi.h"
+#include <iostream>
+
+
+OSSInputEngine::OSSInputEngine()
+{
+}
+
+OSSInputEngine::~OSSInputEngine()
+{
+}
+
+bool OSSInputEngine::init(const Instruments& instruments)
+{
+ return true;
+}
+
+void OSSInputEngine::setParm(const std::string& parm, const std::string& value)
+{
+ if(parm == "dev")
+ {
+ dev = value;
+ std::cout << "dev = " << dev << std::endl;
+ }
+}
+
+bool OSSInputEngine::start()
+{
+ return true;
+}
+
+void OSSInputEngine::stop()
+{
+}
+
+void OSSInputEngine::pre()
+{
+}
+
+void OSSInputEngine::run(size_t pos, size_t len, std::vector<event_t>& events)
+{
+}
+
+void OSSInputEngine::post()
+{
+}
+
+bool OSSInputEngine::isFreewheeling() const
+{
+ return false;
+}
diff --git a/drumgizmo/input/ossmidi.h b/drumgizmo/input/ossmidi.h
index a5f64b6..41cfb2b 100644
--- a/drumgizmo/input/ossmidi.h
+++ b/drumgizmo/input/ossmidi.h
@@ -25,3 +25,28 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#pragma once
+#include <audioinputengine.h>
+
+class OSSInputEngine
+ : public AudioInputEngine
+{
+public:
+ OSSInputEngine();
+ ~OSSInputEngine();
+
+ // based on AudioInputEngine
+ bool init(const Instruments& instruments) override;
+ void setParm(const std::string& parm, const std::string& value) override;
+ bool start() override;
+ void stop() override;
+ void pre() override;
+ void run(size_t pos, size_t len, std::vector<event_t>& events) override;
+ void post() override;
+ bool isFreewheeling() const override;
+
+private:
+ std::string dev;
+ int fd;
+ std::size_t pos;
+ std::vector<event_t> events;
+};