2017-10-11 18 views
1

audiokit을 사용하여 mac의 응용 프로그램에서 하드웨어 신디사이저의 syses 메시지를 수신하려고합니다. 이 신디사이저 메시지는 예를 들어, 11 개 번호의 구축과 같습니다 audiokit의Audiokit가 처음 세 개의 sysex MIDI 메시지 만 수신하는 것 같습니다.

240,00,32,51,01,16,112,00,40,95,247 

현재 출시 된 버전은 즉시이 메시지를 수신 할 때 충돌합니다,하지만 난 개발 현재 BRANCHE가 고정 된 것을 발견했습니다. ,

line 143: computedLength += 1 << Thread 8: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 

나는

if (computedLength == 255){ 
    break 
} 

직전 라인 (143)의 추가와 함께 그 문제를 해결 할 수있었습니다 : AKMIDIEvent.swift에서) , 나는 그것을 너무 충돌을 의미하지만, 다른 LINENUMBER에서 하지만이 솔루션은 내 낮은/단순한 코딩 수준에 대해 더 많은 것을 말하고 있습니다. 127 줄의 init 함수에서받은 packet.data를 인쇄하면 다음과 같이 나타납니다 :

(240, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0) 

첫 번째 3 개의 숫자 만 맞고 나머지는 사라지고 모두 0이 있습니다. Cubase에서 전체 메시지가 보내 졌음을 알 수 있지만 어떻게 든 audiokit에서 대부분 손실됩니다.

누구든지이 문제에 대해 어떤 빛을 비출 수 있습니까? 은 이러한 종류의 syses 메시지를 구문 분석하기 위해 audiokit으로 설계 되었습니까?

미리 감사드립니다.

+0

audiokit은 syses 메시지를 각각 3 비트의 4 작은 메시지로 잘라내는 것처럼 보입니다. 첫 번째 메시지 만 240으로 시작하고 syses 메시지로 인식됩니다. 다른 부분은 전혀 인식되지 않고 손실됩니다. –

답변

0

audiokit이 내 11 비트 syses 메시지를 3 비트의 4 작은 메시지로 자르고있는 것처럼 보입니다. 첫 번째 메시지 만 240으로 시작하고 syses 메시지로 인식됩니다.

다음 세 부분은 전혀 인식되지 않고 손실됩니다.

첫 번째 메시지는 Audiokit이 필요한 최종 번호 (247)를 포함하지 않기 때문에 충돌이 발생합니다.

이 동작을 변경하려고했지만 행운이 없습니다. Audiokit은 정말 멋진 평화의 작품이지만 슬프게도 내 프로젝트에는 맞지 않습니다.