2011-10-12 4 views
7

예를 들어 한 번에 3 줄 또는 4 줄의 가사가 표시되는 응용 프로그램이 있습니다. 이제 오디오 파일을 실행하여 재생을 시작한 다음 오디오 자체로 가사의 강조 표시를 실행하겠습니다. 일종의 단어에서 다른 단어로 바운스하는 튀는 공처럼.아이폰의 노래방 응용 프로그램에서 오디오가있는 텍스트를 강조 표시하려면 어떻게해야합니까?

내가 생각할 수있는 유일한 점은 오디오 파일과 함께 실행되는 타이머를 시작할 수 있도록 각 오디오 파일과 함께 가기 위해 메타 데이터를 만들어야한다는 것입니다. 또는 iOS의 오디오 플레이어가 자체 실행 타이머를 노출 할 수 있으며 강조 표시된 단어가 특정 시점에 변경되도록 트리거 할 수 있습니까?

가장 좋은 방법은 무엇입니까? 단어가 바뀌어야 하는지를 매초마다 확인해야한다면 프로세서에 부담이 될 수 있다고 생각 하겠지만 그렇지 않으면 어떻게 작동시킬 수 있는지 알지 못합니다.

+0

노래방에 MIDI 형식을 사용하고 있습니까? 아니면 mp3와 같은 것을 사용하고 있습니까? –

답변

-1

가수가 단어를 바꿀 때 얼마나 쉽게 인식 할 수 있을지 모르겠으므로 메타 데이터 옵션을 사용할 것입니다. (예 : screamo, sting 등)

실제로 주 스레드에서 기능을 예약 할 수 있습니다. 단어가 바뀌 었는지 여부를 확인할 필요가 없습니다. 다음을 사용할 수 있습니다 :

[self performSelector:@selector(changeWord) withObject:self afterDelay:metaData.nextChangeTime] 

메모리 문제는 확실하지 않지만 응용 프로그램에서 녹음 된 MIDI 파일을 재생하는 데 사용합니다. 간단히 말해서 metaData를 기반으로 changeWord 함수를 예약 할 수 있습니다.

metaData를 만드는 방법은 무차별적인 방법 이외에 어떤 방법을 사용할 수 있을지 잘 모르겠습니다. 미리 작성된 metaData가 있어야합니다. 결국, 다른 노래방 앱이 있습니다.

5

내가 아는 가장 좋은 대답은 아니지만 Core Animation을 사용하는 WWDC 2011 비디오 중 하나에서 매우 비슷한 해결책이 논의되었습니다.

Core Animation Essentials (WWDC 2011의 경우 iTunes U에서 비디오 421이어야 함)라는 비디오를 찾으십시오. 예제는 약 29 분 정도되어야합니다. 기본적으로 시나리오는 노래가 연주되는 가사 위로 튀는 공이 있다는 것입니다. 이 프로젝트는 흥미로운 아이디어를 사용하여 단어 위에 타이밍과 위치에 애니메이션을 적용하는 방법에 대해 이야기합니다 ...

NSTimer와 노래가 동시에 시작되는 프로젝트를 구현하려면 다소 시간이 걸리지 만 . 프로젝트를 구현할 때마다 화면을 누를 때마다 마지막 시간 간격의 오프셋을 NSMutableSArray에 삽입 한 다음 파일에 기록합니다. 이제 프로젝트를 실행하고 각 단어가 불려질 때를 눌러 단어에 대한 타임 스탬프를 만듭니다. (이것은 당신이 이미 어떤 노래를 미리 알고 있고 노래 속도가 너무 강하지 않다는 것을 이미 알고 있다고 가정합니다). Ok ... 이제 메타 데이터가 있습니다.

구현을 이미 설명 했으므로 튀는 공을 먼저 시도하는 것이 좋습니다. 구현하려고하는 것과 몇 가지 문제가 있습니다. 특히 (나는 틀릴 수도있다), UIlabel/NSString이 하위 문자열을 강조 표시하는 방법이 없다고 생각한다. 의미는 당신이 정말로 지루할 수있는 각 단어마다 레이블을 만들어야 할 수도 있습니다 ... 그래서 그 비디오를 체크 아웃하고 잘하면 당신이 뭔가를 얻을 수 있습니다. 행운을 빕니다!

관련 문제