Пример #1
0
        /// <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();
            }
        }
Пример #2
0
 /// <summary>
 /// MIDI设备复位函数
 /// </summary>
 /// <param name="MIDI设备"></param>
 public static void Reset(MidiDevice device)
 {
     device.Reset();
 }