我读了this answer并尝试用NAudio.Midi播放一个音符:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NAudio.Midi;
using System.Threading;
namespace SoundVision10
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//Thread.Sleep inside GUI is just for example
using (MidiOut midiOut = new MidiOut(0))
{
midiOut.Volume = 65535;
midiOut.Send(MidiMessage.StartNote(60, 127, 0).RawData);
MessageBox.Show("Sent");
Thread.Sleep(1000);
midiOut.Send(MidiMessage.StopNote(60, 0, 0).RawData);
Thread.Sleep(1000);
}
}
}
}
显示“已发送”,没有其他任何事情发生。
声音已开启。
第一个Midi输出设备的名称是“Microsoft Gs Wavetable Synth”
我忘了什么吗?
答案 0 :(得分:5)
将频道编号更改为1并且可以正常工作。
midiOut.Send(MidiMessage.StartNote(60, 127, 1).RawData);
答案 1 :(得分:0)
我用NAudio.dll 1.3.8.0替换了NAudio.dll 1.7.3.0并解决了这个问题。