1
0
Fork 0
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:
jules 2012-01-05 18:10:08 +00:00
parent dcfa73204b
commit 98406ae4e4
6 changed files with 32 additions and 37 deletions

View file

@ -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"
//==============================================================================

View file

@ -22,5 +22,5 @@
"native/*" ],
"OSXFrameworks": "CoreAudio CoreMIDI DiscRecording",
"iOSFrameworks": "AudioToolbox"
"iOSFrameworks": "AudioToolbox CoreMIDI"
}

View file

@ -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,

View file

@ -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

View file

@ -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