2012-11-04 3 views
0

사용자가 수행 한 음악 피치의 변화에 ​​반응하는 디스플레이가있는 iOS 5/iOS 6 앱을 만들었습니다. 샘플 SpeakHere 코드에서 레코드 기능을 사용하지만 실시간으로 응답하도록 설계 되었기 때문에 파일을 실제로 저장하지 않습니다.audioQueue의 타이밍 이벤트

이제는 피치 자체와 동일한 피치가 지속되는 지속 시간 (예 : 동일한 피치가 꾸준히 최소 시간 동안 유지 될 때 색상 변경)에 동시에 응답하도록이 앱을 확장하고자합니다. 필자는 NSTimer와 NSDate 함수를 읽었습니다. AudioTimeStamp 함수는 물론 C 기반이며 매우 혼란 스럽습니다. 다른 게시물을 기반으로 NSTimer 및 NSDate 검사가 실제 음악 성능에 대한 디스플레이의 실시간 응답을 지연시킬 수있는 것처럼 보입니다. 파견은 어때요? 블록이 예정된 시간에 실행될 것으로 기대합니까?

내 질문은 AudioQueue에서 특정 피치의 지속 시간을 측정하고 지속적으로 디스플레이를 실시간으로 업데이트 할 수있게 해주는 원하는 결과를 얻을 가능성이 가장 큰 접근법입니까? 이 작업을하려면 파일로 저장해야합니까?

저는 독학으로 몇 달 동안 만 프로그래밍 했으므로 새로운 API/C 언어 기능에 대해 많은 지식을 습득해야합니다. 나는 누군가가 유익한 방향으로 나를 가리킬 수 있기를 바라고 있습니다. 감사!

답변

0

여기 꽤 고급스런 것들이 있습니다. 다음은 몇 가지 생각입니다.

  1. 오디오 처리가 가장 집중적 인 작업 인 것 같습니다. 이 처리가 연속적 일 필요가 있기 때문에 일 수 있으며 다른 스레드에서이 처리를 수행해야 할 것입니다. 처리함으로써, 나는 음조를 결정하기 위해 오디오를 검사하는 것을 의미합니다.

  2. 피치를 확인한 후에는 피치를 시작한 시간을 저장해야합니다.

  3. 메인 스레드에서 연속적으로 반복되는 NSTimer를 설정하고 NSTimer의 화재 메서드에서 현재 날짜의 피치 시작 날짜를 뺀 다음 경과 시간을 NSTimeInterval로 가져옵니다.

  4. 화면의 색상을 업데이트 할 수 있도록 NSTimeInterval을 디스플레이 로직에 보냅니다. 체크 아웃

어떤 것들은 :

Beginner's tutorial on multi-threading and Grand Central Dispatch on iOS NSTimer

당신을하는 데 도움이 Using NSTimers

희망!

+0

정확히 내가 필요한 것일 수 있습니다 ... 감사합니다. – Jeanne