20

MFC元々 C++で使用して.NET作成された古いメトロノームアプリケーションを、を使用して作成するように再構築しようとしていC#ます。私が直面している問題の1つは、メトロノームの「クリック」を表すために使用されるMIDIファイルの再生です。

.NETでのプレイに関する記事をオンラインでいくつか見つけましたMIDIが、それらのほとんどは、誰かがまとめて利用できるようにしたカスタムライブラリに依存しているようです。私はこれらを使用することを嫌いではありませんが、これがどのように行われているのかを自分で理解したいと思います

それで、私は何かが欠けていますか?それとも、.NETアプリケーション内でMIDIを使用するのは難しいですか?

4

11 に答える 11

11

私は現在C#MIDIアプリケーションに取り組んでいますが、他のアプリケーションは正しいです。これにはp/invokeを使用する必要があります。アプリケーションに適していると思われるので(MIDI機能の小さなサブセットのみが必要です)、私は自分自身をローリングしていますが、あなたの目的には、C#MIDIツールキットの方が適している可能性があります。これは少なくとも私が見つけた最高の.NETMIDIライブラリであり、プロジェクトを開始する前に広範囲にわたって検索しました。

于 2008-08-12T12:51:50.773 に答える
9

.netからMIDIファイルを再生できるようにするには、WindowsAPIをp/invokeする必要があると思います。

このcodeprojectの記事は、これを行う方法を説明するのに 役立ちます。MIDIファイルを再生するためのvb.netの記事

これを書き直すには、c#であり、mciSendStringに対して次のインポートステートメントが必要です。

[DllImport("winmm.dll")] 
static extern Int32 mciSendString(String command, StringBuilder buffer, 
                                  Int32 bufferSize, IntPtr hwndCallback);

これがお役に立てば幸いです。

于 2008-08-12T12:46:31.750 に答える
1

私はそれについて多くを知っているとは言えませんが、それはそれほど単純ではないと思います-DotNetRocksの名声のカールフランクリンはそれでかなりのことをしました-あなたは彼のDNRTVを見たことがありますか?

于 2008-08-12T12:39:17.460 に答える
1

メディア プレーヤーを使用できます。

using WMPLib;
//...
WindowsMediaPlayer wmp = new WindowsMediaPlayer();
wmp.URL = Path.Combine(Application.StartupPath ,"Resources/mymidi1.mid");
wmp.controls.play();
于 2011-04-11T18:31:20.723 に答える
1

最近追加されたのは、Midi ポート、Midi ファイル、および SysEx をサポートするMIDI.NETです。

于 2013-09-30T10:33:50.513 に答える
1

.NET での広範な MIDI および Wave 操作については、間違いなく NAudioが解決策であると思います( NuGetからも利用できます)。

于 2013-05-08T00:23:37.013 に答える
-1

System.Media. SoundPlayerは、WAV ファイルを再生する優れた簡単な方法です。WAV ファイルには、MIDI よりもいくつかの利点があります。その 1 つは、各楽器のサウンドを正確に制御できることです (コンピュータの内蔵シンセサイザーに依存するのではなく)。

于 2008-09-17T01:55:06.930 に答える