문제

권장 오디오 라이브러리가 무엇인지 궁금합니다.

나는 장비를 조정하는 데 도움이되는 작은 프로그램을 만들려고 노력하고 있습니다. (피아노, 기타 등). ALSA & Marsyas 오디오 라이브러리에 대해 읽었습니다.

아이디어는 마이크에서 데이터를 샘플링하고 5-10ms (읽은 내용)에 대한 분석을 수행하는 것이라고 생각합니다. 그런 다음 FFT를 수행하여 가장 큰 피크가 포함 된 주파수를 파악하십시오.

도움이 되었습니까?

해결책

Marsyas는이 작업을 수행하기에 좋은 선택이 될 것입니다. 정확히 이런 종류의 작업을 위해 만들어졌습니다.

악기를 조정하려면해야 할 일은 사운드의 기본 주파수 (F0)를 추정하는 알고리즘을 갖는 것입니다. 이를위한 많은 알고리즘이 있습니다. 최신 및 최고 중 하나는 Alain de Cheveigne이 개발 한 Yin 알고리즘입니다. 나는 최근에 Yin 알고리즘을 Marsyas에 추가했으며 그것을 사용하는 것은 간단합니다.

Marsyas에서 사용할 기본 코드는 다음과 같습니다.

  MarSystemManager mng;

  // A series to contain everything
  MarSystem* net = mng.create("Series", "series");

  // Process the data from the SoundFileSource with AubioYin
  net->addMarSystem(mng.create("SoundFileSource", "src"));
  net->addMarSystem(mng.create("ShiftInput", "si"));
  net->addMarSystem(mng.create("AubioYin", "yin"));

  net->updctrl("SoundFileSource/src/mrs_string/filename",inAudioFileName);

  while (net->getctrl("SoundFileSource/src/mrs_bool/notEmpty")->to<mrs_bool>()) {
    net->tick();
    realvec r = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
    cout << r(0,0) << endl;
  }

이 코드는 먼저 구성 요소를 추가 할 직렬 객체를 만듭니다. 시리즈에서 각 구성 요소는 이전 마차의 출력을 직렬로 수신합니다. 그런 다음 soundfilesource를 추가하여 .wav 또는 .mp3 파일을 넣을 수 있습니다. 그런 다음 오디오의 덩어리를 겹치는 시프트 니트 객체를 추가 한 다음 Aubioyin 객체에 공급되는 오디오 덩어리의 기본 주파수를 추정합니다.

그런 다음 soundFilesource에 inaudiofilename 파일을 읽고 싶다고 말합니다.

그런 다음 SoundFilesource가 데이터가 부족할 때까지 루프합니다. While 루프 내부에서는 네트워크가 처리 한 데이터를 가져 와서 기본 주파수 추정치 인 (0,0) 요소를 출력합니다.

Marsyas에 Python 바인딩을 사용하면 더 쉽습니다.

다른 팁

이것 가이드 도움이 필요합니다. 응용 프로그램에 ALSA를 사용하지 마십시오. 더 높은 레벨 API를 사용하십시오. Jack을 사용하기로 결정하면 http://jackaudio.org/applications 예제 코드로 사용할 수있는 3 개의 악기 튜너가 있습니다.

http://clam-project.org/ Clam은 오디오 및 음악 도메인의 연구 및 응용 프로그램 개발을위한 본격적인 소프트웨어 프레임 워크입니다. 오디오 신호의 분석, 합성 및 처리를위한 도구뿐만 아니라 개념 모델과 도구를 제공합니다.

그들은 훌륭한 API, 멋진 GUI 및 모든 것을 볼 수있는 몇 가지 완성 된 앱을 가지고 있습니다.

ALSA는 커널에 포함 된 커널 드라이버가 감가 상각되는 커널 드라이버로 인해 Linux의 기본 표준입니다. 그러나 ALSA 사용자 공간에 대한 대안이 있습니다 , 이는 저도의 전문 유형 응용 프로그램을 목표로하는 것 같습니다. API는 API가 더 좋은 것으로 보이지만 API를 사용하지는 않았지만 ALSA API에 대한 간단한 노출로 인해 거의 모든 것이 더 나을 것이라고 생각할 것입니다.

대담 주파수 플롯 기능이 포함되어 있으며 FFT 필터가 내장되어 있습니다.

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