Exemple #1
0
        public static unsafe void Hello()
        {
            Console.WriteLine("Hello");
            Console.WriteLine("devices-sum:{0}", InputPort.InputCount);
            //ip.Open(1);

            for (int j = 0; j < MidiDeviceBusiness.midiOutGetNumDevs(); j++)
            {
                MIDIOUTCAPS caps = new MIDIOUTCAPS();
                MidiDeviceBusiness.midiOutGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(System.Runtime.InteropServices.Marshal.SizeOf(typeof(MIDIOUTCAPS)) * 8));
                MidiDeviceBusiness.midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                Console.WriteLine(mOut);
                Console.WriteLine(caps.szPname);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 0)));
                Thread.Sleep(1000);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 1)));
                Thread.Sleep(1000);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 2)));
                Thread.Sleep(1000);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 3)));
                Thread.Sleep(1000);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 4)));
                Thread.Sleep(1000);
                Console.WriteLine(MidiDeviceBusiness.midiOutShortMsg(mOut, (uint)(0x90 + (61 * 0x100) + (60 * 0x10000) + 5)));
            }


            //ip.Start();
            //try
            //{
            //    //while (true)
            //    //{
            //    //    Thread.Sleep(1);
            //    //}
            //}
            //catch (Exception e)
            //{


            //}
            //finally
            //{
            //    ip.Stop();
            //    ip.Close();
            //    Console.WriteLine("Bye~");
            //}
        }
Exemple #2
0
        public unsafe void StartMidiIn()
        {
            cDevice.Children.Clear();
            //直接使用Thread类,以及其方法
            //Thread threadA = new Thread();
            //threadA.Start();
            int num = (int)MidiDeviceBusiness.midiInGetNumDevs();

            cDevice.Height = 30 * (num + 1);

            for (int j = 0; j < num; j++)
            {
                MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
                MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
                //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                //Console.WriteLine(caps.szPname + "----");

                Grid grid = new Grid
                {
                    Width  = 300,
                    Height = 30,
                };
                DoubleAnimation doubleAnimation = new DoubleAnimation()
                {
                    From      = 300,
                    To        = 0,
                    Duration  = TimeSpan.FromSeconds(0.5),
                    BeginTime = TimeSpan.FromSeconds(0.3 * j),
                };

                cDevice.Children.Add(grid);
                Canvas.SetTop(grid, 30 * j);
                Canvas.SetLeft(grid, 300);

                TextBlock tb = new TextBlock()
                {
                    Foreground = new SolidColorBrush(Color.FromRgb(200, 200, 200)),
                    Text       = caps.szPname,
                };
                tb.MouseEnter          += Tb_MouseEnter;
                tb.MouseLeave          += Tb_MouseLeave;
                tb.MouseLeftButtonDown += Tb_MouseLeftButtonDown;
                grid.Children.Add(tb);
                grid.BeginAnimation(Canvas.LeftProperty, doubleAnimation);
            }
        }
Exemple #3
0
 public unsafe void SearchEquipmentIn()
 {
     //直接使用Thread类,以及其方法
     //Thread threadA = new Thread();
     //threadA.Start();
     cbRealDeviceIn.Items.Clear();
     for (int j = 0; j < MidiDeviceBusiness.midiInGetNumDevs(); j++)
     {
         MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
         MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
         //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
         cbRealDeviceIn.Items.Add(caps.szPname);
     }
     if (cbRealDeviceIn.Items.Count > 0)
     {
         cbRealDeviceIn.SelectedIndex = 0;
     }
 }
Exemple #4
0
        public unsafe int SearchEquipmentIn2()
        {
            int position  = -1;
            var deviceIns = mw.deviceConfigModel.Devices.Select(t => t.DeviceIn).ToList();

            cbRealDeviceIn.Items.Clear();
            for (int j = 0; j < MidiDeviceBusiness.midiInGetNumDevs(); j++)
            {
                MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
                MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
                //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                String Pname = caps.szPname;
                if (deviceIns.Contains(Pname))
                {
                    position = j;
                    break;
                }
            }

            return(position);
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="chPosition">通道位置</param>
        /// <returns></returns>
        private int SearchEquipmentOut2(out int chPosition)
        {
            int position = -1;

            chPosition = -1;
            var deviceOuts = mw.deviceConfigModel.Devices.Select(t => t.DeviceOut).ToList();

            for (int j = 0; j < MidiDeviceBusiness.midiOutGetNumDevs(); j++)
            {
                MidiDeviceBusiness.MIDIOUTCAPS caps = new MidiDeviceBusiness.MIDIOUTCAPS();
                MidiDeviceBusiness.midiOutGetDevCaps(new UIntPtr((uint)j), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIOUTCAPS))));
                //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                String Pname = caps.szPname;
                if (deviceOuts.Contains(Pname))
                {
                    position   = j;
                    chPosition = deviceOuts.IndexOf(Pname);
                    break;
                }
            }
            return(position);
        }
Exemple #6
0
 private void SearchEquipmentOut()
 {
     mw.editUserControl.playuc.CloseMidiOut();
     cbRealDevice.Items.Clear();
     for (int j = 0; j < MidiDeviceBusiness.midiOutGetNumDevs(); j++)
     {
         MidiDeviceBusiness.MIDIOUTCAPS caps = new MidiDeviceBusiness.MIDIOUTCAPS();
         MidiDeviceBusiness.midiOutGetDevCaps(new UIntPtr((uint)j), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIOUTCAPS))));
         //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
         String Pname = caps.szPname;
         if (cbOnlySearchForLaunchpad.IsChecked == true)
         {
             if (Pname.Contains("Launchpad"))
             {
                 cbRealDevice.Items.Add(Pname);
                 if (isFirst)
                 {
                     //MidiDeviceBusiness.midiOutOpen(out nowOutDeviceIntPtr, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                     isFirst = false;
                 }
             }
         }
         else
         {
             cbRealDevice.Items.Add(Pname);
             if (isFirst)
             {
                 //MidiDeviceBusiness.midiOutOpen(out nowOutDeviceIntPtr, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                 isFirst = false;
             }
         }
     }
     if (cbRealDevice.Items.Count > 0)
     {
         //isSearchChangeSelect = true;
         cbRealDevice.SelectedIndex = 0;
     }
 }