次の例では、Next MIDI を用いて、MIDI ファイルのキーを +4 した後、再生しています。
using System; using System.IO; using System.Text; using NextMidi.Data.Domain; using NextMidi.DataElement; using NextMidi.Filing.Midi; using NextMidi.MidiPort.Output; using NextMidi.Time; /* ... */ namespace Sample { class Program { static void Main(string[] args) { // 引数チェック if (args.Length != 2) { Console.WriteLine("1 port name and 1 file name required"); return; } // MIDI ファイルを読み込み string fname = args[1]; if (!File.Exists(fname)) { Console.WriteLine("File does not exist"); return; } var midiData = MidiReader.ReadFrom(fname, Encoding.GetEncoding("shift-jis")); // 全ての MIDI ノートを 4 半音上げる foreach (var track in midiData.Tracks) { foreach (var note in track.GetData<NoteEvent>()) { note.Note += 4; } } // テンポマップを作成 var domain = new MidiFileDomain(midiData); // MIDI ポートを作成 var port = new MidiOutPort(args[0]); try { port.Open(); } catch { Console.WriteLine("no such port exists"); return; } // MIDI プレーヤーを作成 var player = new MidiPlayer(port); // MIDI ファイルを再生 player.Play(domain); } } }