mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Added iOS CoreMidi support.
This commit is contained in:
parent
dcfa73204b
commit
98406ae4e4
6 changed files with 32 additions and 37 deletions
|
|
@ -164,6 +164,7 @@ BEGIN_JUCE_NAMESPACE
|
|||
//==============================================================================
|
||||
#elif JUCE_IOS
|
||||
#include "native/juce_ios_Audio.cpp"
|
||||
#include "native/juce_MidiDataConcatenator.h"
|
||||
#include "native/juce_mac_CoreMidi.cpp"
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -22,5 +22,5 @@
|
|||
"native/*" ],
|
||||
|
||||
"OSXFrameworks": "CoreAudio CoreMIDI DiscRecording",
|
||||
"iOSFrameworks": "AudioToolbox"
|
||||
"iOSFrameworks": "AudioToolbox CoreMIDI"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ public:
|
|||
static MidiInput* openDevice (int deviceIndex,
|
||||
MidiInputCallback* callback);
|
||||
|
||||
#if JUCE_LINUX || JUCE_MAC || DOXYGEN
|
||||
#if JUCE_LINUX || JUCE_MAC || JUCE_IOS || DOXYGEN
|
||||
/** This will try to create a new midi input device (Not available on Windows).
|
||||
|
||||
This will attempt to create a new midi input device with the specified name,
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public:
|
|||
static MidiOutput* openDevice (int deviceIndex);
|
||||
|
||||
|
||||
#if JUCE_LINUX || JUCE_MAC || DOXYGEN
|
||||
#if JUCE_LINUX || JUCE_MAC || JUCE_IOS || DOXYGEN
|
||||
/** This will try to create a new midi output device (Not available on Windows).
|
||||
|
||||
This will attempt to create a new midi output device that other apps can connect
|
||||
|
|
|
|||
|
|
@ -23,9 +23,6 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
#if JUCE_MAC
|
||||
|
||||
//==============================================================================
|
||||
namespace CoreMidiHelpers
|
||||
{
|
||||
bool logError (const OSStatus err, const int lineNum)
|
||||
|
|
@ -364,6 +361,12 @@ void MidiOutput::sendMessageNow (const MidiMessage& message)
|
|||
{
|
||||
CoreMidiHelpers::MidiPortAndEndpoint* const mpe = static_cast<CoreMidiHelpers::MidiPortAndEndpoint*> (internal);
|
||||
|
||||
#if JUCE_IOS
|
||||
const MIDITimeStamp timeStamp = mach_absolute_time();
|
||||
#else
|
||||
const MIDITimeStamp timeStamp = AudioGetCurrentHostTime();
|
||||
#endif
|
||||
|
||||
if (message.isSysEx())
|
||||
{
|
||||
const int maxPacketSize = 256;
|
||||
|
|
@ -377,7 +380,7 @@ void MidiOutput::sendMessageNow (const MidiMessage& message)
|
|||
|
||||
for (int i = 0; i < numPackets; ++i)
|
||||
{
|
||||
p->timeStamp = AudioGetCurrentHostTime();
|
||||
p->timeStamp = timeStamp;
|
||||
p->length = jmin (maxPacketSize, bytesLeft);
|
||||
memcpy (p->data, message.getRawData() + pos, p->length);
|
||||
pos += p->length;
|
||||
|
|
@ -391,7 +394,7 @@ void MidiOutput::sendMessageNow (const MidiMessage& message)
|
|||
{
|
||||
MIDIPacketList packets;
|
||||
packets.numPackets = 1;
|
||||
packets.packet[0].timeStamp = AudioGetCurrentHostTime();
|
||||
packets.packet[0].timeStamp = timeStamp;
|
||||
packets.packet[0].length = message.getRawDataSize();
|
||||
*(int*) (packets.packet[0].data) = *(const int*) message.getRawData();
|
||||
|
||||
|
|
@ -536,16 +539,3 @@ void MidiInput::stop()
|
|||
}
|
||||
|
||||
#undef CHECK_ERROR
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#else // Stubs for iOS...
|
||||
|
||||
MidiOutput::~MidiOutput() {}
|
||||
void MidiOutput::sendMessageNow (const MidiMessage& message) {}
|
||||
StringArray MidiOutput::getDevices() { return StringArray(); }
|
||||
MidiOutput* MidiOutput::openDevice (int index) { return nullptr; }
|
||||
StringArray MidiInput::getDevices() { return StringArray(); }
|
||||
MidiInput* MidiInput::openDevice (int index, MidiInputCallback* callback) { return nullptr; }
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue