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~"); //} }
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); } }
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; } }
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); }
/// <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); }
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; } }