mirror of https://github.com/AxioDL/boo.git
Improved MIDI timing interface
This commit is contained in:
parent
521b490d0f
commit
52c0cca593
|
@ -64,6 +64,9 @@ struct IAudioVoiceEngine
|
|||
|
||||
/** Open named MIDI in/out port, name format depends on OS */
|
||||
virtual std::unique_ptr<IMIDIInOut> newRealMIDIInOut(const char* name, ReceiveFunctor&& receiver)=0;
|
||||
|
||||
/** If this returns true, MIDI callbacks are assumed to be *not* thread-safe; need protection via mutex */
|
||||
virtual bool useMIDILock() const=0;
|
||||
};
|
||||
|
||||
/** Construct host platform's voice engine */
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
namespace boo
|
||||
{
|
||||
|
||||
using ReceiveFunctor = std::function<void(std::vector<uint8_t>&&)>;
|
||||
using ReceiveFunctor = std::function<void(std::vector<uint8_t>&&, double time)>;
|
||||
|
||||
class IMIDIPort
|
||||
{
|
||||
|
|
|
@ -231,7 +231,8 @@ struct AQSAudioVoiceEngine : BaseAudioVoiceEngine
|
|||
for (int i=0 ; i<pktlist->numPackets ; ++i)
|
||||
{
|
||||
std::vector<uint8_t> bytes(std::cbegin(packet->data), std::cbegin(packet->data) + packet->length);
|
||||
readProcRefCon->m_receiver(std::move(bytes));
|
||||
;
|
||||
readProcRefCon->m_receiver(std::move(bytes), AudioConvertHostTimeToNanos(packet->timeStamp) / 1.0e9);
|
||||
packet = MIDIPacketNext(packet);
|
||||
}
|
||||
}
|
||||
|
@ -534,6 +535,8 @@ struct AQSAudioVoiceEngine : BaseAudioVoiceEngine
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool useMIDILock() const {return true;}
|
||||
|
||||
AQSAudioVoiceEngine()
|
||||
{
|
||||
m_mixInfo.m_channels = _getAvailableSet();
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
struct AudioUnitVoiceEngine;
|
||||
|
||||
namespace boo
|
||||
{
|
||||
class BaseAudioVoiceEngine;
|
||||
|
@ -15,6 +17,7 @@ class AudioSubmix : public IAudioSubmix, public IAudioMix
|
|||
{
|
||||
friend class BaseAudioVoiceEngine;
|
||||
friend struct WASAPIAudioVoiceEngine;
|
||||
friend struct ::AudioUnitVoiceEngine;
|
||||
|
||||
/* Mixer-engine relationships */
|
||||
BaseAudioVoiceEngine& m_root;
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include "boo/audiodev/IAudioVoice.hpp"
|
||||
#include "AudioMatrix.hpp"
|
||||
|
||||
struct AudioUnitVoiceEngine;
|
||||
|
||||
namespace boo
|
||||
{
|
||||
class BaseAudioVoiceEngine;
|
||||
|
@ -17,6 +19,7 @@ class AudioVoice : public IAudioVoice
|
|||
friend class BaseAudioVoiceEngine;
|
||||
friend class AudioSubmix;
|
||||
friend struct WASAPIAudioVoiceEngine;
|
||||
friend struct ::AudioUnitVoiceEngine;
|
||||
|
||||
protected:
|
||||
/* Mixer-engine relationships */
|
||||
|
@ -68,6 +71,8 @@ public:
|
|||
void start();
|
||||
void stop();
|
||||
void unbindVoice();
|
||||
double getSampleRateIn() const {return m_sampleRateIn;}
|
||||
double getSampleRateOut() const {return m_sampleRateOut;}
|
||||
};
|
||||
|
||||
class AudioVoiceMono : public AudioVoice
|
||||
|
|
Loading…
Reference in New Issue