次の例では、Next MIDI を用いて、MIDI ファイルの各トラックに含まれる MIDI イベント数、ノート数、プログラムチェンジの数、コントロールチェンジの数、メタイベント数、エクスクルーシブイベント数を表示します。
using System;
using System.IO;
using System.Text;
using NextMidi.Data.Track;
using NextMidi.DataElement;
using NextMidi.DataElement.MetaData;
using NextMidi.Filing.Midi;
/* ... */
static void Main(string[] args)
{
// MIDI ファイルを指定する
if (args.Length != 1)
{
Console.WriteLine("1 source file required");
return;
}
string fname = args[0];
if (!File.Exists(fname))
{
Console.WriteLine("File does not exist");
return;
}
// MIDI ファイルを読み込む
var midiData = MidiReader.ReadFrom(fname, Encoding.GetEncoding("shift-jis"));
Console.WriteLine();
Console.WriteLine("Track Evnt Note Prog Cont Meta Excl Title");
Console.WriteLine("----- ---- ---- ---- ---- ---- ---- ----------------");
for (int i = 0; i < midiData.Tracks.Count; i++)
{
var track = midiData.Tracks[i];
Console.WriteLine("{0} {1} {2} {3} {4} {5} {6} {7}",
i.ToString().PadLeft(5),
track.GetData<MidiEvent>().Count.ToString().PadLeft(4),
track.GetData<NoteEvent>().Count.ToString().PadLeft(4),
track.GetData<ProgramEvent>().Count.ToString().PadLeft(4),
track.GetData<ControlEvent>().Count.ToString().PadLeft(4),
track.GetData<MetaEvent>().Count.ToString().PadLeft(4),
track.GetData<ExclusiveEvent>().Count.ToString().PadLeft(4),
track.GetTitle(i == 0));
}
}