2013-12-09 3 views
0

CDJ에서 들어오는 데이터 패킷으로부터 트랙에 대한 BPM을 계산하는 기능이 있습니다. BPM이 분당 124.45 비트라고 할 때, 0.482 초마다 (즉, 한 비트 당 한 번) 함수를 호출하는 방법은 무엇입니까? 다른 스레드를 설정하고 타이머를 설정할 수 있습니까?OSX에서 C 함수를 주기적으로 호출

+0

응용 프로그램이 모두 Cocoa입니까? 정확한 타이밍 **가 필요합니까? – BergQuester

+0

프로그램에서 CoreMidi를 사용하고 있습니다. 그렇지 않은 경우에는 모두 C입니다. 함수가 MIDI 클럭을 DAW에 보내 클록을 동기화 할 때 가능하면 정확합니다. 나는 패킷이 들어 왔을 때 미디를 보내고있다. 클럭을 제외하고는 대기 시간 때문에 몇 ms 뒤에있다. 몇 분 전에 미시를 보내서 시계를 동기화하려고했습니다. –

답변

0

고정밀 타이머를 보게 될 수도 있습니다. here Apple은 500 밀리 초의 정확도로 500 밀리 초 요구 사항의 0.1 %를 요구합니다. 처리 시작시 시간을 읽고 다음 비트로 오프셋을 계산하여 왜곡을 최소화 할 수 있습니다. 또한 자주 늦게 스케쥴을 얻었거나 박자가 누락 된 것을 발견하면 CPU가 다음 일정 시간 동안 95 %의 시간 동안 잠을 자면 CPU가 다른 일정을 예약하고 마지막 몇 퍼센트를 기다릴 수 있습니다. 당신은 CPU를 먹어 치우지 않습니다.

관련 문제