MIDIファイルの操作を含む小さなプロジェクトを開始しました。MIDI ファイルと WAV ファイルの間でキャストを実行する C# または VB.Net コードはありますか?
3 に答える
オープンソースであるTimidityと何らかの形でインターフェースを試みることができます:
TiMidity++ はソフトウェア シンセサイザーです。MIDIファイルをPCM波形データに変換して再生できます。デジタル楽器のデータファイルと一緒にMIDIデータを与えると、それらをリアルタイムで合成して再生します。音を再生するだけでなく、生成した波形をさまざまなオーディオ ファイル形式としてハードディスクに保存することもできます。
FluidSynthは、最近更新された同じような流れのオープン ソース プロジェクトです。
FluidSynth は、SoundFont 2 仕様に基づくリアルタイム ソフトウェア シンセサイザーです。
このリストのサイトから無料のサウンドフォント (これらのシンセサイザーが MIDI ファイルを「レンダリング」するために使用する実際の PCM データ) をダウンロードできます。
MIDI ファイルには、ノートとコントローラの情報のみが含まれ、サウンドは含まれません。MIDI ファイルからサウンドを取得するには、ファイルを音楽シンセサイザーまたはサンプラーに渡す必要があります。これにより、ノートとコントローラーの情報が実際のサウンドに変換されます。
実際には、これは特定の MIDI ファイルに特定のサウンドがないことを意味します。MIDI ファイルをオーディオに変換した結果のサウンドは、シンセサイザーまたはサンプル ライブラリの品質、および変換を実行するために選択されたサウンドによって異なります。
多くのサウンド カードには、MIDI ファイルからサウンドを生成する機能があります。これが可能なのは、多くの MIDI ファイルがGeneral MIDI 仕様と呼ばれる標準に従っているためです。General MIDI Specification は、特定の楽器の割り当てをマッピングする標準化された方法を提供します。MIDI ファイルがこの規格に準拠している場合、General MIDI サウンド ジェネレータを使用して再生すると、スネア ドラムがトランペットではなく、スネア ドラムのように聞こえると期待できます。
Cakewalkのような洗練された音楽制作パッケージがある場合、MIDI ファイルをそこにロードすると、オンボードのサウンド ライブラリを使用してサウンド ファイルがレンダリングされます。これは、実際にはリアルタイムよりも高速に実行できます (つまり、サウンド カードを介してサウンドを再生し、出力をキャプチャする必要はありません)。
私が言おうとしているのは、これには多くの可動部分があるということだと思います。これを行う単一のコードやクラス モジュールはありません。
これを実行する購入可能なプログラムは多数ありますが (Google の「midi を WAV に変換」)、これを実行する一般に公開されている .Net コードに出くわしたことはありません (これらのプログラムのいくつかは .NET で書かれていると思います)。ネットですが、ソースコードは利用できません)。
商用の MIDI から WAV へのコンバーターに取り組んでいるオンラインの友人がいますが、それは .Net にはなく、オープン ソースにもなりません。Robert Harvey が述べたように、これは基本的に独自のソフトウェア シンセサイザーを作成する必要があるため、まったく簡単な作業ではありません (私自身の心の後の作業です)。