2013-06-26 6 views
6

私は、ピアノ作品のための音楽のシートを演奏しているとき、つまり録音したものではなく、リアルタイムの写しでなければならないシステムを実装しようとしていますピース。リアルタイムの音楽の転記

これまでのところ私はFFt on MATLABを使用して、wavファイルでテストしてきたが、それは本当の時間になると、システムは本当に、本当に速いする必要があります。

私は、ボードのタイプを使用することができますアプローチの種類上の任意の提案は(私はArduinoを使用するのでは思っています)。私は直接、私が使用できるアプローチの種類にC.

+1

+1興味深いプロジェクト、私はまだ採譜では動作しませんでしたが、私の意見では、あなたは小さな断片に作品を記録し、それらを転写物に必要になります。 –

+0

私は、この種のアプローチはスタンドアローンのメモを転写するためだけに適していると思います。トランスクリプトコードはおそらく良い結果をもたらさないでしょう。ミディ・キーボードははるかに簡単です。 –

+0

非常に興味深いプロジェクトです。あなたの現在のfftベースの実装がどのくらい速く動作するか教えてください。私はfftがすでにO(n log(n))になっていると思っていましたが、これはすでに非常に高速です。 – Oli

答えて

1

任意の提案を、それを変換するのではなく、私のMATLAB codeを転送したいと思いますので、私は、使用することができ、ボードの種類は、(私はArduinoのを使用して考えてきました)。まずそこ

  1. :私はあなたが私は考えることができるプロジェクトに異なるアプローチを持つことができ、私が好きなので、直接私のMATLABコードを転送するために、使用ではなくC.

に変換することができ演奏されたノートをミディインターフェースを通して速度と位置で出力できる電子機器を備えたピアノです。これは、演奏された音符を追跡する最も正確で高速なソリューションですが、DIYはあまりありません。コンピュータ側では、MIDIインターフェイスを必要とします(これは簡単にarduinoを使用して行うことができます)、MIDIノートをスコアに変換するソフトウェアが必要です。

  • 次に、ピアノの鍵盤をベロシティを測定できるセンサと演奏されたノートに配線することで、その動作を模倣することができます。あなたが使用することができる多くの戦略があります(機械のレーザーを使用すること、圧力スイッチに...など)、それはあなたが作る準備ができている投資に依存します。そこにarduino(メガや支払期限のような)良い解決策になることができます。
  • しかし、あなたがFFTについて話していたように、ピアノの音を録音して鍵を検出したいと思っています。そこでは、音楽研究に関する最先端の知識を打ちました。あなたが遭遇する問題はmultiple f0 detection inpolyphonic musicですが、strategies specific to pianoがありますが、それはまだ非常に活発な研究分野です。
  • あなたがトランスコードのモノフォニック検出のみを行っているとしましょう。問題はArduinoに含まれているAnalogical-Digital-Converterがちょうどうんざりしていることです。これは10bitの定義があり、これは役に立たないものを検出するには低すぎます。 Arduino DUEを使用すると、16チャネルの12ビット1Msps ADCを搭載しているため、さらに詳細な定義が可能です。それはまだ良い転写のためにあまりないです。だから、Linear LTC2383-16のような16ビット1Mspsのような外部ADCを使用しなければならず、再生を開始するには最低限のSPIインターフェイスが必要です。その背後には、正しいマイクロホンを見つけて、ADCとマイクロフォンの間に優れたエレクトロニクスを作り出す必要があります(それについてはあまり知られていません)。
  • 最後に、小さなコンピュータ(BeagleboneやRaspberryPI 5など)を取り、本当に良いUSB ADC /サウンドカードを差し込み、そのボードを使用して転写をパイプするのは簡単でしょうか? Matlabを楽しく実行できるように十分なプロセッサを搭載したクラウドサーバ(google appengineやAWSなど)でソフトウェアを実行することもできます。
  • 音楽をリアルタイムに録音するには、最初の解決策が最善の解決策です(実際にDIYに行く場合は2番目)。あなたが本当に "空気"インターフェイスを通過したいのであれば、私は良い解決策が第5だと思います。

    最後に、コードについては、MatlabからPythonにコードを変換するようアドバイスしたいと思います(C/C++コードを書こうとしない場合)。 MATLABのソースコードをC++のソースコードに変換するツールを書いたことがあります。そして、コンパイル結果が40倍速くなっています。

    HTH