2013-12-18 4 views
0

С помощью следующего кода я пытаюсь отправить MIDI-событие на NSLog Synth:Нет звука с простой MIDI маршрутизации

MIDIClientRef midiClient = NULL; 

MIDIClientCreate(
    CFSTR("MidiClient"), 
    NULL, 
    NULL, 
    &midiClient 
); 

MIDIPortRef midiClientOutPort = NULL; 

MIDIOutputPortCreate(
    midiClient, 
    CFSTR("MidiClientPort"), 
    &midiClientOutPort 
); 

NSLog(@"%lu", MIDIGetNumberOfDestinations()); 

MIDIEndpointRef endpoint = NULL; 

endpoint = MIDIGetDestination(1); 

CFPropertyListRef plist = NULL; 
MIDIObjectGetProperties(endpoint, &plist, YES); 

NSArray *temp = [NSArray arrayWithObject:(__bridge id)(plist)]; 
NSLog(@"%@", [temp description]); 

MIDIPacketList packet; 
packet.numPackets = 1; 
packet.packet[0].data[0] = 0x90; 
packet.packet[0].data[1] = 0x3c; 
packet.packet[0].data[2] = 0x40; 
packet.packet[0].timeStamp = 0; 

MIDISend(midiClientOutPort, endpoint, &packet); 

Если я проверяю OSStatus я не получаю никаких ошибок. Я получаю MIDIClient, MIDIOutputPort и MIDISend тоже отлично. Кроме того, я получаю назначение synth без ошибок. Синтез прослушивает все midi-каналы, и если я тестирую синтезатор на синтезатор, он отвечает звуком. Выполняю код нажатием кнопки, но ничего не происходит.

Что я делаю, я неправ?

ответ

1

Решение:

MIDIPacketList packet; 
packet.numPackets = 1; 
packet.packet[0].timeStamp = 0; 
packet.packet[0].length = 3; 
packet.packet[0].data[0] = 0x90; 
packet.packet[0].data[1] = 0x3c; 
packet.packet[0].data[2] = 0x40; 

Я должен установить свойство длины!

Смежные вопросы