質問

私が使用することをお勧めオーディオライブラリーとは何か思ったんだけど?

私は、チューニングの楽器に役立つ小さなプログラムを作成しようとしています。 (ピアノ、ギター等)。私はALSA&マルシュアスオーディオライブラリについて読んます。

私はアイデアを考えています(私が読んだから)5-10msの塊の分析を行い、マイクからのデータをサンプリングすることです。そして、最大のピークが含まれている頻度を把握するためにFFTを行います。

役に立ちましたか?

解決

マルシュアスは、それがタスクのまさにこの種のために構築されています、これを行うための最適な選択肢となります。

楽器をチューニングするために、何をする必要がある基本的に推定するアルゴリズムを持つことです 音の周波数(F0)。これを行うためのアルゴリズムの数、最新かつ最高の一つであり、 アラン・デ・Cheveigneによって開発されましたYINアルゴリズムが、あります。私は最近、YINアルゴリズムを追加しました マルシュアスに、そしてそれが死んでシンプルで使用します。

ここであなたがマルシュアスで使用する基本的なコードがあります:

  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;
  }

このコードでは、まず、我々はにコンポーネントを追加しますSeriesオブジェクトを作成します。コンポーネントのシリーズでは、各 シリアルの前のMarSystemの出力を受けます。私たちは、あなたが養うことができSoundFileSourceを追加します .WAVまたは.MP3ファイルインチ私たちは、オーディオの重複チャンクを出力ShiftInputオブジェクトを、追加しました 次に、オーディオのチャンクの基本周波数を推定AubioYinオブジェクトに供給される。

私たちは、その後、我々は、ファイルinAudioFileNameを読みたいSoundFileSourceを伝えます。

SoundFileSourceがデータを使い果たすまで、

while文は、ループします。しばらくインサイド ループ、我々はネットワークである(0,0)の要素を、処理された出力データを取ります 基本周波数推定ます。

あなたがマルシュアスのためのPythonバインディングを使用する場合、

これはさらに簡単です。

他のヒント

この には役立つはず導きます。あなたのアプリケーションのためのALSAを使用しないでください。より高いレベルのAPIを使用してください。あなたはJACKを使用したいことを決定した場合、 http://jackaudio.org/applications には、次の3つの楽器チューナーを持っていますサンプルコードとして使用することができます。

http://clam-project.org/する CLAMは、オーディオと音楽ドメインにおける研究およびアプリケーション開発のための本格的なソフトウェアフレームワークです。これは、オーディオ信号の分析、合成および処理のための概念モデルだけでなく、ツールを提供しています。

彼らは、あなたがすべてを見ることができる素晴らしいAPI、素敵なGUIといくつかの完成のアプリを持っています。

ALSAはカーネルに含まれているとOSSが償却されているカーネルドライバのおかげで今のLinux用のデフォルトの標準の一種です。しかし、低レイテンシのプロタイプのアプリケーションを狙っているようだジャックに、のようなALSAのユーザ空間への代替案は、あります。それは私がそれを使用していませんでしたが、ALSAのAPIへの私の短時間曝露が、私はほとんど何が良いだろうと思うになるだろう、よりよいAPIを持っていると思われるAPIです。

Audacityのの周波数プロット機能を備えており、内蔵されたFFTフィルタ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top