HomeNext MIDI › MIDI ファイルを4キー上げて再生する

MIDI ファイルを4キー上げて再生する

次の例では、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);
        }
    }
}

Comments are closed.