mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-18 01:15:26 +00:00
ALSA MIDI fixes
This commit is contained in:
@@ -76,6 +76,9 @@ struct IAudioVoiceEngine
|
||||
/** Get list of MIDI input devices found on system */
|
||||
virtual std::vector<std::pair<std::string, std::string>> enumerateMIDIInputs() const=0;
|
||||
|
||||
/** Query if system supports creating a virtual MIDI input */
|
||||
virtual bool supportsVirtualMIDIIn() const=0;
|
||||
|
||||
/** Create ad-hoc MIDI in port and register with system */
|
||||
virtual std::unique_ptr<IMIDIIn> newVirtualMIDIIn(ReceiveFunctor&& receiver)=0;
|
||||
|
||||
|
||||
@@ -8,18 +8,20 @@
|
||||
|
||||
namespace boo
|
||||
{
|
||||
|
||||
struct IAudioVoiceEngine;
|
||||
using ReceiveFunctor = std::function<void(std::vector<uint8_t>&&, double time)>;
|
||||
|
||||
class IMIDIPort
|
||||
{
|
||||
bool m_virtual;
|
||||
protected:
|
||||
IMIDIPort(bool virt) : m_virtual(virt) {}
|
||||
IAudioVoiceEngine* m_parent;
|
||||
IMIDIPort(IAudioVoiceEngine* parent, bool virt) : m_virtual(virt), m_parent(parent) {}
|
||||
public:
|
||||
virtual ~IMIDIPort();
|
||||
bool isVirtual() const {return m_virtual;}
|
||||
virtual std::string description() const=0;
|
||||
void _disown() { m_parent = nullptr; }
|
||||
};
|
||||
|
||||
class IMIDIReceiver
|
||||
@@ -32,8 +34,8 @@ public:
|
||||
class IMIDIIn : public IMIDIPort, public IMIDIReceiver
|
||||
{
|
||||
protected:
|
||||
IMIDIIn(bool virt, ReceiveFunctor&& receiver)
|
||||
: IMIDIPort(virt), IMIDIReceiver(std::move(receiver)) {}
|
||||
IMIDIIn(IAudioVoiceEngine* parent, bool virt, ReceiveFunctor&& receiver)
|
||||
: IMIDIPort(parent, virt), IMIDIReceiver(std::move(receiver)) {}
|
||||
public:
|
||||
virtual ~IMIDIIn();
|
||||
};
|
||||
@@ -41,7 +43,7 @@ public:
|
||||
class IMIDIOut : public IMIDIPort
|
||||
{
|
||||
protected:
|
||||
IMIDIOut(bool virt) : IMIDIPort(virt) {}
|
||||
IMIDIOut(IAudioVoiceEngine* parent, bool virt) : IMIDIPort(parent, virt) {}
|
||||
public:
|
||||
virtual ~IMIDIOut();
|
||||
virtual size_t send(const void* buf, size_t len) const=0;
|
||||
@@ -50,8 +52,8 @@ public:
|
||||
class IMIDIInOut : public IMIDIPort, public IMIDIReceiver
|
||||
{
|
||||
protected:
|
||||
IMIDIInOut(bool virt, ReceiveFunctor&& receiver)
|
||||
: IMIDIPort(virt), IMIDIReceiver(std::move(receiver)) {}
|
||||
IMIDIInOut(IAudioVoiceEngine* parent, bool virt, ReceiveFunctor&& receiver)
|
||||
: IMIDIPort(parent, virt), IMIDIReceiver(std::move(receiver)) {}
|
||||
public:
|
||||
virtual ~IMIDIInOut();
|
||||
virtual size_t send(const void* buf, size_t len) const=0;
|
||||
|
||||
Reference in New Issue
Block a user