2014-01-23 1 views
6

iOS에서 오디오 파일의 비트, 피치, 발병 및 빠른 푸리에 변환 (FFT)을 감지하려고 시도하고 있으며 aubio이 이러한 기능을 제공하며 iOS framework도 사용 가능한 것으로 나타났습니다. 지금까지 내가 Core AudioAudioBufferList이 같은 측면에서 오디오 데이터를 수신 할 The Amazing Audio Engine을 사용하고iOS에서 aubio 프레임 워크를 사용하는 방법은 무엇입니까?

:

id<AEAudioReceiver> receiver = [AEBlockAudioReceiver audioReceiverWithBlock: 
           ^(void      *source, 
           const AudioTimeStamp  *time, 
           UInt32     frames, 
           AudioBufferList   *audio) { 
    // I don't know how to use audio library. 
}]; 

내가 감지 할 수있는 비트, 피치, 발병 및 고속 푸리에 변환 (FFT) aubio을 사용하여 이 AudioBufferList에서 어떻게? 내가 잘못된 길을 걷고 있다면 제안을 해주시겠습니까?

+1

안녕하세요! 나는 같은 문제를 가지고있다. 당신은이 작업을위한 해결책을 찾았습니까? – xZenon

+0

@ xZenon 아니, 나는하지 않았다. 죄송합니다. – Protocole

답변

0

download page에서 아이폰 OS와 함께 사용할 컴파일 된 프레임 워크가있다. 당신이 다운로드하는 경우, 지금

  • Accelerate.framework
  • AudioToolbox.framework

:

한을 드래그 앤 프로젝트에 라이브러리를 떨어 뜨, 당신은 또한 한 아래와 같은 프레임 워크를 가지고 있는지 확인 Aubio의 소스, 예제 폴더가 있습니다. 거기에서, 당신은 ObjC가 C의 수퍼 세트이기 때문에 C로 작성된 비트, 피치, 발병 (또한 FFT가 있음)을 감지하는 코드를 발견 할 것입니다.

0

내 솔루션은 오디오 버퍼를 파일에 쓴 다음 파일을 aubio로 보냅니다. 새로운 오디오 버퍼가 생길 때마다 파일에 추가 할 수 있습니다 (지금까지 모든 것을 분석하려는 경우). 또는 증분 조각에만 관심이있는 경우 덮어 쓸 수 있습니다.

pod 'aubio-iOS-SDK', '~> 0.4' 

이 Aubio 0.4 설치 :

+0

오디오 버퍼를 파일에 쓸 때 어디에 사용하고 있습니까? AVAssetWriter, 또는 아마도 두 개의 AvAssetWriters, 또는 AVampleDataBufferRef를 사용하여 AVCaptureAudioDataOutput 또는 AVCaptureSession 대리자를 만들거나 Amazing Audio Engine을 사용하여 파일에 쓸 수 있습니까? –

+0

눈에 띄는 성능 저하가 있었습니까? 일반적으로 이런 종류의 일을 메모리에서 수행하지만 aubio는 파일 기반 입력 메커니즘 만있는 것처럼 보입니다. –

0

UPDATE 는 그래서 Aubio의 코코아 포드 내 Podfile에서 최신 아니다처럼, 내가 엑스 코드 작업에 Aubio를 추가하려면이 코드를 사용 보인다. 1 그리고 그것은 최신이 아닙니다. Aubio에 대한 문서를 찾는 것은 일반적으로 작업 솔루션으로 여러 인터넷 검색 결과를 단편적으로 결합하는 약간의 모호한 과정입니다.

iOS의 경우 Aubio downloads page으로 이동하면 iOS 용 버전 0.4.2를 발견 할 수 있습니다. 아래쪽으로 스크롤하면 Aubio Cocoa Pod보다 최신 버전입니다. 그럼에도 불구하고, here는 의견에 나는 나중에 아이폰 OS Aubio 모듈, 0.4.3은 여기에 iOS 용 최신 Aubio가 무엇인지에 직접 다운로드 할 발견 : 당신은 여전히 ​​해소 헤더 참조가 필요

https://aubio.org/bin/tmp/aubio-0.4.3~const.iosuniversal_framework.zip

오보 오.시간 내 원래의 대답에 언급 된대로 스위프트를 사용하는 경우

CocoaPod 정말 간단 스위프트에 aubio 라이브러리를 참조 할 수 aubio에 대한이 ORIGINAL 답변. 여기에 아이폰 OS의 Aubio CocoaPod은 다음과 같습니다 설치되면

https://cocoapods.org/pods/aubio-iOS-SDK

이, 스위프트, 당신은 쓰지 않습니다 것을, 참고 : 스위프트 파일의 맨 위에

import aubio 

.

#import <aubio/aubio.h> 

이제 스위프트는 aubio에 액세스 할 수 있습니다 :

당신은 당신이 다음 쓰기 브리징 것을 헤더에, 스위프트에 aubio C 라이브러리를 노출 헤더를 해소 객관적 C를 추가 확인해야 라이브러리/프레임 워크.

+0

안녕하세요 @ brian-ogden,이 문제에 대한 버그 보고서를 열어주세요. '신속한 수입 '이 효과가 있어야한다. 더 일반적인 메모에 – piem

+0

건배 : 설명서가 부족하다는 stackoverflow에 불평 그것을 개선하지 않을 수 있습니다. 그것에 관한 새로운 문제를 열어 주시면 감사하겠습니다 : https://github.com/aubio/aubio/issues/new – piem