Apakah windows 10 memiliki midi
Driver MIDI Windows 10: Cara menginstalnya dalam beberapa langkah
Tim Windows akan senang mendengar tanggapan Anda. Harap simpan umpan baliknya menggunakan situs Windows Developer UserVoice kami. Jika Anda memiliki bug langsung, silakan gunakan alat umpan balik Windows yang dibangun langsung ke Windows 10.
Midi
Artikel ini menunjukkan kepada Anda cara menyebutkan perangkat MIDI (Instrumen Digital Instrumen Musik) dan mengirim dan menerima pesan MIDI dari aplikasi Windows universal. Windows 10 mendukung MIDI di atas USB (driver yang sesuai dengan kelas dan kebanyakan milik kelas), MIDI di atas Bluetooth LE (Edisi Anniversary Windows 10 dan kemudian), dan melalui produk pihak ketiga yang tersedia secara bebas, MIDI di atas Ethernet dan MIDI yang dirutekan.
Hitung perangkat MIDI
Sebelum menyebutkan dan menggunakan perangkat MIDI, tambahkan ruang nama berikut ke proyek Anda.
menggunakan windows.Perangkat.Enumerasi;
menggunakan windows.Perangkat.Midi;
menggunakan sistem.Threading.Tugas; Tambah sebuah Kotak daftar Kontrol ke halaman XAML Anda yang akan memungkinkan pengguna untuk memilih salah satu perangkat input MIDI yang terpasang pada sistem. Tambahkan yang lain untuk mendaftar perangkat output MIDI.
Itu Findallasync metode Informasi Perangkat Kelas digunakan untuk menyebutkan berbagai jenis perangkat yang dikenali oleh Windows. Untuk menentukan bahwa Anda hanya ingin metode menemukan perangkat input MIDI, gunakan string pemilih yang dikembalikan oleh Midiinport.GetDeviceselector. Findallasync mengembalikan a DeviceInformationCollection yang berisi a Informasi Perangkat Untuk setiap perangkat input MIDI yang terdaftar di sistem. Jika koleksi yang dikembalikan tidak mengandung item, maka tidak ada perangkat input MIDI yang tersedia. Jika ada item dalam koleksi, lilitkan melalui Informasi Perangkat objek dan tambahkan nama setiap perangkat ke perangkat input MIDI Kotak daftar.
Tugas Async Pribadi EnumerateMidiInputDevices ()
{
// Temukan semua perangkat MIDI input
string midiinputQueryString = midiinport.GetDeviceselector ();
DeviceInformationCollection midiInputDevices = menunggu Information Device.Findallasync (midiinputQueryString);
MidiinportListBox.Item.Jernih();
// kembalikan jika tidak ada perangkat eksternal yang terhubung
if (midiinputDevices.Count == 0)
{
ini.MidiinportListBox.Item.Tambahkan ("Tidak ada perangkat input MIDI yang ditemukan!");
ini.MidiinportListBox.Isenabled = false;
kembali;
}
// else, tambahkan setiap perangkat input yang terhubung ke daftar
foreach (deviceInformation deviceInfo di midiinputDevices)
{
ini.MidiinportListBox.Item.Tambahkan (DeviceInfo.Nama);
}
ini.MidiinportListBox.Isenabled = true;
} Menghubungkan Perangkat Output MIDI bekerja dengan cara yang sama persis dengan menyebutkan perangkat input, kecuali bahwa Anda harus menentukan string pemilih yang dikembalikan oleh Midioutport.GetDeviceselector Saat menelepon Findallasync.
Tugas Async Pribadi ENUMERATEMIDIOUTPUTDEVICES ()
{
// Temukan semua perangkat MIDI output
string midioutportQueryString = midioutport.GetDeviceselector ();
DeviceInformationCollection midioutputDevices = menunggu informasi device.Findallasync (midioutportQueryString);
MidioutportListBox.Item.Jernih();
// kembalikan jika tidak ada perangkat eksternal yang terhubung
if (midioutputDevices.Count == 0)
{
ini.MidioutportListBox.Item.Tambahkan ("Tidak ada perangkat output MIDI yang ditemukan!");
ini.MidioutportListBox.Isenabled = false;
kembali;
}
// else, tambahkan setiap perangkat input yang terhubung ke daftar
foreach (deviceInformation deviceInfo di midioutputDevices)
{
ini.MidioutportListBox.Item.Tambahkan (DeviceInfo.Nama);
}
ini.MidioutportListBox.Isenabled = true;
} Buat Kelas Pembantu Pengamat Perangkat
Itu Windows.Perangkat.Enumerasi Namespace menyediakan DeviceWatcher yang dapat memberi tahu aplikasi Anda jika perangkat ditambahkan atau dihapus dari sistem, atau jika informasi untuk perangkat diperbarui. Karena aplikasi mid-enabled biasanya tertarik pada perangkat input dan output, contoh ini membuat kelas pembantu yang mengimplementasikan DeviceWatcher pola, sehingga kode yang sama dapat digunakan untuk input MIDI dan perangkat output MIDI, tanpa perlu duplikasi.
Tambahkan kelas baru ke proyek Anda untuk berfungsi sebagai pengamat perangkat Anda. Dalam contoh ini, kelas dinamai Mymididevicewatcher. Sisa kode di bagian ini digunakan untuk mengimplementasikan kelas pembantu.
Tambahkan beberapa variabel anggota ke kelas:
- A DeviceWatcher objek yang akan memantau perubahan perangkat.
- String pemilih perangkat yang akan berisi midi di string pemilih port untuk satu instance dan string pemilih port midi out untuk instance lain.
- A Kotak daftar kontrol yang akan diisi dengan nama perangkat yang tersedia.
- A Coredispatcher yang diperlukan untuk memperbarui UI dari utas selain utas UI.
DeviceWatcher DeviceWatcher;
string deviceselectorString;
ListBox DeviceListBox;
Coredispatcher coredispatcher; Tambah sebuah DeviceInformationCollection Properti yang digunakan untuk mengakses daftar perangkat saat ini dari luar kelas pembantu.
public deviceInformationCollection deviceInformationCollection {get; set pribadi; } Di konstruktor kelas, penelepon lewat di string pemilih perangkat midi, Kotak daftar untuk mendaftar perangkat, dan Operator perlu memperbarui UI.
Panggilan Informasi Perangkat.Createwatcher untuk membuat instance baru dari DeviceWatcher kelas, lewat di string pemilih perangkat midi.
Daftarkan penangan untuk penangan acara Watcher.
MyMidIdeviceWatcher publik (String MididevicesElectorString, ListBox MididevicelistBox, Dispatcher CorEdispatcher)
{
Perangkat SelectorString = MidideviceselectorString;
devicelistbox = mididevicelistbox;
corEdispatcher = Dispatcher;
deviceWatcher = DeviceInformation.Createwatcher (deviceselectorString);
DeviceWatcher.Ditambahkan += deviceWatcher_added;
DeviceWatcher.Dihapus += deviceWatcher_removed;
DeviceWatcher.Diperbarui += DeviceWatcher_Updated;
DeviceWatcher.EnumerationCompleted += deviceWatcher_enumerationCompleted;
} Pertanyaan 1: Bagaimana saya bisa menyebutkan perangkat input MIDI di aplikasi Windows universal?
Anda dapat menyebutkan perangkat input MIDI di aplikasi Windows universal dengan menggunakan Findallasync metode Informasi Perangkat kelas. Untuk menentukan bahwa Anda hanya ingin menemukan perangkat input MIDI, gunakan string pemilih yang dikembalikan oleh Midiinport.GetDeviceselector. Lingkarkan melalui Informasi Perangkat objek di yang dikembalikan DeviceInformationCollection dan tambahkan nama masing -masing perangkat ke kontrol ListBox.
Pertanyaan 2: Bagaimana saya bisa menyebutkan perangkat output MIDI di aplikasi Windows universal?
Anda dapat menyebutkan perangkat output MIDI di aplikasi Windows universal dengan menggunakan metode yang sama dengan menyebutkan perangkat input. Cukup gunakan string pemilih yang dikembalikan oleh Midioutport.GetDeviceselector sebaliknya saat menelepon Findallasync.
Pertanyaan 3: Bagaimana cara membuat kelas pembantu pengamat perangkat di aplikasi Windows universal?
Anda dapat membuat kelas pembantu pengamat perangkat di aplikasi Windows universal dengan mengimplementasikan DeviceWatcher pola dari Windows.Perangkat.Enumerasi namespace. Ini memungkinkan aplikasi Anda untuk diberitahu ketika perangkat ditambahkan atau dihapus dari sistem, atau jika informasi untuk perangkat diperbarui. Kelas helper dapat digunakan untuk input MIDI dan perangkat output tanpa duplikasi kode.
Pertanyaan 4: Bagaimana Saya Bisa Menggunakan Kontrol ListBox Untuk Mendaftar Perangkat Input MIDI Di Aplikasi Universal Windows?
Dalam aplikasi Universal Windows, Anda dapat menggunakan kontrol ListBox untuk mendaftar perangkat input MIDI. Tambahkan kontrol ListBox ke halaman XAML Anda dan mengisinya dengan nama -nama perangkat input MIDI dengan melingkarkan melalui Informasi Perangkat objek di DeviceInformationCollection diperoleh dari Findallasync.
Pertanyaan 5: Bagaimana Saya Dapat Menggunakan Kontrol ListBox Untuk Mendaftar Perangkat Output MIDI Di Aplikasi Universal Windows?
Menggunakan Kontrol ListBox untuk mencantumkan perangkat output MIDI di aplikasi Universal Windows mirip dengan Daftar Perangkat Input. Cukup dapatkan DeviceInformationCollection untuk perangkat output menggunakan Findallasync dan mengulangi Informasi Perangkat objek untuk mengisi kontrol kotak daftar.
Pertanyaan 6: Bagaimana cara memperbarui UI dari utas selain utas UI di aplikasi Windows universal?
Anda dapat memperbarui UI dari utas selain utas UI di aplikasi Windows universal dengan menggunakan Coredispatcher kelas. Lewati instance coredispatcher ke kelas pembantu pengamat perangkat dan gunakan itu Runasync metode untuk menjalankan kode di utas UI.
Pertanyaan 7: Bagaimana saya bisa memantau perubahan perangkat dalam aplikasi Windows universal?
Dalam aplikasi Universal Windows, Anda dapat memantau perubahan perangkat dengan menggunakan DeviceWatcher kelas. Mendaftar penangan acara untuk Ditambahkan, DIHAPUS, Diperbarui, Dan Enumeration completed Peristiwa Pengamat Perangkat yang akan diberitahu ketika perangkat ditambahkan, dihapus, diperbarui, atau ketika operasi enumerasi selesai.
Pertanyaan 8: Bagaimana saya bisa menangani acara saat perangkat MIDI baru ditambahkan dalam aplikasi Windows universal?
Anda dapat menangani acara tersebut ketika perangkat MIDI baru ditambahkan dalam aplikasi Windows universal dengan berlangganan Ditambahkan Acara Pengamat Perangkat. Di event handler, Anda dapat memperbarui UI untuk mencerminkan perangkat baru.
Pertanyaan 9: Bagaimana saya bisa menangani acara saat perangkat MIDI dihapus di aplikasi Windows universal?
Untuk menangani acara saat perangkat MIDI dihapus di aplikasi Windows universal, berlangganan DIHAPUS Acara Pengamat Perangkat. Di event handler, Anda dapat memperbarui UI untuk menghapus perangkat dari daftar.
Pertanyaan 10: Bagaimana saya bisa menangani acara saat informasi untuk perangkat MIDI diperbarui dalam aplikasi Windows universal?
Dalam aplikasi Universal Windows, Anda dapat menangani acara tersebut ketika informasi untuk perangkat MIDI diperbarui dengan berlangganan Diperbarui Acara Pengamat Perangkat. Di event handler, Anda dapat memperbarui UI untuk mencerminkan informasi yang diperbarui dari perangkat.
Pertanyaan 11: Bagaimana saya bisa menentukan apakah tidak ada perangkat input MIDI yang tersedia di aplikasi Windows universal?
Dalam aplikasi Universal Windows, Anda dapat menentukan apakah tidak ada perangkat input MIDI yang tersedia dengan memeriksa jumlah DeviceInformationCollection diperoleh dari Findallasync. Jika jumlahnya 0, itu berarti tidak ada perangkat input MIDI yang tersedia.
Pertanyaan 12: Bagaimana saya bisa menentukan apakah tidak ada perangkat output MIDI yang tersedia di aplikasi Windows universal?
Dalam aplikasi Universal Windows, Anda dapat menentukan apakah tidak ada perangkat output MIDI yang tersedia dengan memeriksa jumlah DeviceInformationCollection diperoleh dari Findallasync. Jika jumlahnya 0, itu berarti tidak ada perangkat output MIDI yang tersedia.
Pertanyaan 13: Bagaimana saya bisa menangani acara saat enumerasi perangkat MIDI diselesaikan dalam aplikasi Windows universal?
Anda dapat menangani acara tersebut saat enumerasi perangkat MIDI diselesaikan dalam aplikasi Windows universal dengan berlangganan Enumeration completed Acara Pengamat Perangkat. Di pawang, Anda dapat melakukan tindakan yang diperlukan setelah enumerasi selesai.
Pertanyaan 14: Bagaimana cara memeriksa apakah perangkat MIDI tertentu adalah perangkat input atau perangkat output di aplikasi Windows universal?
Dalam aplikasi Universal Windows, Anda dapat memeriksa apakah perangkat MIDI tertentu adalah perangkat input atau perangkat output dengan menggunakan Informasi Perangkat properti objek. Properti perangkat berisi informasi tentang jenis perangkat, seperti apakah itu perangkat input atau output.
Pertanyaan 15: Bagaimana Saya Dapat Mengakses Daftar Perangkat Midi Saat Ini Dari Luar Kelas Pembantu Pengamat Perangkat di Aplikasi Universal Windows?
Dalam aplikasi Universal Windows, Anda dapat mengakses daftar perangkat MIDI saat ini dari luar kelas pembantu pengamat perangkat dengan menggunakan properti. Buat tipe properti publik DeviceInformationCollection di kelas helper dan menetapkan nilainya setiap kali daftar perangkat diperbarui. Anda kemudian dapat mengakses properti ini dari bagian lain dari aplikasi Anda untuk mendapatkan daftar perangkat MIDI saat ini.
Driver MIDI Windows 10: Cara menginstalnya dalam beberapa langkah
Tim Windows akan senang mendengar tanggapan Anda. Harap simpan umpan baliknya menggunakan situs Windows Developer UserVoice kami. Jika Anda memiliki bug langsung, silakan gunakan alat umpan balik Windows yang dibangun langsung ke Windows 10.
Midi
Artikel ini menunjukkan kepada Anda cara menyebutkan perangkat MIDI (Instrumen Digital Instrumen Musik) dan mengirim dan menerima pesan MIDI dari aplikasi Windows universal. Windows 10 mendukung MIDI di atas USB (driver yang sesuai dengan kelas dan kebanyakan milik kelas), MIDI di atas Bluetooth LE (Edisi Anniversary Windows 10 dan kemudian), dan melalui produk pihak ketiga yang tersedia secara bebas, MIDI di atas Ethernet dan MIDI yang dirutekan.
Hitung perangkat MIDI
Sebelum menyebutkan dan menggunakan perangkat MIDI, tambahkan ruang nama berikut ke proyek Anda.
menggunakan windows.Perangkat.Enumerasi; menggunakan windows.Perangkat.Midi; menggunakan sistem.Threading.Tugas; Tambah sebuah Kotak daftar Kontrol ke halaman XAML Anda yang akan memungkinkan pengguna untuk memilih salah satu perangkat input MIDI yang terpasang pada sistem. Tambahkan yang lain untuk mendaftar perangkat output MIDI.
Itu Findallasync metode Informasi Perangkat Kelas digunakan untuk menyebutkan berbagai jenis perangkat yang dikenali oleh Windows. Untuk menentukan bahwa Anda hanya ingin metode menemukan perangkat input MIDI, gunakan string pemilih yang dikembalikan oleh Midiinport.GetDeviceselector. Findallasync mengembalikan a DeviceInformationCollection yang berisi a Informasi Perangkat Untuk setiap perangkat input MIDI yang terdaftar di sistem. Jika koleksi yang dikembalikan tidak mengandung item, maka tidak ada perangkat input MIDI yang tersedia. Jika ada item dalam koleksi, lilitkan melalui Informasi Perangkat objek dan tambahkan nama setiap perangkat ke perangkat input MIDI Kotak daftar.
Tugas Async Pribadi EnumerateMidiInputDevices () < // Find all input MIDI devices string midiInputQueryString = MidiInPort.GetDeviceSelector(); DeviceInformationCollection midiInputDevices = await DeviceInformation.FindAllAsync(midiInputQueryString); midiInPortListBox.Items.Clear(); // Return if no external devices are connected if (midiInputDevices.Count == 0) < this.midiInPortListBox.Items.Add("No MIDI input devices found!"); this.midiInPortListBox.IsEnabled = false; return; >// else, tambahkan setiap perangkat input yang terhubung ke daftar foreach (deviceInformation deviceInfo di midiinputDevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >ini.MidiinportListBox.Isenabled = true; > Menghubungkan Perangkat Output MIDI bekerja dengan cara yang sama persis dengan menyebutkan perangkat input, kecuali bahwa Anda harus menentukan string pemilih yang dikembalikan oleh Midioutport.GetDeviceselector Saat menelepon Findallasync.
Tugas Async Pribadi ENUMERATEMIDIOUTPUTDEVICES () < // Find all output MIDI devices string midiOutportQueryString = MidiOutPort.GetDeviceSelector(); DeviceInformationCollection midiOutputDevices = await DeviceInformation.FindAllAsync(midiOutportQueryString); midiOutPortListBox.Items.Clear(); // Return if no external devices are connected if (midiOutputDevices.Count == 0) < this.midiOutPortListBox.Items.Add("No MIDI output devices found!"); this.midiOutPortListBox.IsEnabled = false; return; >// else, tambahkan setiap perangkat input yang terhubung ke daftar foreach (deviceInformation deviceInfo di midioutputDevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >ini.MidioutportListBox.Isenabled = true; > Buat Kelas Pembantu Pengamat Perangkat
Itu Windows.Perangkat.Enumerasi Namespace menyediakan DeviceWatcher yang dapat memberi tahu aplikasi Anda jika perangkat ditambahkan atau dihapus dari sistem, atau jika informasi untuk perangkat diperbarui. Karena aplikasi mid-enabled biasanya tertarik pada perangkat input dan output, contoh ini membuat kelas pembantu yang mengimplementasikan DeviceWatcher pola, sehingga kode yang sama dapat digunakan untuk input MIDI dan perangkat output MIDI, tanpa perlu duplikasi.
Tambahkan kelas baru ke proyek Anda untuk berfungsi sebagai pengamat perangkat Anda. Dalam contoh ini kelasnya dinamai Mymididevicewatcher. Sisa kode di bagian ini digunakan untuk mengimplementasikan kelas pembantu.
Tambahkan beberapa variabel anggota ke kelas:
- A DeviceWatcher objek yang akan memantau perubahan perangkat.
- String pemilih perangkat yang akan berisi midi di string pemilih port untuk satu instance dan string pemilih port midi out untuk instance lain.
- A Kotak daftar kontrol yang akan diisi dengan nama perangkat yang tersedia.
- A Coredispatcher yang diperlukan untuk memperbarui UI dari utas selain utas UI.
DeviceWatcher DeviceWatcher; string deviceselectorString; ListBox DeviceListBox; Coredispatcher coredispatcher; Tambah sebuah DeviceInformationCollection Properti yang digunakan untuk mengakses daftar perangkat saat ini dari luar kelas pembantu.
Public DeviceInformationCollection DeviceInformationCollection
Di kelas konstruktor, penelepon lewat di string pemilih perangkat midi, Kotak daftar untuk mendaftar perangkat, dan Operator perlu memperbarui UI.
Panggilan Informasi Perangkat.Createwatcher untuk membuat instance baru dari DeviceWatcher kelas, lewat di string pemilih perangkat midi.
Daftarkan penangan untuk penangan acara Watcher.
MyMidIdeviceWatcher publik (String MididevicesElectorString, ListBox MididevicelistBox, Dispatcher CorEdispatcher)
Itu DeviceWatcher memiliki acara berikut:
- Ditambahkan – Dinaikkan saat perangkat baru ditambahkan ke sistem.
- DIHAPUS – Dinaikkan saat perangkat dihapus dari sistem.
- Diperbarui – Dinaikkan ketika informasi yang terkait dengan perangkat yang ada diperbarui.
- Enumeration completed – Dibesarkan saat pengamat telah menyelesaikan pencacahan jenis perangkat yang diminta.
Dalam acara penangan untuk masing -masing acara ini, metode pembantu, UpdateDededevices, dipanggil untuk memperbarui Kotak daftar dengan daftar perangkat saat ini. Karena UpdateDededevices memperbarui elemen UI dan penangan acara ini tidak dipanggil pada utas UI, setiap panggilan harus dibungkus dalam panggilan ke Runasync, yang menyebabkan kode yang ditentukan dijalankan pada utas UI.
Async void private deviceWatcher_removed (pengirim devicewatcher, deviceinformationupdate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async Void DeviceWatcher_Added (pengirim DevICeWatcher, DeviceInformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Async Private Void DeviceWatcher_enumerationCompleted (pengirim devicewatcher, objek args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Async void pribadi devicewatcher_updated (pengirim devicewatcher, deviceinformationupdate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Itu UpdateDededevices Panggilan Metode Pembantu Informasi Perangkat.Findallasync dan memperbarui Kotak daftar dengan nama perangkat yang dikembalikan seperti yang dijelaskan sebelumnya dalam artikel ini.
Private Async void updateDevices () < // Get a list of all MIDI devices this.DeviceInformationCollection = await DeviceInformation.FindAllAsync(deviceSelectorString); deviceListBox.Items.Clear(); if (!this.DeviceInformationCollection.Any()) < deviceListBox.Items.Add("No MIDI devices found!"); >foreach (var deviceinformation dalam hal ini.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >> Tambahkan metode untuk memulai pengamat, menggunakan DeviceWatcher objek Awal metode, dan untuk menghentikan pengamat, menggunakan Berhenti metode.
public void startwatcher () < deviceWatcher.Start(); >stopwatcher public void ()
Berikan destruktor untuk membatalkan pendaftaran penangan acara pengamat dan mengatur pengamat perangkat ke null.
~ MymidideviceWatcher ()
Buat port MIDI untuk mengirim dan menerima pesan
Dalam kode di belakang untuk halaman Anda, nyatakan variabel anggota untuk memegang dua contoh Mymididevicewatcher kelas penolong, satu untuk perangkat input dan satu untuk perangkat output.
MyMidIdeviceWatcher InputDeviceWatcher; MyMidIdeviceWatcher outputDeviceWatcher; Buat instance baru dari kelas pembantu pengamat, lewat di string pemilih perangkat, Kotak daftar untuk diisi, dan Coredispatcher objek yang dapat diakses melalui halaman Operator Properti. Kemudian, panggil metode untuk memulai setiap objek DeviceWatcher.
Tak lama setelah masing -masing DeviceWatcher dimulai, itu akan selesai menghitung perangkat saat ini yang terhubung ke sistem dan menaikkannya Enumeration completed acara, yang akan menyebabkan masing -masing Kotak daftar untuk diperbarui dengan perangkat MIDI saat ini.
inputDeviceWatcher = mymidideviceWatcher baru (midiinport.GetDeviceselector (), midiinportListBox, Dispatcher); InputDeviceWatcher.Startwatcher (); OutputDeviceWatcher = mymidideviceWatcher baru (midioutport.Getdeviceselector (), midioutportlistbox, dispatcher); OutputDeviceWatcher.Startwatcher (); Saat pengguna memilih item di input MIDI Kotak daftar, itu Seleksi yang berubah Acara dinaikkan. Di pawang untuk acara ini, akses DeviceInformationCollection Properti kelas pembantu untuk mendapatkan daftar perangkat saat ini. Jika ada entri dalam daftar, pilih Informasi Perangkat objek dengan indeks yang sesuai dengan Kotak daftar kontrol SelectedIndex.
Buat Midiinport objek yang mewakili perangkat input yang dipilih dengan menelepon Midiinport.Fromidasync, lewat di Pengenal Properti perangkat yang dipilih.
Daftarkan pawang untuk Pesan diterima acara, yang dinaikkan setiap kali pesan MIDI diterima melalui perangkat yang ditentukan.
Midiinport midiinport; Imidioutport midioutport; Private Async void midiinportListBox_SelectionChanged (pengirim objek, selectionChangedEventArgs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = deviceInformationCollection [midiinportListBox.SelectedIndex]; if (devinfo == null) < return; >midiinport = menunggu midiinport.Fromidasync (Devinfo.Pengenal); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >midiinport.Messagereceived += midiinport_messagereceived; > Ketika Pesan diterima pawang dipanggil, pesan terkandung di Pesan properti dari MidimessagereceivedEventArgs. Itu Jenis dari objek pesan adalah nilai dari MidimessageType Pencacahan menunjukkan jenis pesan yang diterima. Data pesan tergantung pada jenis pesan. Contoh ini memeriksa untuk melihat apakah pesan tersebut adalah catatan pada pesan dan, jika demikian, mengeluarkan saluran midi, catatan, dan kecepatan pesan.
private void midiinport_messagereceived (pengirim midiinport, midimessagereceivedEventArgs args) < IMidiMessage receivedMidiMessage = args.Message; System.Diagnostics.Debug.WriteLine(receivedMidiMessage.Timestamp.ToString()); if (receivedMidiMessage.Type == MidiMessageType.NoteOn) < System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Channel); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Note); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Velocity); >> Itu Seleksi yang berubah Handler untuk perangkat output Kotak daftar Bekerja sama dengan pawang untuk perangkat input, kecuali tidak ada penangan acara yang terdaftar.
Private Async Void MidioutportListBox_SelectionChanged (pengirim objek, selectionChangedEventArgs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = deviceInformationCollection [midioutportListBox.SelectedIndex]; if (devinfo == null) < return; >midioutport = menunggu midioutport.Fromidasync (Devinfo.Pengenal); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >> Setelah perangkat output dibuat, Anda dapat mengirim pesan dengan membuat yang baru Imidimessage Untuk jenis pesan yang ingin Anda kirim. Dalam contoh ini, pesannya adalah a Noteonmessage. Itu Mengirim pesan metode Imidioutport objek dipanggil untuk mengirim pesan.
Saluran byte = 0; Catatan byte = 60; Kecepatan byte = 127; Imidimessage midimessageToSend = midinoteOnmessage baru (saluran, catatan, kecepatan); Midioutport.Sendmessage (midimessageToSend); Saat aplikasi Anda dinonaktifkan, pastikan untuk membersihkan sumber daya aplikasi Anda. Buka register penangan acara Anda dan atur midi di objek port dan port ke null. Hentikan Pengamat Perangkat dan atur ke NULL.
InputDeviceWatcher.Stopwatcher (); inputDeviceWatcher = null; OutputDeviceWatcher.Stopwatcher (); outputDeviceWatcher = null; midiinport.Messagereceived -= midiinport_messagereceived; midiinport.Membuang(); midiinport = null; Midioutport.Membuang(); midioutport = null; Menggunakan Windows General Midi Synth bawaan
Saat Anda menyebutkan perangkat MIDI output menggunakan teknik yang dijelaskan di atas, aplikasi Anda akan menemukan perangkat MIDI yang disebut “Microsoft GS Wavetable Synth”. Ini adalah synthesizer midi umum bawaan yang dapat Anda mainkan dari aplikasi Anda. Namun, mencoba membuat outport MIDI ke perangkat ini akan gagal kecuali Anda telah memasukkan ekstensi SDK untuk synth bawaan dalam proyek Anda.
Untuk memasukkan ekstensi SDK Synth General MIDI dalam proyek aplikasi Anda
- Di dalam Penjelajah solusi, Di bawah proyek Anda, klik kanan Referensi dan pilih Tambahkan referensi.
- Perluas Windows universal node.
- Pilih Ekstensi.
- Dari daftar ekstensi, pilih Microsoft General MIDI DLS untuk Aplikasi Universal Windows.
CATATAN Jika ada beberapa versi ekstensi, pastikan untuk memilih versi yang cocok dengan target untuk aplikasi Anda. Anda dapat melihat versi SDK mana yang ditargetkan aplikasi Anda di Aplikasi Tab Properti Project.
Driver MIDI Windows 10: Cara menginstalnya dalam beberapa langkah

Untuk memperbaiki berbagai masalah PC, kami sarankan DriverFix: Perangkat lunak ini akan membuat driver Anda tetap berjalan dan berjalan, sehingga membuat Anda aman dari kesalahan komputer umum dan kegagalan perangkat keras. Periksa semua driver Anda sekarang dalam 3 langkah mudah:
- Unduh DriverFix (File Unduh Terverifikasi).
- Klik Mulai Pindai untuk menemukan semua pengemudi yang bermasalah.
- Klik Perbarui driver untuk mendapatkan versi baru dan menghindari kerusakan sistem.
- DriverFix telah diunduh oleh 0 pembaca bulan ini.
MIDI adalah istilah teknis untuk antarmuka digital alat musik, dan terdiri dari perangkat yang dapat terhubung ke banyak perangkat musik.
Driver MIDI awalnya dibuat untuk mengontrol keyboard dari komputer. Driver MIDI telah berkembang selama bertahun -tahun dan sekarang digunakan oleh jutaan pengguna Windows 10 di seluruh planet ini.
Kasus tertentu menyangkut windows 10 bluetooth midi driver karena ini tampaknya lebih halus dan dapat dengan mudah gagal dikenali oleh windows.
Apakah Windows 10 mendukung MIDI di atas Bluetooth?
Ya, ya. Cukup buka Pengaturan di PC Anda dan pergi ke Perangkat, Kemudian Bluetooth & perangkat lainnya. Di sini, pilih Bluetooth dan pasangkan perangkat Anda.
Namun, beberapa pengguna melaporkan bahwa perangkat MIDI mereka tidak lagi dikenali setelah pembaruan Windows. Jika itu juga kasus Anda, di sini’S APA YANG KAMI SUDUT:

- Hapus semua perangkat MIDI yang terhubung dan cobalah untuk memasangkannya lagi (seperti yang ditunjukkan di atas)
- Klik kanan ikon volume di bilah tugas dan pilih Suara. Jika perangkat MIDI Anda hilang, pilihlah Tampilkan perangkat yang terputus/dinonaktifkan dan lihat apakah itu membantu.
Bagaimana cara menginstal driver midi di windows 10?
1. Gunakan Pemecahan Masalah Windows
- Arahkan ke Taskbar kotak pencarian.
- Jenis Pemecahan masalah.
- Pilih Pemecahan masalah dari daftar.
- Pilih Perangkat keras dan perangkat dari pemecah masalah.

- Setelah pemecah masalah terbuka klik Berikutnya.
- Pilih program yang tidak berfungsi dari daftar yang dihuni.
- Pilih opsi pemecahan masalah yang diinginkan.

Kebanyakan perangkat keras adalah plug-and-play. Ini berarti bahwa mereka hanya terhubung ke komputer dan komputer akan menginstal driver yang benar.
Ini tidak’T selalu berolahraga di pengguna’ bantuan dan penyelam harus diunduh dari sumber yang berbeda. Sebelum meluangkan waktu untuk mencari pengemudi melakukan tugas -tugas berikut untuk memecahkan masalah:
Pemecah masalah akan menguji program untuk memastikan bahwa itu berhasil. Jalankan Pemecahan Masalah Kompatibilitas untuk program lain yang tidak kompatibel.
Tidak cocok? Bukan masalah

- Klik di kotak Pencarian Taskbar.
- Jenis Jalankan program.
- Pilih Jalankan program yang dibuat untuk versi Windows sebelumnya.
- Ini akan membuka Pemecahan Masalah Kompatibilitas.
- Ikuti petunjuk di layar.
Jadi kamu’VE mencoba menjalankan pemecah masalah dan itu tidak’T bekerja. Itu’s oke, bangkit kembali dan coba lagi. Ada cara untuk membuat program Anda kompatibel dengan versi Windows Anda. Di Sini’s bagaimana melakukannya:
Pastikan Anda menjalankan pemecahan masalah kompatibilitas untuk setiap program yang membutuhkan driver.
Kiat ahli:
Disponsori
Driver yang sudah ketinggalan zaman adalah alasan utama kesalahan & masalah sistem. Jika beberapa file Anda hilang atau macet, solusi otomatis seperti Driverfix dapat menyelesaikan masalah ini hanya dalam beberapa klik. Dan itu juga ringan di sistem Anda!
Apakah Anda mengalami masalah dengan pemecah masalah Windows? Di Sini’s Panduan hebat untuk memperbaiki pemecah masalah jika berhenti bekerja untuk Anda.
2. Cari driver
Menginstal driver secara manual adalah opsi Anda berikutnya. Instalasi manual driver bisa berbahaya jika Anda mengunduh driver dari sumber yang tidak diketahui atau tidak dikenal.
Pastikan semua pengemudi diunduh dari sumber tepercaya seperti produsen’ situs web.
Perbarui driver secara otomatis
Jika kamu tidak’T ingin melalui kesulitan mencari secara manual di web untuk driver terbaru yang tersedia, kami sarankan menggunakan perangkat lunak pembaruan driver pihak ketiga yang secara otomatis akan melakukannya untuk Anda.
Perangkat lunak tidak hanya akan dengan mudah memperbarui firmware Anda, tetapi juga akan terus memindai perangkat Anda untuk driver baru dengan sendirinya, jadi Anda tidak melakukannya’bahkan harus melakukan itu.
3. Jalankan dalam mode kompatibilitas

- Temukan program yang Anda’Re melihat untuk berlari Mode kompatibilitas.
- Klik kanan pada program dan pilih Properti.
- Klik pada Tab Kompatibilitas.
- Klik pada kotak di bawah mode kompatibilitas.
- Pilih versi Windows yang dapat dikerjakan oleh program.
- Klik Menerapkan.
Sebagian besar program memiliki opsi untuk berjalan dalam mode kompatibilitas. Untuk menjalankan program Anda dalam mode ini, lakukan langkah -langkah yang disebutkan di atas.
Baca lebih lanjut tentang topik ini
- Perbaiki kesalahan pelanggaran driver di Windows 10
- Cara memperbaiki kesalahan driver yang sudah ketinggalan zaman di windows 11
- Windows tidak dapat mengunduh driver? Perbaiki sekarang dengan solusi ini
- Perbaiki kesalahan ACPI_DRIVER_INTERNAL di Windows 10
- Melihat kode kesalahan driver 32? Perbaiki dalam 4 langkah sederhana
4. Saat semuanya gagal
Driver MIDI secara signifikan lebih sulit dipasang di Windows 10 karena sejumlah masalah kompatibilitas. Masing -masing perbaikan yang disebutkan dalam artikel ini berpotensi memperbaiki masalah untuk pengemudi Anda.
Jika kamu’kehabisan opsi hubungi produsen untuk perangkat Anda dan minta bantuan atau lokasi pengemudi yang kompatibel.
Itu’S tentang itu untuk artikel ini. Jika Anda memiliki sesuatu untuk ditambahkan mengenai subjek, jangan ragu untuk melakukannya di bagian komentar di bawah ini.
- pengemudi
- Panduan Windows 10
Peningkatan MIDI di Windows 10
Seiring perkembangan Windows 10, kami terus membangun dukungan untuk teknologi yang berfokus pada musisi.
Membiarkan’S Lihatlah di Midi. Windows memiliki dukungan MIDI bawaan kembali ke 16-bit hari. Sejak itu, sebagian besar antarmuka MIDI telah pindah ke USB dan dukungan in-box kami telah mengimbangi, dengan driver kelas dan API yang mendukung antarmuka baru tersebut.
Mereka yang tidak terbiasa dengan teknologi musik mungkin menganggap MIDI sebagai adil .file musik tengah. Tapi itu’hanya sebagian kecil dari apa sebenarnya MIDI. Sejak standardisasi pada tahun 1983, MIDI tetap menjadi protokol komunikasi yang paling banyak digunakan dan paling penting dalam produksi musik. Dia’s Digunakan untuk semuanya mulai dari mengendalikan synthesizer dan sequencer dan mengganti tambalan untuk daftar set, hingga menyinkronkan mixer dan bahkan mengganti kamera pada podcast menggunakan permukaan kontrol MIDI. Bahkan protokol Arduino firmata didasarkan pada MIDI.
Dalam posting ini, kami’LL Bicara tentang beberapa hal baru kami’ve dibuat untuk membuat MIDI lebih bermanfaat di aplikasi Anda:
- UWP MIDI BASICS – Menggunakan MIDI di Aplikasi Windows Store
- Dukungan Bluetooth Le Midi Baru di Pembaruan Anniversary Windows 10
- Pembungkus Win32 untuk UWP MIDI (membuat API dapat diakses ke aplikasi desktop)
- Perpustakaan Pembantu Midi untuk C# dan PowerShell
Selain itu, kami memasukkan sejumlah peningkatan yang berfokus pada audio ketika Windows 10 dirilis musim panas lalu. Peningkatan ini termasuk: peningkatan latensi rendah ke WasAPI, pekerjaan driver tambahan dengan mitra untuk ikut serta ke buffer yang lebih kecil untuk latensi yang lebih rendah pada perangkat Windows 10 modern seperti permukaan dan ponsel seperti 950/950XL; Tweak untuk memungkinkan pemrosesan audio mentah tanpa penambahan latensi DSP; Audio UWP latensi rendah dan API Efek yang baru bernama Audiograph; Dan, tentu saja, API MIDI UWP baru.
Kami’VE juga baru -baru ini menambahkan dukungan untuk audio spasial untuk pengalaman mendalam. Musim gugur yang lalu, dalam pembaruan 1511, kami mengaktifkan dukungan OS yang sangat berwawasan ke depan untuk perangkat audio Thunderbolt 3, untuk memastikan kami’kembali ke sana saat produsen mulai membuat perangkat ini dan pengemudi audio berkinerja tinggi. Secara kumulatif, ini adalah banyak karya hebat oleh Windows Engineering, semua musisi yang menargetkan dan aplikasi pembuatan musik.
Dasar -dasar MIDI UWP
Di Windows 10 RTM tahun lalu kami memperkenalkan API MIDI baru, dapat diakses oleh aplikasi UWP di hampir semua perangkat Windows 10, yang menyediakan cara modern untuk mengakses antarmuka MIDI ini. Kami membuat API ini untuk memberikan basis kinerja tinggi dan fleksibel di mana kami dapat membangun dukungan untuk antarmuka MIDI baru.
Kami awalnya menempatkan API ini untuk memberikan komentar sebagai paket Nuget di Windows 8.1 dan menerima banyak umpan balik dari pengembang aplikasi. Apa yang Anda lihat di Windows 10 adalah hasil langsung dari umpan balik itu dan pengujian kami.
API terhubung dengan baik dengan enumerasi perangkat dan API Watcher di UWP, membuatnya mudah untuk mendeteksi steker panas/mencabut perangkat saat aplikasi Anda berjalan.
Di Sini’S Cara sederhana untuk mendapatkan daftar perangkat MIDI dan ID mereka, menggunakan C#:
menggunakan windows.Perangkat.Midi;
menggunakan windows.Perangkat.Enumerasi;
..
Private Async Void ListMidIdevices ()
// Hitung Perangkat Input
var devicelist = menunggu informasi perangkat.Findallasync (
Midiinport.GetDeviceselector ());
foreach (var deviceInfo di devicelist)
Sistem.Diagnostik.Debug.WriteLine (DeviceInfo.Pengenal);
Sistem.Diagnostik.Debug.WriteLine (DeviceInfo.Nama);
Sistem.Diagnostik.Debug.WriteLine (“——-“);
>
// Perangkat output disebutkan dengan cara yang sama, tetapi
// Menggunakan midioutport.GetDeviceselector ()
>
Dan di sini’s Cara mengatur pengamat dan menangani acara enumerasi/pengamat, dan juga mendapatkan daftar antarmuka yang terhubung. Ini sedikit lebih banyak kode, tapi itu’S pendekatan yang lebih tepat untuk sebagian besar aplikasi:
Private Void StartWatchingInputDevices ()
var watcher = deviceInformation.Createwatcher (
Midiinport.GetDeviceselector ());
pengintai.Ditambahkan += onMidiInputDeviceadded;
pengintai.Dihapus += onMidiInputDeviceremoved;
pengintai.EnumerationCompleted += onMidiInputDeviceEnumerationCompeted;
Private Void onMidiInputDeviceEnumerationCompeted (
Pengirim devicewatcher, objek args)
// Pencacahan awal selesai. Inilah saat
// Anda dapat menyajikan daftar antarmuka ke
// pengguna aplikasi Anda.
>
void pribadi onmidiinputDeviceremoved (
Pengirim devicewatcher, deviceInformationupdate args)
// Tangani penghapusan perangkat input MIDI
>
void pribadi onmidiinputDeviceadded (
Pengirim devicewatcher, deviceInformation args)
// Tangani penambahan perangkat input MIDI baru
>
Menggunakan Pengamat untuk Perangkat Daftar dan Menangani Tambah/Hapus adalah praktik terbaik untuk diikuti di aplikasi Anda. Tidak ada yang mau me -restart aplikasi mereka hanya karena mereka lupa mencolokkan atau menyalakan pengontrol midi mereka. Menggunakan Watcher memudahkan aplikasi Anda untuk menangani penambahan/pelepasan tersebut saat runtime tersebut.
API mudah digunakan, dengan kelas yang sangat diketik untuk semua pesan standar, serta dukungan untuk Sysex dan operasi berbasis buffer. Contoh C# ini menunjukkan cara membuka port input dan output, dan menanggapi pesan MIDI tertentu.
menggunakan windows.Perangkat.Midi;
menggunakan windows.Perangkat.Enumerasi;
..
Private Async void midiexample ()
String outportId = “ID Anda dapatkan melalui enumerasi perangkat”;
String inportId = “ID Anda dapatkan melalui enumerasi perangkat”;
// buka port output dan kirim pesan
var outport = menunggu midioutport.Fromidasync (outportid);
var noteOnmessage = midinoteOnmessage baru (0, 110, 127);
Outport.Sendmessage (noteonmessage);
// Buka port input dan dengarkan pesan
var inport = menunggu midiinport.Fromidasync (inportid);
Inport.Messagereceived += onmidimessagereceived;
>
Private Void Onmidimessagereceived (Midiinport Samping,
MidimessagereceivedEventArgs args)
Switch (Args.Pesan.Jenis)
case midimessageType.Noteon:
merusak;
case midimessageType.PolyphonicKeyPressure:
merusak;
// dll.
>
>
Dalam kebanyakan kasus, Anda akan memeriksa jenis pesan, dan kemudian melemparkan imidimessage ke salah satu pesan yang sangat diketik yang ditentukan di jendela.Perangkat.Midi namespace, seperti midinoteonmessage atau midipitchbendchangeSage. Anda’Namun, tidak harus melakukan ini; Anda selalu dapat bekerja dari byte data mentah jika Anda mau.
API MIDI UWP Windows 10 sangat cocok untuk membuat semua jenis aplikasi Windows Store yang berfokus pada musik. Anda dapat membuat permukaan kontrol, sequencer, synthesizer, aplikasi utilitas, pustakawan patch, pengontrol pencahayaan, tesla coil sintesizer tegangan tinggi dan banyak lagi.
Sama seperti API MIDI yang lebih tua, Windows 10 UWP MIDI API bekerja dengan baik dengan tambahan pihak ketiga seperti Tobias Erichsen’S Driver RTPMIDI yang hebat, memberikan dukungan untuk MIDI atas jaringan WIRED dan Wi-Fi.
Salah satu fitur hebat dari API baru adalah multi-klien. Selama semua aplikasi dengan port terbuka menggunakan Windows 10 UWP MIDI API dan bukan Win32 MME yang lebih lama atau API DirectMusic, mereka dapat berbagi perangkat yang sama. Ini adalah sesuatu yang don apis yang lebih tua’t menangani tanpa driver khusus dan merupakan permintaan umum dari mitra dan pelanggan kami.
Akhirnya, itu’S penting untuk dicatat bahwa Windows 10 UWP MIDI API bekerja dengan semua perangkat MIDI yang diakui, apakah mereka menggunakan driver kelas atau driver khusus mereka sendiri. Ini termasuk banyak utilitas midi berbasis perangkat lunak yang diimplementasikan sebagai driver di Windows 10.
Dukungan Bluetooth Le Midi baru di UWP MIDI
Selain dukungan multi-klien dan perbaikan kami’ve dibuat dalam kinerja dan stabilitas, alasan yang bagus untuk menggunakan Windows 10 UWP MIDI API adalah karena dukungannya untuk standar dan transportasi baru.
Microsoft secara aktif berpartisipasi dalam proses standar MIDI dan memiliki perwakilan dalam kelompok kerja. Ada beberapa dari kita di dalam Microsoft yang berpartisipasi langsung dalam penciptaan, pemeriksaan dan pemungutan suara standar untuk MIDI, dan untuk audio pada umumnya.
Salah satu standar MIDI yang menarik dan relatif baru yang dengan cepat mendapatkan popularitas adalah Bluetooth Le Midi. Microsoft memilih untuk meratifikasi standar berdasarkan pekerjaan perintis yang dilakukan Apple di ruang ini; Akibatnya, Apple, Microsoft dan lainnya kompatibel dengan standar yang melihat traksi nyata dalam komunitas musisi, dan sudah memiliki sejumlah periferal yang kompatibel.
Di Windows 10 Anniversary Edition, kami’VE termasuk dukungan in-box untuk Bluetooth Le Midi untuk aplikasi apa pun menggunakan Windows 10 UWP MIDI API.
Di Windows 10 Anniversary Edition, kami’VE termasuk dukungan in-box untuk Bluetooth Le Midi untuk aplikasi apa pun menggunakan Windows 10 UWP MIDI API. Ini adalah tambahan yang tidak memerlukan perubahan pada kode Anda, karena antarmuka itu sendiri hanyalah transportasi transparan lain yang muncul oleh MIDI API.
Jenis antarmuka MIDI ini menggunakan Radio Bluetooth yang sudah ada di PC, telepon, perangkat IoT atau perangkat Windows 10 lainnya untuk berbicara dengan periferal midi Bluetooth seperti keyboard, pedal dan pengontrol. Saat ini PC itu sendiri bisa’t menjadi periferal, tapi kami’melihat itu untuk masa depan. Meskipun ada beberapa DIN MIDI yang hebat ke Bluetooth Le Midi dan adaptor serupa di luar sana, tidak ada perangkat keras tambahan yang diperlukan untuk Bluetooth Le Midi di Windows 10 selama PC Anda memiliki Radio Mampu Bluetooth Le yang tersedia yang tersedia.
Kami tahu latensi penting bagi musisi, jadi kami memastikan implementasi kami kompetitif dengan platform lain. Tentu saja, Bluetooth memiliki latensi yang lebih tinggi daripada koneksi USB kabel, tetapi tradeoff itu bisa sepadan untuk menghilangkan kekacauan kabel.
Saat dipasangkan, periferal Bluetooth Le Midi akan muncul sebagai perangkat MIDI di perangkat penjelajah, dan akan secara otomatis disertakan dalam enumerasi perangkat MIDI UWP. Ini benar -benar transparan untuk aplikasi Anda.
Untuk informasi lebih lanjut tentang cara menemukan dan memasangkan perangkat, termasuk perangkat Bluetooth Le Midi, silakan lihat pencacahan perangkat dan contoh pasangan di GitHub.
Kami menambahkan kemampuan ini dalam edisi ulang tahun Windows 10 sebagai hasil langsung dari umpan balik mitra dan pelanggan. SAYA’Saya sangat bersemangat tentang Bluetooth Le Midi di Windows 10 dan perangkat yang sekarang dapat digunakan di Windows 10.

Dukungan Aplikasi Desktop untuk API MIDI UWP
Kita tahu bahwa mayoritas musisi menggunakan desktop win32 daw dan utilitas saat membuat musik. API MIDI UWP dapat diakses oleh aplikasi desktop, tetapi kita tahu bahwa mengakses API UWP dari berbagai bahasa dan membangun lingkungan dapat menjadi tantangan.
Untuk membantu pengembang aplikasi desktop dengan API baru dan untuk mengurangi gesekan, kolega saya Dale Stammen di tim Spark WDG/PAX kami mengumpulkan pembungkus Win32 untuk Windows 10 UWP MIDI API.
Pekerjaan yang dilakukan tim kami, termasuk pembungkus API ini, sebagian besar didorong oleh mitra. Itu berarti bahwa sebagai hasil dari permintaan dan umpan balik, kami membuat hal -hal untuk memungkinkan mitra berhasil di Windows. Salah satu mitra yang bekerja dengan kami saat membuat ini adalah Cakewalk, pembuat aplikasi Sonar Desktop DAW yang populer.
Inilah yang dikatakan pengembang mereka tentang pembungkus Win32 untuk UWP MIDI API, dan dukungan kami untuk Bluetooth Le Midi:
“Kami’senang melihat Microsoft mendukung spesifikasi Bluetooth MIDI dan mengeksposnya ke pengembang Windows melalui API yang disederhanakan. Menggunakan pembungkus Win32 yang baru untuk API MIDI UWP, kami dapat membuat prototipe dukungan MIDI Bluetooth dengan sangat cepat. Di Cakewalk kami’Ke depan untuk mendukung periferal nirkabel, jadi ini adalah tambahan yang sangat disambut baik dari Microsoft.”
Noel Borthwick, CTO, Cakewalk

Kami senang bekerja dengan mitra hebat seperti Cakewalk, mengetahui bahwa hasilnya akan secara langsung bermanfaat bagi pelanggan bersama kami.
Pembungkus Win32 ini membuatnya mudah menggunakan API sama seperti API Win32 datar lainnya. Ini memunculkan semua kemampuan Windows 10 UWP MIDI API, dan menghapus persyaratan untuk aplikasi Win32 Anda. Selain itu, di sana’S tidak ada persyaratan untuk menggunakan C ++/CX atau mengubah alat dan proses build Anda. Di Sini’S A C ++ WIN32 CONSOLE CONTOH APP:
// buka port midi out 0
hasil = gmidioutportopenfunc (midiptr, 0, & gmidioutport);
if (hasilnya != Winrt_no_error)
Cout Goto Cleanup;
>
// Kirim catatan pada pesan ke port midi out
Buffer char yang tidak ditandatangani [3] = < 144, 60 , 127 >;
cout gmidioutportsendfunc (gmidioutport, buffer, 3);
// Kirim pesan catatan ke port midi out
buffer cout [0] = 128;
gmidioutportsendfunc (gmidioutport, buffer, 3);
API ini dioptimalkan untuk bekerja dengan aplikasi Win32 yang ada, jadi kami melupakan pesan MIDI yang sangat mengetik dan bekerja dengan array byte, seperti yang biasa dilakukan oleh pengembang aplikasi musik Win32.
Kami’masih mendapatkan umpan balik dari mitra dan pengembang di wrapper API, dan akan menyukai milik Anda. Anda dapat menemukan kode sumber di github. Kami dapat mengubah lokasi nanti, jadi alias.MS Link (http: // alias.MS/WIN10MIDIWIN32) adalah orang yang ingin Anda tangani.
Untuk pengembang yang menggunakan versi Visual Studio terbaru, kami’VE juga menyediakan paket nuget yang berguna.
Kami’sudah bekerja dengan mitra aplikasi desktop untuk dimasukkan ke dalam aplikasi mereka API ini menggunakan pembungkus ini, serta peningkatan pengalaman audio dan pengguna lainnya di Windows 10. Jika Anda memiliki aplikasi desktop yang menargetkan musisi pro dan memiliki pertanyaan, silakan hubungi saya di @pete_brown di Twitter, atau Pete Dot Brown di Microsoft Dot Com.
Perpustakaan Pembantu Midi untuk Aplikasi Windows Store
Selain pembungkus API Win32, kami juga memiliki beberapa perpustakaan penolong yang lebih kecil untuk pengembang aplikasi toko dan pengguna PowerShell.
Yang pertama adalah helper API MIDI Windows 10 UWP saya, untuk aplikasi C#, VB, dan C ++ Store C ++. Ini dirancang untuk membuatnya lebih mudah untuk menyebutkan perangkat MIDI, berikatan dengan hasil di XAML dan menanggapi perubahan hot steker/cabut apa pun. Dia’s tersedia baik sebagai sumber maupun sebagai paket nuget yang dikompilasi.
Ini termasuk kelas pengamat dengan koleksi yang dapat diikat / dapat diamati dengan XAML untuk instance informasi perangkat.
Pesan RPN dan NRPN
Selain itu, perpustakaan helper berisi kode untuk membantu dengan RPN (nomor parameter terdaftar) dan pesan NRPN (Non-Non-Nomor Parameter). Ini bisa lebih menantang bagi pengembang baru untuk bekerja karena mereka adalah pesan logis yang terdiri dari beberapa pesan berbeda yang dikumpulkan bersama, dikirim secara berurutan.

Karena kami mengekspos jendela.Perangkat.Midi.Antarmuka Imidimessage di UWP, dan kode output MIDI yang mendasarinya mengirimkan apa pun yang ada di buffer, membuat kelas pesan agregat yang sangat diketik cukup mudah. Saat mengirim pesan, Anda menggunakan kelas -kelas ini sama seperti pesan MIDI yang diketik kuat lainnya.
SAYA’m Investigasi menggabungkan dukungan untuk MPE yang diusulkan (ekspresi polifonik multidimensi), serta untuk penguraian dan agregasi pesan RPN dan NRPN yang masuk. Jika fitur -fitur ini akan berguna bagi Anda di aplikasi Anda sendiri, silakan hubungi saya dan beri tahu saya.
Generator Jam Midi
Satu bagian lain yang disertakan perpustakaan adalah generator jam midi. Jika Anda memerlukan generator jam midi (bukan untuk loop kontrol sequencer, tetapi hanya untuk menghasilkan pesan jam keluar), perpustakaan berisi implementasi yang akan Anda temukan berguna. Di Sini’s bagaimana Anda menggunakannya dari C#:
private midiclockgenerator _clock = midiclockgenerator baru ();
..
_jam.Sendmidistartmessage = true;
_jam.SendmidistopMessage = true;
foreach (Info Informasi Perangkat di DeviceWatcher.OutputportDescriptors)
var port = (midioutport) menunggu midioutport.Fromidasync (info.Pengenal);
if (port != null)
_jam.Outputports.Tambahkan (port);
>
public void startclock ()
_jam.Awal();
>
stopclock public void ()
_jam.Berhenti();
>
Repo GitHub saya termasuk sumber C ++/CX dan aplikasi klien C#/XAML. Sebagai tambahan: Ini adalah proyek C ++/CX pertama saya. Meskipun saya masih menemukan C# lebih mudah untuk sebagian besar tugas, saya menemukan C ++ CX di sini cukup mudah didekati. Jika kamu’re a c# pengembang yang telah berpikir untuk menggunakan c ++ cx, berikan pusaran. Anda mungkin merasa lebih akrab dari yang Anda harapkan!
Perpustakaan ini akan membantu pengembang mengikuti praktik terbaik untuk aplikasi MIDI di Windows Store. Sama seperti dengan aplikasi desktop, jika Anda’kembali membangun aplikasi yang berfokus pada musisi di sini dan memiliki pertanyaan, silakan hubungi saya di @pete_brown di Twitter, atau Pete Dot Brown di Microsoft Dot Com.
Perpustakaan Pembantu Kedua adalah satu set perintah PowerShell untuk menggunakan Windows 10 UWP MIDI API. SAYA’ve berbicara dengan orang -orang yang menggunakan ini untuk mengotomatisasi skrip pembaruan midi untuk menyinkronkan berbagai mixer dalam instalasi besar dan lainnya yang menggunakannya sebagai “lem” untuk menerjemahkan pesan di antara perangkat yang berbeda. Di sana’banyak yang dapat Anda lakukan dengan PowerShell di Windows 10, dan sekarang MIDI adalah bagian dari itu. Repo tersebut mencakup contoh penggunaan, jadi saya menang’t ulangi di sini.
Kesimpulan
SAYA’Saya sangat bersemangat tentang pekerjaan yang terus kami lakukan di ruang audio untuk membantu musisi dan pengembang aplikasi musik di Windows.
Secara keseluruhan, API MIDI UWP, pembungkus Win32 untuk UWP MIDI API, dan perpustakaan pembantu untuk aplikasi Windows Store dan untuk skrip PowerShell memungkinkan aplikasi dan skrip untuk memanfaatkan teknologi MIDI terbaru di Windows 10, termasuk Bluetooth Midi di Midi.
SAYA’Saya benar -benar menantikan aplikasi desktop dan windows store yang akan datang yang akan mendukung API ini, dan teknologi seperti Bluetooth Le Midi. Dan, seperti yang saya sebutkan di atas, silakan hubungi saya secara langsung jika Anda’kembali membangun aplikasi yang ditargetkan oleh musisi pro dan membutuhkan panduan atau memiliki pertanyaan.
Sumber daya
- Mulailah mengembangkan aplikasi UWP
- Perangkat.Dokumentasi Namespace Midi
- Sampel API MIDI UWP Resmi Windows 10
- Repo GitHub untuk Win32 MIDI Wrapper
- Pete’S github repo dengan proyek MIDI dan audio
- Paket Nuget untuk Win32 MIDI Wrapper
- Pete Brown Summer Namm 2015 Keynote Tentang Windows 10
- Asosiasi MIDI
- Studio di telapak tangan Anda: Mengembangkan aplikasi pembuatan audio dan video untuk Windows 10
- Audio spasial dengan audiograph di UWP
- Audio spasial di aplikasi dan game UWP
Unduh Visual Studio untuk memulai.
Tim Windows akan senang mendengar tanggapan Anda. Harap simpan umpan baliknya menggunakan situs Windows Developer UserVoice kami. Jika Anda memiliki bug langsung, silakan gunakan alat umpan balik Windows yang dibangun langsung ke Windows 10.
Midi Port Driver
Driver port midi mengelola perangkat synthesizer midi atau tangkap. Driver adaptor menyediakan driver miniport MIDI yang sesuai yang berikatan dengan objek driver port MIDI untuk membentuk filter MIDI (lihat filter MIDI dan DirectMusic) yang dapat menangkap atau membuat aliran MIDI.
Driver port midi memperlihatkan antarmuka iPortMidi ke driver miniport. IPortmidi mewarisi metode dalam antarmuka dasar iPort. IPortmidi Memberikan metode tambahan berikut:
Beri tahu driver port bahwa perangkat Synthesizer atau Capture MIDI telah maju ke posisi baru di aliran MIDI. Iportmidi :: RegisterServiceGroup
Mendaftarkan objek grup layanan dengan driver port. Grup Layanan berisi daftar satu atau lebih rutinitas layanan yang akan dipanggil saat pengemudi miniport menelepon Memberitahu; Untuk informasi lebih lanjut, lihat Layanan Wastafel dan Objek Grup Layanan.
Port MIDI dan objek pengemudi miniport berkomunikasi satu sama lain melalui masing -masing IPortmidi dan antarmuka iminiportmidi. Driver miniport menggunakan driver port IPortmidi antarmuka untuk memberi tahu driver port interupsi perangkat keras. Selain itu, driver port berkomunikasi dengan objek aliran driver miniport melalui antarmuka iminiportmidistream mereka.
Di Windows XP dan kemudian, IPortmidi dan antarmuka IportDMus keduanya diimplementasikan dalam satu modul driver internal tunggal. Konsolidasi ini difasilitasi oleh kesamaan dari kedua antarmuka ini. Misalnya, metode yang sama didefinisikan untuk kedua antarmuka. Aplikasi yang ditulis untuk versi windows sebelumnya tidak melihat tidak ada perubahan dalam perilaku IPortmidi Dan IPortdmus Antarmuka yang dihasilkan dari konsolidasi driver MIDI dan DMUS.
Masukan
Kirim dan lihat umpan balik untuk
Peningkatan MIDI di Windows 10
![]()
Baru -baru ini Pete Brown dari Microsoft memposting posting blog yang sangat informatif tentang peningkatan MIDI di Windows 10.
Posting blog mencakup sejumlah topik termasuk
- UWP MIDI BASICS – Menggunakan MIDI di Aplikasi Windows Store
- Dukungan Bluetooth Le Midi Baru di Pembaruan Anniversary Windows 10
- Pembungkus Win32 untuk UWP MIDI (membuat API dapat diakses ke aplikasi desktop)
- Perpustakaan Pembantu Midi untuk C# dan PowerShell
Peningkatan MIDI di Windows 10 | Membangun Aplikasi untuk Windows
“Kami senang melihat Microsoft mendukung spesifikasi MIDI Bluetooth dan mengeksposnya ke pengembang Windows melalui API yang disederhanakan. Menggunakan pembungkus Win32 yang baru untuk API MIDI UWP, kami dapat membuat prototipe dukungan MIDI Bluetooth dengan sangat cepat. Di Cakewalk kami melihat ke depan untuk mendukung periferal nirkabel, jadi ini adalah tambahan yang sangat disambut baik dari Microsoft.”
oleh Noel Borthwick, CTO, Cakewalk
Ada juga penjelasan yang bagus dalam artikel Pete tentang cara kerja RPN dan NRPN dan struktur data mereka.
![]()
Dengan rilis Windows 10, ketiga perusahaan sistem operasi utama (Apple, Google dan Microsoft) telah mengembangkan dukungan untuk standar Asosiasi Produsen MIDI untuk MIDI atas Bluetooth Low Energy yang dapat ditemukan di bagian spesifikasi situs ini dan tersedia untuk diunduh oleh anggota Asosiasi MIDI tanpa biaya.
