완성 된 iPhone 앱 : 새로운 기능을 추가합니다. 시스템 사운드를 녹음 한 다음 재생할 수 있습니다

StackOverflow https://stackoverflow.com/questions/962252

문제

방금 드럼 앱을 만들었습니다. 사용자는 개별 버튼을 탭하여 Audiotoolbox의 Systemsound를 사용하여 짧은 사운드를 트리거합니다. 이제 "레코드"라는 Uibutton을 추가하고 싶습니다. 클릭하면 모든 시스템이 재생되고 사용하면 정지 버튼을 누를 때; 그런 다음 프로그램은 사운드를 재생할 수 있어야합니다.

이 작업을 어떻게해야합니까?! 프로그램의 전체 프로세스는 개별 히트 영역을 활용하여 사용자가 트리거하는 짧은 사운드를 녹음 할 수 있습니까?!

알려주세요

감사

파반

도움이 되었습니까?

해결책

나는 iPhone 자체의 오디오 하드웨어에 익숙하지 않지만 내부 합성 루틴을 노출시키지 않기 때문에 재 처리를 위해 아웃 바운드 오디오를 캡처 할 수 없다면 놀라지 않을 것입니다.

특히 오디오 하드웨어 프로그래밍에 직접 익숙하지 않은 경우 드럼 액션과 시간 간격을 기록하고 오디오 파일을 원래 재생하는 것과 동일한 방식으로 재생하는 것이 훨씬 쉬울 것이라고 생각합니다. 이것은 또한 오디오를 직접 변경하지 않고 편집, 속도를 높이고 속도를 높이고 기타 트릭을 할 수있는 이점이 있습니다.

드럼이 치면 NSMutableArray에 추가해야합니다. 아래 샘플은 드럼 유형 (예 : 히트가있는 드럼 버튼의 태그)과 다음 드럼 히트에 대한 지연 (nstimeinterval)을 기반으로합니다. 이것을 처리하는 방법은 분명히 있지만, 그 예일뿐입니다.

다음 시간 간격으로 다음과 같은 다음과 같은 다음과 같은 연기 선수를 반복적으로 호출하여 거친 버전의 재생을 구현할 수 있습니다.

- (void) startPerformance {
self.drumIndex = -1;
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:0];
}

- (void) playDrumBeat {
self.drumIndex++;
[self playDrum:[[drumBeats objectAtIndex:self.drumIndex] drumType]];
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:[[drumBeats objectAtIndex:self.drumIndex] drumNextDelay]];
}

이것은 OS의 타이밍 문제가 발생하기 쉽지만, 첫 번째 컷을 위해 이와 같은 것을 추구하고 그것이 작동하는지 확인합니다.

바니

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top