2016-10-27 46 views
0

私はこのライブラリ(http://kenschutte.com/midi)を使用してmidiファイルを処理しています。ここの関数は非常に役に立ちました。しかし、midi2audio()メソッドは、どのMIDIミディにもかかわらず(ノートが認識可能で、正しいMIDIが再生されているにもかかわらず)、文字化けした.wavファイルしか生成しません。他の誰かがこの関数ライブラリを使ってこの同じ問題に遭遇しましたか?もしそうなら、どうすればこの問題を解決できますか?それとも、同じことをやっているどこかでオンラインで使うことのできる別の関数がありますか?以下MATLABを使用して.midを.wavに変換する

.wavファイル(上記のリンクからコピー&ペースト)を生成するために使用されるコードである

[y,Fs] = midi2audio(midi); % save to file: % (normalize so as not clipped in writing to wav) y = .95.*y./max(abs(y)); wavwrite(y, Fs, 'out.wav');

答えて

0

それmidi2audioのみデフォルトとして、周波数変調合成を、非常に初歩的な音声合成が含まれると思われます。シンプルな正弦波合成に変更した方が良いかもしれませんね?

[y,Fs] = midi2audio(midi, 'sine') 

まだ切断されない場合は、より洗練されたソフトウェア機器を使用することをお勧めします。

は、このための最も簡単なクロスプラットフォームの方法は、おそらくFluidSynthある(MacPortsのような様々なリポジトリからも入手でき、自作は、apt-getを、GitHubの...)が FluidSynthはオーディオへのMIDI命令を変換するために、サンプルベースの音の合成を使用し、 SoundFont2形式のサンプルバンクが必要です。そのようなものはhereです。

はあなたのMIDIファイルからWAVEファイルを作成しなければならないすべてはあなたのターミナル/コンソールにこれを入力することです、それを整理した:

fluidsynth -F out.wav path-to-fm2-file in.mid 
+0

Unforunately私は「FM」パラメータを変更しようとしました音はまだ高品質ではありませんでした。 FluidSynthをMATLABコードの中で何とか実行することができますか?または、あなたが言及したコマンドを端末に入力するだけですか? – pdrum

+0

@pdrum私はmatlabに慣れていませんが、内部からシステムコマンドを呼び出して出力をキャプチャする方法があります。しかし、あなたの使い方に応じて最も簡単な方法は、ターミナル(osx、linux)またはコンソール(windows)から直接行うことでしょう。 – AkselA

関連する問題