/// <summary> /// 小节对齐播放/控制函数(四轨道重载) /// 每小节之间用,隔开 /// </summary> /// <param name="MIDI设备"></param> /// <param name="主旋律轨"></param> /// <param name="主音色"></param> /// <param name="和弦一轨"></param> /// <param name="音色一"></param> /// <param name="和弦二轨"></param> /// <param name="音色二"></param> /// <param name="和弦三轨"></param> /// <param name="音色三"></param> public static void NewPlay(MidiDevice Device, string inf1, int n1, string inf2, int n2, string inf3, int n3, string inf4, int n4) { string[] note1 = inf1.Split(','); string[] note2 = inf2.Split(','); string[] note3 = inf3.Split(','); string[] note4 = inf4.Split(','); int index = note1.Length; for (int i = 0; i < index; i++) { Console.WriteLine("主旋律:note1[" + i + "]=" + note1[i]); Console.WriteLine("和弦:note2[" + i + "]=" + note2[i]); Console.WriteLine("和弦:note3[" + i + "]=" + note3[i]); Console.WriteLine("和弦:note4[" + i + "]=" + note4[i]); double sleeptime = 0; double littletime; int lenth = note1[i].Length; for (int j = 0; j < lenth - 5; j += 8) { littletime = (60000 / beat / 16 * (int)Math.Pow(2, (int)note1[i][j + 3] - 48)); if (note1[i][j + 4] == '1') { littletime *= 1.5; } sleeptime += littletime; } Console.WriteLine("小节播放时间:" + (int)sleeptime); Device.Reset(); playMidi(Device, note1[i], n1, note2[i], n2, note3[i], n3, note4[i], n4); Thread.Sleep((int)sleeptime + dely); Device.Reset(); } }
/// <summary> /// MIDI设备复位函数 /// </summary> /// <param name="MIDI设备"></param> public static void Reset(MidiDevice device) { device.Reset(); }