Windows 10’un MIDI var mı
Windows 10 MIDI Sürücüleri: Birkaç adımda nasıl kurulur
Windows ekibi geri bildiriminizi duymak ister. Lütfen Windows Geliştiricisi Uservoice sitemizi kullanarak geri bildirimleri sağlayın. Doğrudan bir hatanız varsa, lütfen doğrudan Windows 10’da oluşturulan Windows geri bildirim aracını kullanın.
MİDİ
Bu makalede, MIDI (Müzikal Enstrüman Dijital Arayüz) cihazlarının nasıl numaralandırılacağını ve Universal Windows uygulamasından MIDI mesajlarını nasıl göndereceğinizi gösteriyor. Windows 10, USB üzerinden MIDI’yi (sınıf uyumlu ve en tescilli sürücüler), MIDI’yi Bluetooth Le (Windows 10 Yıldönümü Sürümü ve daha sonra) ve serbestçe kullanılabilir üçüncü taraf ürünleri, MIDI Over Ethernet ve yönlendirilmiş MIDI’yi destekler.
MIDI Cihazlarını Numarat
MIDI cihazlarını numaralandırmadan ve kullanmadan önce, projenize aşağıdaki ad alanlarını ekleyin.
Windows kullanma.Cihazlar.Numaralandırma;
Windows kullanma.Cihazlar.Midi;
Sistemi Kullanma.İş parçacığı.Görevler;
Ekle Liste kutusu Kullanıcının sisteme bağlı MIDI giriş cihazlarından birini seçmesini sağlayacak XAML sayfanızı kontrol edin. MIDI çıkış cihazlarını listelemek için başka bir tane ekleyin.
Findallasync yöntem Cihaz bilgisi Sınıf, Windows tarafından tanınan birçok farklı cihaz türünü numaralandırmak için kullanılır. Yalnızca MIDI giriş aygıtlarını bulmak için yöntemin istediğinizi belirtmek için, Midiinport.GetDeviceLector. Findallasync A.Ş CihazInformationCollection bir Cihaz bilgisi Sisteme kayıtlı her MIDI giriş cihazı için. İade edilen koleksiyonun öğe içermiyorsa, mevcut MIDI giriş aygıtları yok. Koleksiyonda öğeler varsa, Cihaz bilgisi Nesneler ve her cihazın adını MIDI giriş cihazına ekleyin Liste kutusu.
özel async görev enumeratemidiinputDevices ()
{
// Tüm giriş MIDI cihazlarını bulun
String midiinputQueryString = MIDIINPORT.GetDeviceselector ();
CihazinFormationCollection MiNiInputDevices = Cihaz Beklenmesini Bekleyin.FindAllasync (midiinputquerystring);
MidiinportListBox.Öğeler.Temizlemek();
// harici cihaz bağlı değilse dön
if (midiinputdevices.Count == 0)
{
Bu.MidiinportListBox.Öğeler.Ekle ("MIDI giriş aygıtları yok!");
Bu.MidiinportListBox.ISEnabled = false;
geri dönmek;
}
// başka bir bağlantılı giriş aygıtını listeye ekleyin
foreach (midiinputDevices'te CihazInformation CihazInfo)
{
Bu.MidiinportListBox.Öğeler.Ekle (CihazInfo.İsim);
}
Bu.MidiinportListBox.ISEnabled = true;
}
MIDI çıkış cihazlarını numaralandırmak, giriş cihazlarını numaralandırmakla aynı şekilde çalışır, ancak tarafından döndürülen seçici dizeyi belirtmeniz gerekir Midioutport.GetDeviceLector Aradığında Findallasync.
Özel Async görev EnumeratemiDiOutputDevices ()
{
// Tüm çıkış MIDI cihazlarını bulun
String miiOutportQueryString = MIDIOUTPORT.GetDeviceselector ();
CihazinFormationCollection MIDIOUTPUTDEVICES = Cihaz Beklenmesini Bekleyin.FindAllasync (MierioutportQuerystring);
MidioutportListBox.Öğeler.Temizlemek();
// harici cihaz bağlı değilse dön
if (midioutputdevices.Count == 0)
{
Bu.MidioutportListBox.Öğeler.Ekle ("MIDI çıkış aygıtları yok!");
Bu.MidioutportListBox.ISEnabled = false;
geri dönmek;
}
// başka bir bağlantılı giriş aygıtını listeye ekleyin
foreach (midioutputDevices'te CihazInformation CihazInfo)
{
Bu.MidioutportListBox.Öğeler.Ekle (CihazInfo.İsim);
}
Bu.MidioutportListBox.ISEnabled = true;
}
Bir Cihaz Gözlemcisi Yardımcı Sınıfı Oluşturun
pencereler.Cihazlar.Numaralandırma Ad alanı Cihaz cihazlar sistemden eklenirse veya kaldırılırsa veya bir cihazın bilgileri güncellenirse uygulamanızı bilgilendirebilir. Midi-etkin uygulamalar genellikle hem giriş hem de çıkış aygıtlarıyla ilgilendiğinden, bu örnek, Cihaz desen, böylece aynı kod, çoğaltılmaya gerek kalmadan hem MIDI girişi hem de MIDI çıkış aygıtları için kullanılabilir.
Cihaz gözlemciniz olarak hizmet vermek için projenize yeni bir sınıf ekleyin. Bu örnekte, sınıf adı verildi MymidideViceWatcher. Bu bölümdeki kodun geri kalanı, yardımcı sınıfı uygulamak için kullanılır.
Sınıfa bazı üye değişkenler ekleyin:
- A Cihaz Cihaz değişikliklerini izleyecek nesne.
- Bir örnek için bağlantı noktası seçici dizesinde MIDI içerecek bir aygıt seçici dizesi ve başka bir örnek için MIDI çıkış bağlantı noktası seçici dizesi.
- A Liste kutusu mevcut cihazların adlarıyla doldurulacak kontrol.
- A Coredispatcher Kullanıcı arayüzünü kullanıcı arayüzü dışındaki bir iş parçacığından güncellemek için gereklidir.
CihazWatcher CihazWatcher;
String CihazlarLectorString;
ListBox DeviceListBox;
Coredispatcher Coredispatcher;
Ekle CihazInformationCollection Yardımcı sınıfın dışından mevcut cihaz listesine erişmek için kullanılan özellik.
public CihazInformationCollection CihazInformationCollection {get; özel set; }
Sınıf yapıcısında, arayan MIDI aygıt seçici dizesinden geçer, Liste kutusu Cihazları listelemek için ve Görevli kullanıcı arayüzünü güncellemek için gerekli.
Arama Cihaz bilgisi.Createwatcher Yeni bir örneği oluşturmak için Cihaz Sınıf, MIDI aygıt seçici dizesinden geçiyor.
Gözlemcinin etkinlik işleyicileri için işleyicileri kaydettirin.
public mymidideViceWatcher (String MidIdeVicesElectorString, ListBox MidIdeVicelistBox, Coredispatcher Dispatcher) { CihazLeStorString = midIdeViceselectorString; deviceListBox = midideVicelistBox; coredispatcher = dispatcher; CihazWatcher = CihazInformation.CreateWatcher (cihazlarLeCtorString); cihaz.Eklendi += cihazwatcher_added; cihaz.Kaldırıldı += cihazwatcher_removed; cihaz.Güncellenmiş += CihazWatcher_updated; cihaz.Numaralandırma işlemi += CihazWatcher_enumerationCompleted; }
Soru 1: Evrensel Windows uygulamasında MIDI giriş cihazlarını nasıl numaralandırabilirim?
Evrensel Windows uygulamasında MIDI giriş cihazlarını numaralandırabilirsiniz Findallasync yöntemi Cihaz bilgisi sınıf. Yalnızca MIDI giriş aygıtlarını bulmak istediğinizi belirtmek için, Midiinport.GetDeviceLector. İçinden döngü Cihaz bilgisi iade edilen nesneler CihazInformationCollection ve her bir cihazın adını bir liste kutusu kontrolüne ekleyin.
Soru 2: Evrensel Windows uygulamasında MIDI çıkış cihazlarını nasıl numaralandırabilirim?
Giriş aygıtlarını numaralandırmakla aynı yöntemi kullanarak evrensel bir Windows uygulamasında MIDI çıkış cihazlarını numaralandırabilirsiniz. Sadece döndürülen seçici dizeyi kullanın Midioutport.GetDeviceLector Bunun yerine ararken Findallasync.
Soru 3: Universal Windows uygulamasında bir cihaz izleyici yardımcı sınıfı nasıl oluştururum?
Evrensel Windows uygulamasında bir cihaz izleyici yardımcı sınıfı oluşturabilirsiniz Cihaz desen pencereler.Cihazlar.Numaralandırma ad alanı. Bu, cihazlar sistemden eklendiğinde veya bir cihazın bilgileri güncellenirse uygulamanızın bilgilendirilmesini sağlar. Yardımcı sınıf, kodun çoğaltılması olmadan hem MIDI giriş hem de çıkış aygıtları için kullanılabilir.
Soru 4: Evrensel Windows uygulamasında MIDI giriş cihazlarını listelemek için bir liste kutusu denetimi nasıl kullanabilirim?
Universal Windows uygulamasında, MIDI giriş cihazlarını listelemek için bir liste kutusu denetimi kullanabilirsiniz. XAML sayfanıza bir liste kutusu denetimi ekleyin ve MIDI giriş cihazlarının adlarıyla doldurun Cihaz bilgisi İçindeki nesneler CihazInformationCollection şuradan alındı Findallasync.
Soru 5: Evrensel Windows uygulamasında MIDI çıktı cihazlarını listelemek için bir liste kutusu denetimi nasıl kullanabilirim?
Evrensel Windows uygulamasındaki MIDI çıkış aygıtlarını listelemek için bir liste kutusu denetimi kullanmak, giriş cihazlarını listelemeye benzer. Basitçe elde edin CihazInformationCollection Çıktı aygıtları için Findallasync ve içinden döngü Cihaz bilgisi Liste Kutusu Denetimi’ni dolduracak nesneler.
Soru 6: UI’yi Universal Windows uygulamasındaki UI iş parçacığından başka bir iş parçacığından nasıl güncelleyebilirim?
UI’yi, evrensel bir Windows uygulamasındaki UI iş parçacığından başka bir iş parçacığından güncelleyebilirsiniz Coredispatcher sınıf. Coredispatcher örneğini Cihaz Watcher Yardımcı Sınıfına iletin ve RunaSync UI iş parçacığında kod yürütme yöntemi.
Soru 7: Evrensel Windows uygulamasındaki cihaz değişikliklerini nasıl izleyebilirim?
Universal Windows uygulamasında, cihaz değişikliklerini kullanarak izleyebilirsiniz Cihaz sınıf. Etkinlik işleyicilerini kaydedin Katma, Kaldırıldı, Güncellenmiş, Ve Numaralandırılmış Cihaz gözlemcisinin etkinlikleri, cihazlar eklendiğinde, kaldırıldığında, güncellendiğinde veya numaralandırma işlemi tamamlandığında bildirilecek.
Soru 8: Evrensel Windows uygulamasında yeni bir MIDI cihazı eklendiğinde olayı nasıl ele alabilirim?
Evrensel bir Windows uygulamasına yeni bir MIDI cihazı eklendiğinde etkinliği ele alabilirsiniz Katma Cihaz Gözlemcisinin Etkinliği. Etkinlik işleyicisinde, kullanıcı arayüzünü yeni cihazı yansıtacak şekilde güncelleyebilirsiniz.
Soru 9: Evrensel Windows uygulamasında bir MIDI cihazı kaldırıldığında olayı nasıl ele alabilirim?
Evrensel bir Windows uygulamasında bir MIDI cihazı kaldırıldığında olayı ele almak için Kaldırıldı Cihaz Gözlemcisinin Etkinliği. Etkinlik işleyicisinde, cihazı listeden kaldırmak için kullanıcı arayüzünü güncelleyebilirsiniz.
Soru 10: Bir MIDI cihazının bilgileri evrensel bir Windows uygulamasında güncellendiğinde olayı nasıl ele alabilirim?
Evrensel bir Windows uygulamasında, bir MIDI cihazının bilgileri abone olarak güncellendiğinde etkinliği ele alabilirsiniz Güncellenmiş Cihaz Gözlemcisinin Etkinliği. Etkinlik işleyicisinde, kullanıcı arayüzünü cihazın güncellenmiş bilgilerini yansıtacak şekilde güncelleyebilirsiniz.
Soru 11: Universal Windows uygulamasında kullanılabilir MIDI giriş cihazı olup olmadığını nasıl belirleyebilirim?
Evrensel bir Windows uygulamasında, sayısını kontrol ederek kullanılabilir MIDI giriş aygıtı olup olmadığını belirleyebilirsiniz CihazInformationCollection şuradan alındı Findallasync. Sayı 0 ise, kullanılabilir MIDI giriş aygıtları olmadığı anlamına gelir.
Soru 12: Universal Windows uygulamasında kullanılabilir MIDI çıktı aygıtı olup olmadığını nasıl belirleyebilirim?
Evrensel bir Windows uygulamasında, sayımını kontrol ederek kullanılabilir MIDI çıktı aygıtları olup olmadığını belirleyebilirsiniz CihazInformationCollection şuradan alındı Findallasync. Sayı 0 ise, mevcut MIDI çıkış aygıtları olmadığı anlamına gelir.
Soru 13: MIDI cihazlarının numaralandırılması evrensel bir Windows uygulamasında tamamlandığında olayı nasıl ele alabilirim?
MIDI cihazlarının numaralandırılması, evrensel bir Windows uygulamasında tamamlandığında etkinliği ele alabilirsiniz Numaralandırılmış Cihaz Gözlemcisinin Etkinliği. Etkinlik işleyicisinde, numaralandırma tamamlandıktan sonra gerekli işlemleri gerçekleştirebilirsiniz.
Soru 14: Belirli bir MIDI cihazının bir giriş cihazı veya bir çıkış aygıtı olup olmadığını nasıl kontrol edebilirim Evrensel Windows uygulaması?
Universal Windows uygulamasında, belirli bir MIDI cihazının bir giriş cihazı veya bir çıkış aygıtı olup olmadığını kontrol edebilirsiniz Cihaz bilgisi Nesnenin Özellikleri. Cihazın özellikleri, cihaz türü hakkında bir giriş veya çıkış cihazı gibi bilgi içerir.
Soru 15: Evrensel Windows uygulamasında cihaz izleyici yardımcı sınıfının dışından mevcut MIDI cihaz listesine nasıl erişebilirim?
Universal Windows uygulamasında, bir özellik kullanarak Cihaz Watcher Helper sınıfının dışından geçerli MIDI cihaz listesine erişebilirsiniz. Tipte genel bir mülk oluşturun CihazInformationCollection Yardımcı sınıfta ve cihaz listesi güncellendiğinde değerini ayarlayın. Daha sonra, MIDI cihazlarının mevcut listesini almak için bu özelliğe uygulamanızın diğer bölümlerinden erişebilirsiniz.
Windows 10 MIDI Sürücüleri: Birkaç adımda nasıl kurulur
Windows ekibi geri bildiriminizi duymak ister. Lütfen Windows Geliştiricisi Uservoice sitemizi kullanarak geri bildirimleri sağlayın. Doğrudan bir hatanız varsa, lütfen doğrudan Windows 10’da oluşturulan Windows geri bildirim aracını kullanın.
MİDİ
Bu makalede, MIDI (Müzikal Enstrüman Dijital Arayüz) cihazlarının nasıl numaralandırılacağını ve Universal Windows uygulamasından MIDI mesajlarını nasıl göndereceğinizi gösteriyor. Windows 10, USB üzerinden MIDI’yi (sınıf uyumlu ve en tescilli sürücüler), MIDI’yi Bluetooth Le (Windows 10 Yıldönümü Sürümü ve daha sonra) ve serbestçe kullanılabilir üçüncü taraf ürünleri, MIDI Over Ethernet ve yönlendirilmiş MIDI’yi destekler.
MIDI Cihazlarını Numarat
MIDI cihazlarını numaralandırmadan ve kullanmadan önce, projenize aşağıdaki ad alanlarını ekleyin.
Windows kullanma.Cihazlar.Numaralandırma; Windows kullanma.Cihazlar.Midi; Sistemi Kullanma.İş parçacığı.Görevler;
Ekle Liste kutusu Kullanıcının sisteme bağlı MIDI giriş cihazlarından birini seçmesini sağlayacak XAML sayfanızı kontrol edin. MIDI çıkış cihazlarını listelemek için başka bir tane ekleyin.
Findallasync yöntem Cihaz bilgisi Sınıf, Windows tarafından tanınan birçok farklı cihaz türünü numaralandırmak için kullanılır. Yalnızca MIDI giriş aygıtlarını bulmak için yöntemin istediğinizi belirtmek için, Midiinport.GetDeviceLector. Findallasync A.Ş CihazInformationCollection bir Cihaz bilgisi Sisteme kayıtlı her MIDI giriş cihazı için. İade edilen koleksiyonun öğe içermiyorsa, mevcut MIDI giriş aygıtları yok. Koleksiyonda öğeler varsa, Cihaz bilgisi Nesneler ve her cihazın adını MIDI giriş cihazına ekleyin Liste kutusu.
özel async görev 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; >// başka bir bağlantılı giriş aygıtını forEach listesine ekleyin (midiinputDevices'teki CihazInformation CihazInfo) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >Bu.MidiinportListBox.ISEnabled = true; >
MIDI çıkış cihazlarını numaralandırmak, giriş cihazlarını numaralandırmakla aynı şekilde çalışır, ancak tarafından döndürülen seçici dizeyi belirtmeniz gerekir Midioutport.GetDeviceLector Aradığında Findallasync.
Özel Async görev 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; >// başka bir bağlantılı giriş aygıtını forEach listesine ekleyin (MidioutputDevices'teki CihazInformation CihazInfo) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >Bu.MidioutportListBox.ISEnabled = true; >
Bir Cihaz Gözlemcisi Yardımcı Sınıfı Oluşturun
pencereler.Cihazlar.Numaralandırma Ad alanı Cihaz cihazlar sistemden eklenirse veya kaldırılırsa veya bir cihazın bilgileri güncellenirse uygulamanızı bilgilendirebilir. Midi-etkin uygulamalar genellikle hem giriş hem de çıkış aygıtlarıyla ilgilendiğinden, bu örnek, Cihaz desen, böylece aynı kod, çoğaltılmaya gerek kalmadan hem MIDI girişi hem de MIDI çıkış aygıtları için kullanılabilir.
Cihaz gözlemciniz olarak hizmet vermek için projenize yeni bir sınıf ekleyin. Bu örnekte sınıf olarak adlandırılmıştır MymidideViceWatcher. Bu bölümdeki kodun geri kalanı, yardımcı sınıfı uygulamak için kullanılır.
Sınıfa bazı üye değişkenler ekleyin:
- A Cihaz Cihaz değişikliklerini izleyecek nesne.
- Bir örnek için bağlantı noktası seçici dizesinde MIDI içerecek bir aygıt seçici dizesi ve başka bir örnek için MIDI çıkış bağlantı noktası seçici dizesi.
- A Liste kutusu mevcut cihazların adlarıyla doldurulacak kontrol.
- A Coredispatcher Kullanıcı arayüzünü kullanıcı arayüzü dışındaki bir iş parçacığından güncellemek için gereklidir.
CihazWatcher CihazWatcher; String CihazlarLectorString; ListBox DeviceListBox; Coredispatcher Coredispatcher;
Ekle CihazInformationCollection Yardımcı sınıfın dışından mevcut cihaz listesine erişmek için kullanılan özellik.
public CihazInformationCollection CihazInformationCollection
Sınıf yapıcısında, arayan MIDI aygıt seçici dizesinden geçer, Liste kutusu Cihazları listelemek için ve Görevli kullanıcı arayüzünü güncellemek için gerekli.
Arama Cihaz bilgisi.Createwatcher Yeni bir örneği oluşturmak için Cihaz Sınıf, MIDI aygıt seçici dizesinden geçiyor.
Gözlemcinin etkinlik işleyicileri için işleyicileri kaydettirin.
public mymidideViceWatcher (String MidIdeVicesElectorString, ListBox MidIdeVicelistBox, Coredispatcher Dispatcher)
Cihaz aşağıdaki olaylara sahiptir:
- Katma – Sisteme yeni bir cihaz eklendiğinde yükseltildi.
- Kaldırıldı – Bir cihaz sistemden kaldırıldığında yükseltildi.
- Güncellenmiş – Mevcut bir cihazla ilişkili bilgiler güncellendiğinde yükseltildi.
- Numaralandırılmış – Watcher, istenen cihaz türünü numaralandırmasını tamamladığında yükseltildi.
Bu olayların her biri için etkinlik işleyicisinde, bir yardımcı yöntem, Güncellenmişevices, güncellemek için çağrılır Liste kutusu Mevcut cihaz listesi ile. Çünkü Güncellenmişevices UI öğelerini günceller ve bu olay işleyicileri UI iş parçacığında çağrılmaz, her çağrı bir çağrıda sarılmalıdır RunaSync, bu, belirtilen kodun kullanıcı arayüzünde çalıştırılmasına neden olur.
Özel Async Void CihazWatcher_Removed (CihazWatcher Gönderen, CihazInformationupDate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Özel Async Void CihazWatcher_Added (CihazWatcher Gönderen, Cihaz - < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Özel Async Void Cihazwatcher_enumerationCompleted (CihazWatcher Gönderen, Nesne Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Özel Async Void Cihazwatcher_updated (CihazWatcher Gönderen, Cihaz - < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >
Güncellenmişevices yardımcı yöntem çağrıları Cihaz bilgisi.Findallasync ve günceller Liste kutusu Bu makalede daha önce açıklandığı gibi iade edilen cihazların adlarıyla.
Özel Async Void UpdateEvices () < // 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 (bu konu.CihazInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >>
İzleyiciyi başlatmak için yöntem ekleyin, Cihaz nesne Başlangıç yöntem ve gözlemciyi durdurmak, Durmak yöntem.
public void startwatcher () < deviceWatcher.Start(); >public void strowwatcher ()
Watcher olay işleyicilerini kaydetmek ve cihaz gözlemcisini NULL olarak ayarlamak için bir yıkıcı sağlayın.
~ MymidideViceWatcher ()
Mesaj göndermek ve almak için midi bağlantı noktaları oluşturun
Sayfanızın arkasındaki kodda, üye değişkenlerini iki örneği tutacak şekilde bildirin MymidideViceWatcher Yardımcı sınıf, biri giriş aygıtları için ve diğeri çıkış aygıtları için.
MymidideViceWatcher InputDeviceWatcher; MymidideViceWatcher OutputDeviceWatcher;
Cihaz seçici dizesinden geçen Watcher yardımcı sınıflarının yeni bir örneğini oluşturun, Liste kutusu doldurulacak ve Coredispatcher sayfa üzerinden erişilebilen nesne Görevli mülk. Ardından, her nesnenin başlatmak için yöntemi arayın Cihaz.
Her birinden kısa bir süre sonra Cihaz başlatılır, sisteme bağlı mevcut cihazları numaralandırmayı bitirir ve Numaralandırılmış her birine neden olacak olay Liste kutusu Mevcut MIDI cihazlarıyla güncellenecek.
InputDeviceWatcher = Yeni MymidideViceWatcher (MIDIINPORT.GetDeviceselector (), midiinportListBox, dispatcher); InputDeviceWatcher.Startwatcher (); OutputDeviceWatcher = yeni mymidideViceWatcher (Mierioutport.GetDeviceselector (), midioutportListBox, dispatcher); OutputDeviceWatcher.Startwatcher ();
Kullanıcı MIDI girişinde bir öğe seçtiğinde Liste kutusu, Seçim Etkinlik yükseltildi. Bu etkinliğin işleyicisinde, CihazInformationCollection Mevcut cihaz listesini almak için yardımcı sınıfın özelliği. Listede girişler varsa, Cihaz bilgisi dizine karşılık gelen dizinle nesne Liste kutusu kontrol SelectedIndex.
Yarat Midiinport Seçilen giriş cihazını arayarak temsil eden nesne Midiinport.Fromidasync, Geçen İD Seçilen cihazın özelliği.
Bir işleyici kaydedin Mesaj alındı Belirtilen cihaz aracılığıyla bir MIDI mesajı alındığında ortaya çıkan olay.
MIDIINPORT MIDIINPORT; Imidioutport Midioutport;
Özel Async Void MidiinportListBox_SelectionChanged (Nesne Gönderen, SelectionChangedEventArgs E) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >CihazinFormation DevInfo = CihazInformationCollection [MIDIINPORTLISTBOX.SelectedIndex]; if (devinfo == null) < return; >MIDIINPORT = MIDIINPORT'u Bekleyin.Fromidasync (devinfo.İD); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >Midiinport.MessageCeived += MIDIINPORT_MESSAGERECEED; >
Ne zaman Mesaj alındı İşleyici çağrılır, mesaj İleti Mülkiyet MidimessagereVideEventArgs. Tip Mesaj nesnesinin bir değeridir Midimessagetype Alınan mesajın türünü gösteren numaralandırma. Mesajın verileri, mesajın türüne bağlıdır. Bu örnek, mesajın mesajla ilgili bir not olup olmadığını kontrol eder ve eğer öyleyse, MIDI kanalını, notu ve hızı çıkarır.
özel void midiinport_messagereVived (midiinport gönderen, 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); >>
Seçim Çıktı cihazı için işleyici Liste kutusu Etkinlik işleyicisi kayıtlı olmaması dışında, giriş cihazlarının işleyicisi ile aynı çalışır.
Özel Async Void MidioutportListBox_SelectionChanged (Nesne Gönderen, SelectionChangedEventArgs E) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >CihazinFormation DevInfo = CihazInformationCollection [MIDIOutportListBox.SelectedIndex]; if (devinfo == null) < return; >MIDIOUTPORT = MIDIOUTPORT'u Bekleyin.Fromidasync (devinfo.İD); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
Çıktı cihazı oluşturulduktan sonra, yeni bir mesaj oluşturarak bir mesaj gönderebilirsiniz İmidimessage Göndermek istediğiniz mesaj türü için. Bu örnekte, mesaj bir NotonMessage. Mesaj gönder yöntemi İmidioutport Mesajı göndermek için nesne çağrılır.
bayt kanalı = 0; bayt not = 60; bayt hızı = 127; İmidimessage midimessagetosend = yeni MidinoteOnMessage (kanal, not, hız); Midioutport.SendMessage (Midimessagetosend);
Uygulamanız devre dışı bırakıldığında, uygulamalarınızı temizlediğinizden emin olun. Etkinlik işleyicilerinizi kaydedin ve MIDI’yi bağlantı noktasında ve bağlantı noktası nesnelerini NULL olarak ayarlayın. Cihaz gözlemcilerini durdurun ve onları boşa ayarlayın.
InputDeviceWatcher.Kronometre (); inputDeviceWatcher = null; OutputDeviceWatcher.Kronometre (); outputDeviceWatcher = null; Midiinport.MessageReVED -= MIDIINPORT_MESSAGERECEED; Midiinport.Elden çıkarmak(); midiinport = null; Midioutport.Elden çıkarmak(); MIDIOUTPORT = NULL;
Yerleşik Windows General Mii Synth’i kullanarak
Yukarıda açıklanan tekniği kullanarak MIDI cihazlarını numaralandırdığınızda, uygulamanız “Microsoft GS Wavetable Synth” adlı bir MIDI cihazı keşfedecektir. Bu, uygulamanızdan oynayabileceğiniz yerleşik bir genel MIDI sentezleyicidir. Ancak, projenizdeki yerleşik synth için SDK uzantısını eklemedikçe, bu cihaza bir MIDI çıkışı oluşturmaya çalışmak başarısız olacaktır.
Uygulama Projenize General MIDI Synth SDK uzantısını dahil etmek için
- İçinde Çözüm Gezgini, Projeniz altında sağ tıklayın Referanslar ve seç Referans ekle.
- Genişletin Evrensel pencereler düğüm.
- Seçme Uzatma.
- Uzantılar listesinden seçin, seçin Universal Windows Uygulamaları için Microsoft General MIDI DLS.
Not Uzantının birden fazla sürümü varsa, uygulamanızın hedefine uygun sürümü seçtiğinizden emin olun. Uygulamanızın hangi SDK sürümünü hedeflediğini görebilirsiniz Başvuru Proje özelliklerinin sekmesi.
Windows 10 MIDI Sürücüleri: Birkaç adımda nasıl kurulur
Çeşitli PC sorunlarını çözmek için DriverFix: Bu yazılım sürücülerinizi çalışır durumda tutacak, böylece sizi ortak bilgisayar hatalarından ve donanım arızasından koruyacaktır. Şimdi tüm sürücülerinizi 3 kolay adımda kontrol edin:
- DriverFix’i indirin (doğrulanmış indir dosyası).
- Tıklamak Taramaya Başla Tüm sorunlu sürücüleri bulmak için.
- Tıklamak Sürücüleri güncelle Yeni sürümler almak ve sistem arızalarından kaçınmak için.
- DriverFix bu ay 0 okuyucu tarafından indirildi.
MIDI, müzik enstrümanı dijital arayüzünün teknik terimidir ve çok sayıda müzikal cihaza bağlanabilen bir cihazdan oluşur.
MIDI sürücüleri başlangıçta bir bilgisayardan klavyeleri kontrol etmek için yapılmıştır. MIDI sürücüleri yıllar içinde gelişti ve şimdi gezegendeki milyonlarca Windows 10 kullanıcısı tarafından kullanılıyor.
Belirli bir vaka, Windows 10 Bluetooth MIDI sürücüleriyle ilgilidir, çünkü bunlar daha da hassas görünüyor ve Windows tarafından kolayca tanınamayabilir.
Windows 10 Bluetooth üzerinden MIDI’yi destekliyor mu?
Öyle, evet. Sadece aç Ayarlar PC’nizde ve git Cihazlar, Daha sonra Bluetooth ve diğer cihazlar. Burada seçin Bluetooth ve cihazınızı eşleştirin.
Ancak, bazı kullanıcılar MIDI cihazlarının bir Windows güncellemesinin ardından artık tanınmadığını bildirdi. Bu da senin durumunsa, burada’Ne önerdiğimiz:
- Bağlı tüm MIDI cihazlarını silin ve bunları tekrar eşleştirmeye çalışın (yukarıda gösterildiği gibi)
- Görev çubuğundaki ses seviyesi simgesini sağ tıklayın ve seçin Sesler. MIDI cihazınız eksikse Bağlantısı kesilmiş/devre dışı cihazları göster Ve bunun yardımcı olup olmadığını görün.
Windows 10’a midi sürücülerini nasıl yüklerim?
1. Windows Sorun Giderici’yi kullanın
- Gezin Görev çubuğu arama kutusu.
- Tip Sorun gidermek.
- Seçme Sorun gidermek listeden.
- Seçme Donanım ve Cihazlar Sorun Giderciden.
- Sorun giderici açıldıktan sonra tıklayın Sonraki.
- Nüfuslu listeden çalışmayan programı seçin.
- İstenen sorun giderme seçeneğini seçin.
Çoğu donanım takın ve oynatır. Bu, sadece bilgisayara taktıkları ve bilgisayarın doğru sürücüleri yükleyeceği anlamına gelir.
Bu değil’T Her zaman kullanıcılarda çalışın’ iyilik ve dalgıç farklı bir kaynaktan indirilmelidir. Bir sürücü aramak için zaman ayırmadan önce, sorunu gidermek için aşağıdaki görevleri gerçekleştirin:
Sorun giderici, çalıştığından emin olmak için programı test edecektir. Uyumlu olmayan diğer programlar için uyumluluk sorun gidericisini çalıştırın.
Uyumlu değil? Problem değil
- Görev çubuğu arama kutusunu tıklayın.
- Tip Programlar çalıştırın.
- Seçme Windows’un önceki sürümleri için yapılan programları çalıştırın.
- Bu açacak Uyumluluk Sorun Giderici.
- Ekrandaki istemleri takip edin.
Yani sen’Sorun gidericiyi çalıştırmaya çalıştı ve’t çalışma. O’Tamam, geri dön ve tekrar dene. Programınızı Windows sürümünüzle uyumlu hale getirmenin bir yolu var. Burada’nasıl yapılır:
Sürücülere ihtiyaç duyan her program için uyumluluk sorun gidericisini çalıştırdığınızdan emin olun.
Uzman İpucu:
Sponsorlu
Eski sürücüler, hataların ve sistem sorunlarının ana nedenidir. Bazı dosyalarınız eksik veya çöküyorsa, Sürücü Bu sorunları sadece birkaç tıklamada çözebilir. Ve ayrıca sisteminizde hafif!
Windows Sorun Giderici ile sorun mu yaşıyorsunuz? Burada’Sizin için çalışmayı durdurursa, sorun gidericiyi düzeltmek için harika bir rehber.
2. Sürücüleri arayın
Sürücüleri manuel olarak yüklemek bir sonraki seçeneğinizdir. Bilinmeyen veya tanınmayan bir kaynaktan sürücüleri indiriyorsanız, sürücülerin manuel kurulumu tehlikeli olabilir.
Tüm sürücülerin üreticiler gibi güvenilir kaynaklardan indirildiğinden emin olun’ web siteleri.
Sürücüleri otomatik olarak güncelleyin
Eğer yapmazsan’Web’i en son kullanılabilir sürücüye manuel olarak arama zahmetinden geçmek istiyorum, bunu sizin için otomatik olarak yapacak bir üçüncü taraf sürücü güncelleyici yazılımı kullanmanızı öneririz.
Yazılım sadece ürün yazılımınızı kolayca güncelleyecek, aynı zamanda cihazınızı sürekli olarak yeni sürücüler için sürekli olarak tarar, bu yüzden yapmazsınız’bunu yapmak zorundaydı.
3. Uyumluluk modunda çalıştırın
- Senin programı bul’koşmak için yeniden Uyumluluk modu.
- Programa sağ tıklayın ve seçin Özellikler.
- Tıkla Uyumluluk sekmesi.
- Uyumluluk modu altındaki kutuyu tıklayın.
- Programın üzerinde çalışabileceği Windows sürümünü seçin.
- Tıklamak Uygula.
Çoğu programın uyumluluk modunda çalışma seçeneği vardır. Programınızın bu modda çalışmasını sağlamak için yukarıda belirtilen adımları gerçekleştirin.
Bu konu hakkında daha fazla bilgi edinin
- Windows 10’da sürücü ihlali hatasını düzeltin
- Windows 11’de modası geçmiş sürücü hatası nasıl düzeltilir
- Windows sürücüleri indiremez? Şimdi bu çözümlerle düzeltin
- Windows 10’daki acpi_driver_internal hatasını düzeltin
- Sürücü Hata Kodunu Görmek 32? 4 basit adımda düzeltin
4. Her şey başarısız olduğunda
MIDI sürücülerinin bir dizi uyumluluk sorunu nedeniyle Windows 10’a yüklenmesi çok daha zordur. Bu makalede belirtilen düzeltmelerin her biri, sürücünüz için sorunu potansiyel olarak çözebilir.
Eğer sen’VE SEÇENEKLER YAPIYIN Cihazınız için üreticiyi arayın ve yardım isteyin veya uyumlu sürücülerin bir yeri isteyin.
O’Bu makale için bununla ilgili. Konuyla ilgili ekleyecek bir şeyiniz varsa, lütfen aşağıdaki yorum bölümünde bunu yapmaktan çekinmeyin.
- sürücü
- Windows 10 Kılavuzları
Windows 10’da MIDI Geliştirmeleri
Windows 10 geliştikçe, müzisyen odaklı teknolojileri desteklemeye devam ediyoruz.
İzin vermek’S MIDI’ye bir göz atın. Windows, 16 bitlik günlere kadar uzanan MIDI desteğine sahipti. O zamandan beri, çoğu MIDI arayüzü USB’ye taşındı ve kutu içi desteğimiz, bu yeni arayüzleri destekleyen bir sınıf sürücüsü ve API’lerle hızla korudu.
Müzik teknolojisine aşina olmayanlar, MIDI’yi sadece .Orta Müzik Dosyaları. Ama bu’Mi’nin gerçekte ne olduğu sadece küçük bir kısmı. 1983’teki standardizasyonundan bu yana, MIDI müzik yapımında en çok kullanılan ve tartışmasız en önemli iletişim protokolü olarak kaldı. BT’S sentezleyicileri ve sıralayıcıları kontrol etmekten ve set listeleri için yamaları değiştirmekten, mikserleri senkronize etmek ve hatta bir MIDI kontrol yüzeyi kullanarak podcast’lerde kameraları değiştirmeye kadar her şey için kullanılır. Arduino firmata protokolü bile MIDI’ye dayanmaktadır.
Bu yazıda biz’Birkaç yeni şey hakkında konuşacağım’MIDI’yi uygulamalarınızda daha da kullanışlı hale getirmek için oluşturuldu:
- UWP MIDI BASICS – Windows Store uygulamalarında MIDI’yi kullanma
- Windows 10 Yıldönümü Güncellemesinde Yeni Bluetooth Le Midi desteği
- UWP MIDI için Win32 sargısı (API’yi masaüstü uygulamaları için erişilebilir hale getirir)
- C# ve Powershell için MIDI yardımcı kütüphaneleri
Ayrıca, Windows 10 geçen yaz yayınlandığında bir dizi ses odaklı geliştirme ekledik. Bu geliştirmeler şunları içeriyordu: Wasapi’de düşük gecikmeli iyileştirmeler, yüzey gibi modern Windows 10 cihazlarda ve 950/950xL gibi telefonlarda daha düşük gecikme için daha küçük tamponlara katılacak ortaklarla ek sürücü çalışmaları; Herhangi bir gecikme reklamı DSP olmadan ham ses işlemeyi etkinleştirmek için ayarlar; Audiograf olarak adlandırılan yeni bir düşük gecikmeli UWP ses ve efekt API; Ve elbette, yeni bir UWP MIDI API.
Biz’VE ayrıca yakın zamanda sürükleyici deneyimler için mekansal ses için destek ekledi. Geçtiğimiz sonbaharda, 1511 güncellemesinde, Thunderbolt 3 ses cihazları için çok ileriye dönük işletim sistemi desteğini sağladık,’Üreticiler bu cihazları ve yüksek performanslı ses sürücülerini oluşturmaya başladığında orada. Kümülatif olarak, bu, Windows Engineering tarafından çok sayıda harika işti, tüm müzisyenleri hedefleyen ve müzik oluşturma uygulamaları.
UWP MIDI Temel Bilgiler
Geçen yıl Windows 10 RTM’de, bu MIDI arabirimlerine erişmenin modern bir yolunu sunan neredeyse tüm Windows 10 cihazlarında UWP uygulamalarına erişilebilen yeni bir MIDI API tanıttık. Bu API’yi, yeni MIDI arayüzleri için destek oluşturabileceğimiz yüksek performanslı ve esnek bir temel sağlamak için oluşturduk.
Başlangıçta Windows 8’de bir Nuget paketi olarak yorum yapmak için bu API’yi ortaya koyduk.1 ve uygulama geliştiricilerinden çok fazla geri bildirim aldı. Windows 10’da gördüğünüz şey, bu geri bildirimin ve testimizin doğrudan bir sonucudur.
API, UWP’deki cihaz numaralandırması ve Watcher API’leri ile güzel bir şekilde fişe girerek, uygulamanız çalışırken sıcak fişleri/cihazların fişini algılamayı kolaylaştırır.
Burada’S MIDI cihazlarının ve kimliklerinin bir listesini almanın basit bir yolu, C#:
Windows kullanma.Cihazlar.Midi;
Windows kullanma.Cihazlar.Numaralandırma;
…
Özel Async Void ListmiDiDevices ()
// giriş aygıtlarını numaralandırın
var deviceelist = cihazın bilgisini bekle.FindAllasync (
Midiinport.GetDeviceselector ());
Foreach (Devicelist’te Var CihazInfo)
Sistem.Teşhis.Ayıklamak.Writeline (CihazInfo.İD);
Sistem.Teşhis.Ayıklamak.Writeline (CihazInfo.İsim);
Sistem.Teşhis.Ayıklamak.Yazı çizgisi(“—-“);
>
// Çıkış aygıtları aynı şekilde numaralandırılır, ancak
// midioutport kullanma.GetDeviceselector ()
>
Ve burada’Bir Gözlemci Nasıl Kurulur ve numaralandırma/Watcher etkinliklerini nasıl ele alır ve ayrıca bağlı arayüzlerin listesini alır. Bu biraz daha fazla kod, ama’Çoğu uygulama için daha uygun bir yaklaşım:
özel geçersiz startwatchingInputDevices ()
Var Watcher = Cihazın Formasyonu.Createwatcher (
Midiinport.GetDeviceselector ());
gözlemci.Eklendi += onmidiinputDeviceAdded;
gözlemci.Kaldırıldı += onMidiinputDeviceremoved;
gözlemci.Numaralandırma işlemi += onMidiinputDeviceEnerationCompleted;
özel boşluk onmidiinputDeviceenerationChpleTed (
CihazWatcher Gönderen, Nesne Args)
// İlk numaralandırma tamamlandı. Zamanı geldi
// Bir arayüz listesi sunabilirsiniz
// Uygulamanızın kullanıcısı.
>
özel boşluk onmidiinputDeviceremoved (
CihazWatcher Gönderen, CihazInformationupdate Args)
// MIDI giriş cihazının kaldırılmasını kullanın
>
özel boşluk onmidiinputDeviceadded (
CihazWatcher Gönderen, Cihaz –
// Yeni bir MIDI giriş cihazı eklenmesini işleyin
>
Cihazları listelemek için bir Watcher kullanmak ve ekle/kaldırma işlemleri uygulamalarınızda takip edilecek en iyi uygulamadır. MIDI denetleyicilerini takmayı veya açmayı unuttukları için kimse uygulamalarını yeniden başlatmak istemiyor. Watcher’ı kullanmak, uygulamanızın çalışma zamanında bu eklemeleri/kaldırmaları uygun şekilde ele almasını kolaylaştırır.
API’nin kullanımı kolaydır, tüm standart mesajlar için güçlü yazılmış sınıflar ve Sysex ve tampon tabanlı işlemlere destek. Bu C# örneği, giriş ve çıkış bağlantı noktalarının nasıl açılacağını ve belirli MIDI mesajlarına yanıt verileceğini gösterir.
Windows kullanma.Cihazlar.Midi;
Windows kullanma.Cihazlar.Numaralandırma;
…
Özel Async Void MiLexample ()
String outportId = “Aygıt numaralandırmasından geçtiğiniz ID”;
String InporId = “Aygıt numaralandırmasından geçtiğiniz ID”;
// Çıktı bağlantı noktasını açın ve bir mesaj gönderin
var outport = midioutport’u bekliyor.FromIdasync (outportid);
var notonMessage = yeni MidinoteOnMessage (0, 110, 127);
dış liman.SendMessage (NoteOnMessage);
// bir giriş bağlantı noktası açın ve mesajları dinleyin
Var Inport = Midiinport’u bekliyor.FromIdasync (Inportid);
yiğit.MessageReVED += onMIDIMESSAGERECEED;
>
özel boşluk onmidimessagereVived (midiinport gönderen,
MidimessagereVEDEVENTARGS ARGS)
Switch (Args.İleti.Tip)
Case Midimessagetype.Noton:
kırmak;
Case Midimessagetype.PolyphonicKeyPressure:
kırmak;
// vesaire.
>
>
Çoğu durumda, mesajın türünü inceleyecek ve ardından imidessage’ı pencerelerde tanımlanan güçlü tipte mesajlardan birine taşıyacaksınız.Cihazlar.MidinoteonMessage veya MidipitchbendChangemessage gibi midi ad alanı. Sen’Ancak bunu yapmam gerekmez; İsterseniz her zaman ham veri baytlarından çalışabilirsiniz.
Windows 10 UWP MIDI API, her türlü müzik odaklı Windows Store uygulamalarını oluşturmak için uygundur. Kontrol yüzeyleri, sıralayıcılar, sentezleyiciler, yardımcı program uygulamaları, yama kütüphanecileri, aydınlatma kontrolörleri, yüksek voltajlı Tesla bobin sentezleyicileri ve çok daha fazlası oluşturabilirsiniz.
Tıpkı eski MIDI API’leri gibi, Windows 10 UWP MIDI API, Tobias Erichsen gibi üçüncü taraf eklentileriyle iyi çalışıyor’Swired ve Wi-Fi ağ üzerinden MIDI için destek sağlayan harika rtpmidi sürücüsü.
Yeni API’nin harika bir özelliği. Port Open ile tüm uygulamalar Windows 10 UWP MIDI API’sını kullandığı ve eski Win32 MME veya DirectMusic API’lerini kullandığı sürece, aynı cihazı paylaşabilirler. Bu eski API’lerin Don’u’t Özel sürücüler olmadan kullanın ve ortaklarımızdan ve müşterilerimizden ortak bir talepti.
Sonunda,’Windows 10 UWP MIDI API’sinin, ister sınıf sürücülerini veya kendi özel sürücülerini kullanıyor olsalar da, tanınan tüm MIDI cihazlarıyla çalıştığını belirtmek önemlidir. Bu, Windows 10’da sürücü olarak uygulanan birçok yazılım tabanlı MIDI yardımcı programı içerir.
UWP MIDI’de yeni Bluetooth Le Midi desteği
Çok katlı desteğe ve biz gelişmelere ek olarak’Performans ve istikrarda yapılmış, Windows 10 UWP MIDI API’sını kullanmak için iyi bir neden, yeni standartlara ve ulaşımlara verdiği destektir.
Microsoft, MIDI Standartları sürecine aktif olarak katılır ve çalışma gruplarında temsilcileri vardır. Microsoft’un içinde, MIDI için ve genel olarak ses için standartların yaratılmasına, veterinerliğine ve oylamasına katılan birkaçımız var.
Hızlı bir şekilde popülerlik kazanan heyecan verici ve nispeten yeni bir MIDI standardı Bluetooth Le Midi. Microsoft, Apple’ın bu alanda yaptığı öncü çalışmalara dayanarak standardı onaylamak için oy kullandı; Sonuç olarak, Apple, Microsoft ve diğerleri, müzisyen topluluğunda gerçek çekiş gören ve zaten bir dizi uyumlu çevre birimine sahip bir standartla uyumludur.
Windows 10 Yıldönümü Sürümü’nde biz’Windows 10 UWP MIDI API’sını kullanarak herhangi bir uygulama için Bluetooth Le Midi için kutu içi desteği dahil.
Windows 10 Yıldönümü Sürümü’nde biz’Windows 10 UWP MIDI API’sını kullanarak herhangi bir uygulama için Bluetooth Le Midi için kutu içi desteği dahil. Bu, kodunuzda değişiklik gerektirmeyen bir ektir, çünkü arayüzün kendisi sadece MIDI API tarafından ortaya çıkan başka bir şeffaf taşıma.
Bu tip MIDI arayüzü, klavyeler, pedallar ve kontrolörler gibi Bluetooth MIDI çevre birimleriyle konuşmak için PC’nizde, telefonunuzda, IoT cihazınızda veya diğer Windows 10 cihazınızda zaten Bluetooth radyosunu kullanıyor. Şu anda PC’nin kendisi’periferik olmak, ama biz’Gelecek için buna bakıyorum. Bluetooth Le Midi ve benzer adaptörlere bazı harika DIN MIDI olmasına rağmen, PC’nizde Bluetooth Le Yetenekli Radyo Mevcut bir Bluetooth Le Midi için Bluetooth Le Midi için ek donanım gerekmez.
Gecikmenin müzisyenler için önemli olduğunu biliyoruz, bu nedenle uygulamamızın diğer platformlarla rekabetçi olduğundan emin olduk. Tabii ki, Bluetooth kablolu bir USB bağlantısından daha yüksek gecikmeye sahiptir, ancak bu dengesizlik kablo dağınıklığını ortadan kaldırmaya değer olabilir.
Eşleştirildiğinde, Bluetooth Le Midi Periferal, Cihaz Gezgini’nde bir MIDI cihazı olarak görünecek ve otomatik olarak UWP MIDI cihaz numaralandırmasına dahil edilecektir. Bu, uygulamanız için tamamen şeffaftır.
Bluetooth Le Midi cihazlar da dahil olmak üzere cihazların nasıl keşfedileceği ve eşleştirileceği hakkında daha fazla bilgi için lütfen GitHub’daki cihaz numaralandırması ve eşleştirme örneğine bakın.
Ortak ve müşteri geri bildirimlerinin doğrudan bir sonucu olarak bu özelliği Windows 10 Yıldönümü Sürümü’ne ekledik. BEN’W Windows 10’daki Bluetooth Le Midi ve şimdi Windows 10’da kullanılabilecek cihazlar için gerçekten heyecanlı.
UWP MIDI API için masaüstü uygulama desteği
Müzisyenlerin çoğunluğunun müzik yaparken masaüstü Win32 Daws ve yardımcı programları kullandığını biliyoruz. UWP MIDI API’si masaüstü uygulamaları için erişilebilir, ancak farklı dillerden ve ortamlardan UWP API’lerine erişmenin zor olabileceğini biliyoruz.
Masaüstü uygulaması geliştiricilerine yeni API ile yardımcı olmak ve sürtünmeyi azaltmak için, WDG/PAX Spark ekibimizde meslektaşım Dale Stammen, Windows 10 UWP MIDI API için bir Win32 sargısını bir araya getirdi.
Bu API sarıcı da dahil olmak üzere ekibimizin yaptığı iş, çoğunlukla ortak odaklı. Bu, talepler ve geri bildirimler sonucunda, ortakların pencerelerde başarılı olmasını sağlayacak şeyler yarattığımız anlamına gelir. Bunu yaratırken birlikte çalıştığımız ortaklardan biri, popüler Sonar Desktop Daw uygulamasının yapımcıları Cakewalk.
Geliştiricilerinin UWP MIDI API’sı için Win32 sargısı ve Bluetooth Le Midi için desteğimiz hakkında söyledikleri budur:
“Biz’Microsoft’un Bluetooth MIDI specini desteklediğini ve basitleştirilmiş bir API aracılığıyla Windows geliştiricilerine maruz bıraktığını görmekten mutluluk duyuyorum. UWP MIDI API’si için yeni Win32 sargısını kullanarak Bluetooth MIDI desteğini çok hızlı bir şekilde prototipleyebildik. Cakewalk’ta biz’Kablosuz çevre birimlerini desteklemek için ileriye bakıyorum, bu yüzden bu Microsoft’tan çok hoş bir ek.”
Noel Borthwick, CTO, Cakewalk
Sonucun karşılıklı müşterilerimize doğrudan fayda sağlayacağını bilerek Cakewalk gibi harika ortaklarla çalışmayı seviyoruz.
Bu Win32 sarıcı, API’yi herhangi bir Düz Win32 API gibi kullanmayı kolaylaştırır. Windows 10 UWP MIDI API’sinin tüm özelliklerini yüzeye çıkarır ve Win32 uygulamanızın UWP-Aware olması gereksinimini ortadan kaldırır. Ayrıca, orada’S C ++/CX kullanma veya yapım araçlarınızı ve işlemlerinizi başka şekilde değiştirme gereksinimi yok. Burada’S A C ++ Win32 Konsolu Uygulama Örneği:
// port 0’ı aç
sonuç = gmidioutportopenfunc (midiptr, 0 ve gmidioutport);
if (sonuç != Winrt_no_error)
cout goto temizleme;
>
// MIDI OUT PORT’a mesajla ilgili bir not gönderin
imzasız karakter arabelleği [3] = < 144, 60 , 127 >;
cout gmidioutportsendfunc (gmidioutport, tampon, 3);
// MIDI çıkış bağlantı noktasına bir not gönderme mesajı gönderin
cout tamponu [0] = 128;
gmidioutportSendFunc (gmidioutport, tampon, 3);
Bu API, mevcut Win32 uygulamalarıyla çalışmak için optimize edilmiştir, bu nedenle Win32 Music App geliştiricilerinin alışık olduğu gibi, MIDI mesajlarını güçlü bir şekilde yazdık ve bayt dizileriyle çalışırız.
Biz’API sargısında ortaklardan ve geliştiricilerden hala geri bildirim alıyor ve sizinkini sevecek. Kaynak kodu GitHub’da bulabilirsiniz. Konumu daha sonra değiştirebiliriz, böylece aka.MS Link (http: // aka.MS/WIN10MIDIWIN32) Kullanışlı tutmak istediğiniz kişidir.
Visual Studio’nun son sürümlerini kullanan geliştiriciler için biz’Ve ayrıca kullanışlı bir Nuget paketi sundu.
Biz’RE Zaten Masaüstü Uygulama Ortakları ile birlikte çalışıyor Bu API’yi bu ambalajı ve Windows 10’daki diğer ses ve kullanıcı deneyimi geliştirmelerini kullanarak bu API’yi dahil etmek için çalışıyor. Pro müzisyenleri hedefleyen ve sorularınız varsa, lütfen Twitter’da @pete_brown adresinden bana ulaşın veya Microsoft Dot Com adresinden Pete Dot Brown ile iletişime geçin.
Windows Mağazası Uygulamaları için MIDI Helper Kütüphaneleri
Win32 API sargısına ek olarak, mağaza uygulaması geliştiricileri ve PowerShell kullanıcıları için daha küçük yardımcı kütüphanelerimiz de var.
Birincisi, C#, VB ve C ++ Windows Mağazası Uygulamaları için Windows 10 UWP MIDI API Helper’ım. Bu, MIDI cihazlarını numaralandırmayı kolaylaştırmak, XAML’deki sonuçlara bağlanmayı ve herhangi bir sıcak fiş/fişten çekiliş değişikliklerine yanıt vermek için tasarlanmıştır. BT’hem kaynak olarak hem de derlenmiş bir nuget paketi olarak mevcut.
Cihaz bilgi örnekleri için xaml dostu ciltlenebilir / gözlemlenebilir koleksiyonlara sahip bir izleyici sınıfı içerir.
RPN ve NRPN mesajları
Ayrıca, yardımcı kitaplık RPN (Kayıtlı Parametre Numarası) ve NRPN (kayıtlı olmayan parametre numarası) mesajlarına yardımcı olacak kod içerir. Bunlar, yeni geliştiricilerin birlikte çalışması daha zor olabilir, çünkü bunlar birlikte toplanan ve ardıl olarak gönderilen birkaç farklı mesajdan oluşan mantıklı mesajlardır.
Çünkü pencereleri açığa çıkardık.Cihazlar.Midi.UWP’deki imidimessage arayüzü ve altta yatan MIDI çıktı kodu arabelleğe giren her şeyi gönderir, güçlü yazılmış toplu mesaj sınıfları oluşturma oldukça kolaydı. Mesaj gönderirken, bu sınıfları tıpkı güçlü bir şekilde yazılan diğer tüm MIDI mesajları gibi kullanırsınız.
BEN’m Önerilen MPE (çok boyutlu polifonik ifade) ve gelen RPN ve NRPN mesajlarını ayrıştırma ve toplama için desteği araştırmak (çok boyutlu polifonik ifade). Bu özellikler kendi uygulamalarınızda sizin için yararlı olacaksa, lütfen benimle iletişime geçin ve bana bildirin.
MIDI Saat Jeneratörü
Kütüphanenin dahil olduğu bir diğer parça MIDI saat jeneratörü. Bir MIDI saat jeneratörüne ihtiyacınız varsa (sıralayıcı kontrol döngüsü için değil, sadece giden saat mesajlarını üretmek için), kütüphane yararlı bulacağınız bir uygulama içerir. Burada’S Bunu C#’dan nasıl kullandığınızı
özel midiklockgenerator _clock = yeni midiclockgenerator ();
…
_saat.SendMidistArtMessage = true;
_saat.SendMidistOpMessage = true;
Foreach (CihazWatcher’da Cihazın Bilgisi Bilgisi.Outputportdescriptors)
var port = (midioutport) midioutport’u bekliyor.FromIdasync (bilgi.İD);
if (port != null)
_saat.Çıkış portları.Ekle (bağlantı noktası);
>
public void startclock ()
_saat.Başlangıç();
>
public void stopclock ()
_saat.Durmak();
>
Github Repo’m C ++/CX kaynağını ve C#/XAML istemci uygulamasını içeriyor. Bir kenara: Bu benim ilk C ++/CX projemdi. Çoğu görev için hala C# daha kolay bulmama rağmen, burada C ++ CX’i oldukça ulaşılabilir buldum. Eğer sen’C ++ CX kullanmayı düşünen bir C# geliştiricisi, bir koşuşturma verin. Beklediğinizden daha tanıdık bulabilirsiniz!
Bu kütüphane, geliştiricilerin Windows Store’daki MIDI uygulamaları için en iyi uygulamaları takip etmesine yardımcı olacaktır. Tıpkı masaüstü uygulamalarında olduğu gibi,’Müzisyen odaklı bir uygulama burada ve sorularınız var, lütfen Twitter’da @pete_brown adresinden bana ulaşın veya Microsoft Dot Com adresinden Pete Dot Brown.
İkinci Yardımcı Kütüphane. BEN’Bunu, büyük bir kurulumda çeşitli mikserleri senkronize etmek için MIDI güncellemelerinin komut dosyasını otomatikleştirmek için kullanan kişilerle ve bunu olarak kullanan diğer kişilerle konuştu “zamk” Farklı cihazlar arasında mesajları çevirmek için. Orada’Windows 10’da PowerShell ile yapabileceğiniz çok şey ve şimdi MIDI bunun bir parçası. Repo kullanım örnekleri içeriyor, bu yüzden kazandım’t burada tekrarlayın.
Çözüm
BEN’Müzisyenlere ve müzik uygulaması geliştiricilerine Windows’ta yardımcı olmak için ses alanında yapmaya devam ettiğimiz çalışmalardan gerçekten heyecan duyuyorum.
Tamamen, UWP MIDI API, UWP MIDI API için Win32 Sargısı ve Windows Store uygulamaları ve PowerShell senaryoları için yardımcı kitaplıklar, uygulamaların ve komut dosyalarının Bluetooth Midi dahil en son Windows 10’daki en son MIDI teknolojisinden yararlanmasını mümkün kılar.
BEN’M gerçekten bu API’yi destekleyecek yaklaşan masaüstü ve Windows Store uygulamalarını ve Bluetooth Le Midi gibi teknolojileri dört gözle bekliyorum. Ve yukarıda belirttiğim gibi, lütfen doğrudan benimle iletişime geçin’Pro müzisyen hedefli bir uygulama oluşturmak ve rehberliğe ihtiyaç duymanız veya başka türlü sorularınız var.
Kaynaklar
- UWP uygulamaları geliştirmeye başlayın
- Cihazlar.MIDI Ad alanı belgeleri
- Resmi Windows 10 UWP MIDI API örneği
- Win32 MIDI Sargısı için Github Repo
- Pete’MIDI ve Ses Projeleri ile Github Repoları
- Win32 MIDI sargısı için nuget paketi
- Pete Brown Summer Namm 2015 Windows 10 hakkında açılış konuşması
- MIDI Derneği
- Avucunuzda Bir Stüdyo: Windows 10 için Ses ve Video Oluşturma Uygulamaları Geliştirme
- UWP’de Audiograf ile Mekansal Ses
- UWP uygulamalarında ve oyunlarda mekansal ses
Başlamak için Visual Studio’yu indirin.
Windows ekibi geri bildiriminizi duymak ister. Lütfen Windows Geliştiricisi Uservoice sitemizi kullanarak geri bildirimleri sağlayın. Doğrudan bir hatanız varsa, lütfen doğrudan Windows 10’da oluşturulan Windows geri bildirim aracını kullanın.
MIDI Port Sürücüsü
MIDI bağlantı noktası sürücüsü bir MIDI sentezleyici veya yakalama cihazını yönetir. Adaptör sürücüsü, bir MIDI akışı yakalayabilen veya oluşturabilen bir MIDI filtresi (bkz. MIDI ve DirectMusic filtreleri) oluşturmak için MIDI bağlantı noktası sürücüsüne bağlanan karşılık gelen bir MIDI miniport sürücüsü sağlar.
MIDI bağlantı noktası sürücüsü, miniport sürücüsüne bir Iportmidi arayüzü ortaya çıkarır. Iportmidi Temel Arayüz Iport’taki yöntemleri devralır. Iportmidi Aşağıdaki ek yöntemleri sağlar:
Port sürücüsüne MIDI sentezleyici veya yakalama cihazının MIDI akışında yeni bir konuma geldiğini bildirir. İPortMidi :: REGSTerservice Group
Bağlantı noktası sürücüsüyle bir servis grubu nesnesini kaydeder. Bir servis grubu, MiniPort sürücüsü aradığında çağrılacak bir veya daha fazla hizmet rutininin bir listesini içerir Bilgilendirmek; Daha fazla bilgi için bkz. Hizmet Lavabosu ve Servis Grubu Nesneleri.
MIDI bağlantı noktası ve miniport sürücü nesneleri Iportmidi ve iminiportmidi arayüzleri. Miniport sürücüsü bağlantı noktası sürücüsünü kullanır Iportmidi Donanım kesintilerinin bağlantı noktası sürücüsüne bildirmek için arayüz. Buna ek olarak, bağlantı noktası sürücüsü, IminiPortMidistream arayüzleri aracılığıyla miniport sürücüsünün akış nesneleriyle iletişim kurar.
Windows XP ve daha sonra Iportmidi ve iPortdmus arayüzleri her ikisi de tek bir dahili sürücü modülünde uygulanır. Bu konsolidasyon, bu iki arayüzün benzerliği ile kolaylaştırılmıştır. Örneğin, her iki arayüz için de aynı yöntemler tanımlanır. Windows’un önceki sürümleri için yazılan uygulamalar, Iportmidi Ve Iportdmus MIDI ve DMUS bağlantı noktası sürücülerinin konsolidasyonundan kaynaklanan arayüzler.
Geri bildirim
Gönder ve Geri Bildirimi Görüntüle
Windows 10’da MIDI Geliştirmeleri
Son zamanlarda Microsoft’tan Pete Brown, Windows 10’daki MIDI geliştirmeleri hakkında çok bilgilendirici bir blog yazısı yayınladı.
Blog yazısı, dahil olmak üzere bir dizi konuyu kapsar
- UWP MIDI BASICS – Windows Store uygulamalarında MIDI’yi kullanma
- Windows 10 Yıldönümü Güncellemesinde Yeni Bluetooth Le Midi desteği
- UWP MIDI için Win32 sargısı (API’yi masaüstü uygulamaları için erişilebilir hale getirir)
- C# ve Powershell için MIDI yardımcı kütüphaneleri
Windows 10’da MIDI Geliştirmeler | Windows için Uygulamalar Oluşturma
“Microsoft’un Bluetooth MIDI specini desteklediğini ve basitleştirilmiş bir API aracılığıyla Windows geliştiricilerine maruz bıraktığını görmekten mutluluk duyuyoruz. UWP MIDI API’si için yeni Win32 sargısını kullanarak Bluetooth MIDI desteğini çok hızlı bir şekilde prototipleyebildik. Cakewalk’ta kablosuz çevre birimlerini desteklemek için ileriye bakıyoruz, bu yüzden bu Microsoft’tan çok hoş bir ek.”
Noel Borthwick, CTO, Cakewalk tarafından
Pete’nin RPN’lerin ve NRPN’lerin nasıl çalıştığı ve veri yapılarına ilişkin makalesinde de güzel bir açıklama var.
Windows 10’un piyasaya sürülmesiyle, büyük işletim sistemi şirketlerinin üçü (Apple, Google ve Microsoft), MIDI için MIDI Üreticiler Derneği Standardı için bu sitenin Spesifikasyon bölümünde bulunabilen Bluetooth düşük enerjisi için destek geliştirdi ve MIDI Association üyeleri tarafından ücretsiz olarak indirilebilir.