2016-05-04 9 views
1

Я немного поиграю с CoreMIDI в Swift на OSX и получил большинство из них для правильной работы.Приложение CoreMIDI не отображается в другом программном обеспечении

Единственная проблема, с которой я сталкиваюсь сейчас, это то, что мое приложение не видно другим программным обеспечением и приложениями и доступным вводом/выводом. Это имеет место в приложениях GarageBand, MIDIMonitor и VVMidi.

Я попробовал несколько вещей, в том числе и это, которое, кажется, правильный подход:

let clientCreateResult = MIDIClientCreate("MIDIApp", { (notification, _) -> Void in 
     print("Configuration Changed") 
    }, nil, &midiClient) 
if (clientCreateResult != noErr) { 
    printError(clientCreateResult) 
    return; 
} 

let inputCreateResult = MIDIInputPortCreateWithBlock(midiClient, "MIDIApp In", &inputPort, MyMIDIReadBlock) 
if (inputCreateResult != noErr) { 
    printError(inputCreateResult) 
    return; 
} 
let outputCreateResult = MIDIOutputPortCreate(midiClient, "MIDIAPP Out", &outputPort) 
if (outputCreateResult != noErr) { 
    printError(inputCreateResult) 
    return; 
} 

К сожалению не повезло. Я не уверен, что я делаю неправильно, я попытался воспроизвести тот же самый код, что и существующие фреймворки, без значительного результата.

Я мог бы действительно использовать некоторые указатели относительно того, почему мое приложение не указано в других.

Спасибо!

ответ

2

Создать виртуальный пункт назначения. См. Документы для MIDIDestinationCreateWithBlock

+1

Это делает ваше приложение отображаемым в качестве входа в других приложениях. Используйте 'MIDISourceCreate', если вы хотите, чтобы ваше приложение также было выходом, к которому могут подключаться другие приложения. [Подробнее об этом ответе.] (Http://stackoverflow.com/questions/10572747/why-doesnt-this-simple-coremidi-program-produce-midi-output?rq=1). –

+0

Правда. Я не совсем точно знал, чего хочет OP. Ваш ответ был более полным. –

+0

Ну, я не могу поверить, что я пропустил это ... Он отлично работает, я был уверен, что я попробовал это, наверное, я испортил код и просто перешел. Спасибо огромное! –