Τα Windows 10 έχουν MIDI
Windows 10 Drivers MIDI: Πώς να τα εγκαταστήσετε σε μερικά βήματα
Η ομάδα των Windows θα ήθελε να ακούσει τα σχόλιά σας. Διατηρήστε τα σχόλια που έρχονται χρησιμοποιώντας τον ιστότοπο Uservoice Windows Developer Uservoice. Εάν έχετε ένα άμεσο σφάλμα, χρησιμοποιήστε το εργαλείο ανατροφοδότησης των Windows που είναι ενσωματωμένο απευθείας στα Windows 10.
MIDI
Αυτό το άρθρο σας δείχνει πώς να απαριθμήσετε συσκευές MIDI (Musical Instrument Digital Interface) και να στείλετε και να λαμβάνετε μηνύματα MIDI από μια εφαρμογή Universal Windows. Τα Windows 10 υποστηρίζουν το MIDI πάνω από το USB (συμμορφούμενες και τους περισσότερους ιδιόκτητους οδηγούς), το MIDI πάνω από το Bluetooth LE (Windows 10 Anniversary Edition και αργότερα) και μέσω ελεύθερων διαθέσιμων προϊόντων τρίτου μέρους, MIDI Over Ethernet και δρομολογημένο MIDI.
Απαριθμήστε τις συσκευές MIDI
Πριν από την απαρίθμηση και τη χρήση συσκευών MIDI, προσθέστε τους ακόλουθους χώρους ονομάτων στο έργο σας.
Χρήση Windows.συσκευές.Απαρίθμηση;
Χρήση Windows.συσκευές.Midi;
χρησιμοποιώντας σύστημα.Νήμα.Καθήκοντα;
Πρόσθεσε ένα Πλαίσιο λίστας Ελέγξτε στη σελίδα XAML που θα επιτρέψει στον χρήστη να επιλέξει μία από τις συσκευές εισόδου MIDI που συνδέονται με το σύστημα. Προσθέστε ένα άλλο για να απαριθμήσετε τις συσκευές εξόδου MIDI.
ο Εύρετος μέθοδος Πληροφορίες συσκευής Η κλάση χρησιμοποιείται για την απαρίθμηση πολλών διαφορετικών τύπων συσκευών που αναγνωρίζονται από τα Windows. Για να καθορίσετε ότι θέλετε μόνο τη μέθοδο να βρείτε συσκευές εισόδου MIDI, χρησιμοποιήστε τη συμβολοσειρά επιλογής που επιστρέφεται από Midiinport.GetDeviceselector. Εύρετος Επιστρέφει ένα Συσκευασία που περιέχει ένα Πληροφορίες συσκευής Για κάθε συσκευή εισόδου MIDI που έχει εγγραφεί στο σύστημα. Εάν η επιστρεφόμενη συλλογή δεν περιέχει στοιχεία, τότε δεν υπάρχουν διαθέσιμες συσκευές εισόδου MIDI. Εάν υπάρχουν στοιχεία στη συλλογή, βρόχο μέσω του Πληροφορίες συσκευής αντικείμενα και προσθέστε το όνομα κάθε συσκευής στη συσκευή εισόδου MIDI Πλαίσιο λίστας.
ιδιωτική εργασία async exeratemidiinputDevices ()
{
// βρείτε όλες τις συσκευές εισόδου MIDI
String midiinputQueryString = midiinport.GetDevicesElector ();
DeviceInformationCollection MidiInputDevices = Αναμονή DeviceInformation.FindAllasync (midiinputQueryString);
midiinportlistbox.Αντικείμενα.Σαφή();
// Επιστροφή εάν δεν υπάρχουν συνδεδεμένες εξωτερικές συσκευές
αν (midiinputDevices.Count == 0)
{
Αυτό.midiinportlistbox.Αντικείμενα.Προσθήκη ("Δεν βρέθηκαν συσκευές εισόδου MIDI!");
Αυτό.midiinportlistbox.IsEnabled = false;
ΕΠΙΣΤΡΟΦΗ;
}
// αλλιώς, προσθέστε κάθε συνδεδεμένη συσκευή εισόδου στη λίστα
foreach (DeviceInformation DeviceInfo σε midiinputDevices)
{
Αυτό.midiinportlistbox.Αντικείμενα.Προσθήκη (DeviceInfo.Ονομα);
}
Αυτό.midiinportlistbox.IsEnabled = true;
}
Η απαρίθμηση των συσκευών εξόδου MIDI λειτουργεί με τον ίδιο ακριβώς τρόπο όπως η απαρίθμηση συσκευών εισόδου, εκτός από το ότι πρέπει να καθορίσετε τη συμβολοσειρά επιλογής που επιστρέφεται από Midioutport.GetDeviceselector Όταν καλείτε Εύρετος.
ιδιωτική εργασία Async EnumerAmidiOutputDevices ()
{
// Βρείτε όλες τις συσκευές MIDI εξόδου
String midioutportQueryString = midioutport.GetDevicesElector ();
DeviceInformationCollection.FindAllasync (midioutportQueryString);
midioutportlistbox.Αντικείμενα.Σαφή();
// Επιστροφή εάν δεν υπάρχουν συνδεδεμένες εξωτερικές συσκευές
αν (midioutputDevices.Count == 0)
{
Αυτό.midioutportlistbox.Αντικείμενα.Προσθήκη ("Δεν βρέθηκαν συσκευές εξόδου MIDI!");
Αυτό.midioutportlistbox.IsEnabled = false;
ΕΠΙΣΤΡΟΦΗ;
}
// αλλιώς, προσθέστε κάθε συνδεδεμένη συσκευή εισόδου στη λίστα
foreach (DeviceInformation DeviceInfo σε midioutputDevices)
{
Αυτό.midioutportlistbox.Αντικείμενα.Προσθήκη (DeviceInfo.Ονομα);
}
Αυτό.midioutportlistbox.IsEnabled = true;
}
Δημιουργήστε μια κλάση βοηθητικού παρατηρητή συσκευής
ο Παράθυρα.συσκευές.Απαρίθμηση Ο χώρος ονομάτων παρέχει το Κτηνοτρόφος που μπορεί να ειδοποιήσει την εφαρμογή σας εάν προστίθενται ή αφαιρεθούν συσκευές από το σύστημα ή εάν ενημερώνονται οι πληροφορίες για μια συσκευή. Δεδομένου ότι οι εφαρμογές με δυνατότητα Midi συνήθως ενδιαφέρονται τόσο για συσκευές εισόδου όσο και για εξόδου, αυτό το παράδειγμα δημιουργεί μια κλάση βοηθού που υλοποιεί το Κτηνοτρόφος μοτίβο, έτσι ώστε ο ίδιος κώδικας να μπορεί να χρησιμοποιηθεί τόσο για τις συσκευές εισόδου MIDI όσο και για τις συσκευές εξόδου MIDI, χωρίς την ανάγκη επανάληψης.
Προσθέστε μια νέα τάξη στο έργο σας για να χρησιμεύσετε ως παρατηρητής της συσκευής σας. Σε αυτό το παράδειγμα, η τάξη ονομάζεται Mymididevicewatcher. Ο υπόλοιπος κώδικας σε αυτή την ενότητα χρησιμοποιείται για την εφαρμογή της κλάσης Helper.
Προσθέστε μερικές μεταβλητές μελών στην τάξη:
- ΕΝΑ Κτηνοτρόφος αντικείμενο που θα παρακολουθεί τις αλλαγές των συσκευών.
- Μια συμβολοσειρά επιλογής συσκευής που θα περιέχει το MIDI στη συμβολοσειρά επιλογής θύρας για μία εμφάνιση και τη συμβολοσειρά επιλογής θύρας MIDI Out για άλλη εμφάνιση.
- ΕΝΑ Πλαίσιο λίστας Έλεγχος που θα συμπληρωθεί με τα ονόματα των διαθέσιμων συσκευών.
- ΕΝΑ Κροταφόρος που απαιτείται για την ενημέρωση του UI από ένα νήμα εκτός από το νήμα UI.
DeviceWatcher DeviceWatcher;
String deviceselectorstring;
ListBox DevicElistbox;
Coredispatcher Coredispatcher;
Πρόσθεσε ένα Συσκευασία Ιδιότητα που χρησιμοποιείται για πρόσβαση στην τρέχουσα λίστα συσκευών εκτός της κλάσης Helper.
δημόσια συσκευή CHEFTINFormationCollection DeviceInformationCollection {get; ιδιωτικό σετ. }
Στον κατασκευαστή κλάσης, ο καλούντος περνά στη συμβολοσειρά επιλογής συσκευής MIDI, το Πλαίσιο λίστας για την καταχώριση των συσκευών και το Αποστολέας Χρειάζεται να ενημερώσετε το UI.
Κλήση Πληροφορίες συσκευής.Δημιουργός για να δημιουργήσετε μια νέα παρουσία του Κτηνοτρόφος Κατηγορία, περνώντας στη συμβολοσειρά επιλογής συσκευής MIDI.
Εγγραφείτε χειριστές για τους χειριστές συμβάντων του Watcher.
Δημόσια MyMidideViceWatcher (String MidideVicesElectorString, ListBox MidideVicelistbox, Coredispatcher Dispatcher) { deviceselectorstring = midideVicesElectorString; devicelistbox = midideVicelistBox; coredispatcher = αποστολέας; DeviceWatcher = DeviceInformation.CreateWatcher (deviceselectorstring); κτηνοτρόφος.Προστέθηκε += DeviceWatcher_added; κτηνοτρόφος.Αφαιρέθηκε += deviceWatcher_Removed; κτηνοτρόφος.Ενημερώθηκε += DeviceWatcher_updated; κτηνοτρόφος.Enumerationcompleted += devicewatcher_enumerationcompleted; }
Ερώτηση 1: Πώς μπορώ να απαριθμήσω τις συσκευές εισόδου MIDI σε μια παγκόσμια εφαρμογή Windows?
Μπορείτε να απαριθμήσετε τις συσκευές εισόδου MIDI σε μια εφαρμογή Universal Windows χρησιμοποιώντας το Εύρετος μέθοδος του Πληροφορίες συσκευής τάξη. Για να καθορίσετε ότι θέλετε μόνο να βρείτε συσκευές εισόδου MIDI, χρησιμοποιήστε τη συμβολοσειρά επιλογής που επιστρέφεται από Midiinport.GetDeviceselector. Βρόχο μέσα από το Πληροφορίες συσκευής Αντικείμενα στα επιστρεφόμενα Συσκευασία και προσθέστε το όνομα κάθε συσκευής σε ένα στοιχείο ελέγχου λίστας λίστας.
Ερώτηση 2: Πώς μπορώ να απαριθμήσω τις συσκευές εξόδου MIDI σε μια παγκόσμια εφαρμογή Windows?
Μπορείτε να απαριθμήσετε τις συσκευές εξόδου MIDI σε μια εφαρμογή Universal Windows χρησιμοποιώντας την ίδια μέθοδο με την απαρίθμηση συσκευών εισόδου. Απλά χρησιμοποιήστε τη συμβολοσειρά επιλογής που επιστρέφεται από Midioutport.GetDeviceselector Αντ ‘αυτού όταν καλείτε Εύρετος.
Ερώτηση 3: Πώς μπορώ να δημιουργήσω μια κλάση βοηθητικού παρατηρητή συσκευής σε μια εφαρμογή Universal Windows?
Μπορείτε να δημιουργήσετε μια κλάση Helper Watcher σε μια εφαρμογή Universal Windows εφαρμόζοντας το Κτηνοτρόφος μοτίβο από το Παράθυρα.συσκευές.Απαρίθμηση χώρος ονομάτων. Αυτό επιτρέπει την ειδοποίηση της εφαρμογής σας όταν προστίθενται ή αφαιρούνται συσκευές από το σύστημα ή εάν ενημερώνονται οι πληροφορίες για μια συσκευή. Η κλάση Helper μπορεί να χρησιμοποιηθεί τόσο για συσκευές εισόδου και εξόδου MIDI χωρίς επικάλυψη του κώδικα.
Ερώτηση 4: Πώς μπορώ να χρησιμοποιήσω ένα στοιχείο ελέγχου λίστας για να καταγράψω τις συσκευές εισόδου MIDI σε μια εφαρμογή Universal Windows?
Σε μια εφαρμογή Universal Windows, μπορείτε να χρησιμοποιήσετε ένα στοιχείο ελέγχου λίστας για να απαριθμήσετε τις συσκευές εισόδου MIDI. Προσθέστε ένα στοιχείο ελέγχου λίστας στη σελίδα XAML και συμπληρώστε το με τα ονόματα των συσκευών εισόδου MIDI με βρόχο μέσω του Πληροφορίες συσκευής αντικείμενα στο Συσκευασία αποκτήθηκε από Εύρετος.
Ερώτηση 5: Πώς μπορώ να χρησιμοποιήσω ένα έλεγχο λίστας για να καταχωρίσουμε τις συσκευές εξόδου MIDI σε μια εφαρμογή Universal Windows?
Χρησιμοποιώντας ένα έλεγχο λίστας για να καταχωρίσετε τις συσκευές εξόδου MIDI σε μια παγκόσμια εφαρμογή Windows είναι παρόμοια με τις συσκευές εισαγωγής καταχώρισης. Απλά αποκτήστε το Συσκευασία Για συσκευές εξόδου χρησιμοποιώντας Εύρετος και βρόχο μέσω του Πληροφορίες συσκευής Αντικείμενα για την συμπλήρωση του ελέγχου λίστας.
Ερώτηση 6: Πώς μπορώ να ενημερώσω το UI από ένα νήμα εκτός από το νήμα UI σε μια παγκόσμια εφαρμογή Windows?
Μπορείτε να ενημερώσετε το UI από ένα νήμα εκτός από το νήμα UI σε μια εφαρμογή Universal Windows χρησιμοποιώντας το Κροταφόρος τάξη. Περάστε την παρουσία του Coredispatcher στην κλάση Helper Watcher της συσκευής και χρησιμοποιήστε το Runasync Μέθοδος για την εκτέλεση κώδικα στο νήμα UI.
Ερώτηση 7: Πώς μπορώ να παρακολουθώ για αλλαγές συσκευών σε μια εφαρμογή Universal Windows?
Σε μια εφαρμογή Universal Windows, μπορείτε να παρακολουθείτε για αλλαγές συσκευών χρησιμοποιώντας το Κτηνοτρόφος τάξη. Εγγραφείτε χειριστές συμβάντων για το Προστέθηκε, Απομακρύνθηκε, ΕΠΙΚΑΙΡΟΠΟΙΗΜΕΝΟ, και Απαριθμημένος Τα συμβάντα του παρατηρητή της συσκευής πρέπει να ειδοποιηθούν όταν προστίθενται συσκευές, αφαιρεμένες, ενημερωμένες ή όταν ολοκληρωθεί η λειτουργία απαρίθμησης.
Ερώτηση 8: Πώς μπορώ να χειριστώ το συμβάν όταν προστίθεται νέα συσκευή MIDI σε μια εφαρμογή Universal Windows?
Μπορείτε να χειριστείτε το συμβάν όταν μια νέα συσκευή MIDI προστίθεται σε μια εφαρμογή Universal Windows με εγγραφή στο Προστέθηκε συμβάν του παρατηρητή της συσκευής. Στον χειριστή της εκδήλωσης, μπορείτε να ενημερώσετε το UI για να αντικατοπτρίσετε τη νέα συσκευή.
Ερώτηση 9: Πώς μπορώ να χειριστώ το συμβάν όταν μια συσκευή MIDI αφαιρείται σε μια παγκόσμια εφαρμογή Windows?
Για να χειριστείτε το συμβάν όταν αφαιρείται μια συσκευή MIDI σε μια παγκόσμια εφαρμογή Windows, εγγραφείτε στο Απομακρύνθηκε συμβάν του παρατηρητή της συσκευής. Στον χειριστή συμβάντων, μπορείτε να ενημερώσετε το UI για να καταργήσετε τη συσκευή από τη λίστα.
Ερώτηση 10: Πώς μπορώ να χειριστώ το συμβάν όταν οι πληροφορίες για μια συσκευή MIDI ενημερώνονται σε μια παγκόσμια εφαρμογή Windows?
Σε μια παγκόσμια εφαρμογή Windows, μπορείτε να χειριστείτε το συμβάν όταν οι πληροφορίες για μια συσκευή MIDI ενημερώνονται με εγγραφή στο ΕΠΙΚΑΙΡΟΠΟΙΗΜΕΝΟ συμβάν του παρατηρητή της συσκευής. Στον χειριστή της εκδήλωσης, μπορείτε να ενημερώσετε το UI για να αντικατοπτρίσετε τις ενημερωμένες πληροφορίες της συσκευής.
Ερώτηση 11: Πώς μπορώ να προσδιορίσω εάν δεν υπάρχουν διαθέσιμες συσκευές εισόδου MIDI σε μια παγκόσμια εφαρμογή Windows?
Σε μια παγκόσμια εφαρμογή Windows, μπορείτε να διαπιστώσετε εάν δεν υπάρχουν διαθέσιμες συσκευές εισόδου MIDI ελέγχοντας τον αριθμό του Συσκευασία αποκτήθηκε από Εύρετος. Εάν η καταμέτρηση είναι 0, σημαίνει ότι δεν υπάρχουν διαθέσιμες συσκευές εισόδου MIDI.
Ερώτηση 12: Πώς μπορώ να προσδιορίσω εάν δεν υπάρχουν διαθέσιμες συσκευές εξόδου MIDI σε μια παγκόσμια εφαρμογή Windows?
Σε μια εφαρμογή Universal Windows, μπορείτε να διαπιστώσετε εάν δεν υπάρχουν διαθέσιμες συσκευές εξόδου MIDI ελέγχοντας τον αριθμό του Συσκευασία αποκτήθηκε από Εύρετος. Εάν η καταμέτρηση είναι 0, σημαίνει ότι δεν υπάρχουν διαθέσιμες συσκευές εξόδου MIDI.
Ερώτηση 13: Πώς μπορώ να χειριστώ το συμβάν όταν ολοκληρωθεί η απαρίθμηση των συσκευών MIDI σε μια παγκόσμια εφαρμογή Windows?
Μπορείτε να χειριστείτε το συμβάν όταν η απαρίθμηση των συσκευών MIDI ολοκληρώνεται σε μια παγκόσμια εφαρμογή Windows με εγγραφή στο Απαριθμημένος συμβάν του παρατηρητή της συσκευής. Στον χειριστή της εκδήλωσης, μπορείτε να εκτελέσετε τις απαραίτητες ενέργειες μετά την ολοκλήρωση της απαρίθμησης.
Ερώτηση 14: Πώς μπορώ να ελέγξω αν μια συγκεκριμένη συσκευή MIDI είναι μια συσκευή εισόδου ή μια συσκευή εξόδου σε μια παγκόσμια εφαρμογή Windows?
Σε μια εφαρμογή Universal Windows, μπορείτε να ελέγξετε εάν μια συγκεκριμένη συσκευή MIDI είναι μια συσκευή εισόδου ή μια συσκευή εξόδου χρησιμοποιώντας το Πληροφορίες συσκευής ιδιότητες του αντικειμένου. Οι ιδιότητες της συσκευής περιέχουν πληροφορίες σχετικά με τον τύπο της συσκευής, όπως εάν πρόκειται για συσκευή εισόδου ή εξόδου.
Ερώτηση 15: Πώς μπορώ να αποκτήσω πρόσβαση στην τρέχουσα λίστα των συσκευών MIDI εκτός της κλάσης Helper Watcher σε μια εφαρμογή Universal Windows?
Σε μια εφαρμογή Universal Windows, μπορείτε να έχετε πρόσβαση στην τρέχουσα λίστα των συσκευών MIDI εκτός της κλάσης Helper Watcher Watcher χρησιμοποιώντας μια ιδιότητα. Δημιουργήστε μια δημόσια ιδιοκτησία τύπου Συσκευασία στην κλάση Helper και ρυθμίστε την τιμή της κάθε φορά που ενημερώνεται η λίστα των συσκευών. Στη συνέχεια, μπορείτε να έχετε πρόσβαση σε αυτήν την ιδιότητα από άλλα μέρη της εφαρμογής σας για να λάβετε την τρέχουσα λίστα των συσκευών MIDI.
Windows 10 Drivers MIDI: Πώς να τα εγκαταστήσετε σε μερικά βήματα
Η ομάδα των Windows θα ήθελε να ακούσει τα σχόλιά σας. Διατηρήστε τα σχόλια που έρχονται χρησιμοποιώντας τον ιστότοπο Uservoice Windows Developer Uservoice. Εάν έχετε ένα άμεσο σφάλμα, χρησιμοποιήστε το εργαλείο ανατροφοδότησης των Windows που είναι ενσωματωμένο απευθείας στα Windows 10.
MIDI
Αυτό το άρθρο σας δείχνει πώς να απαριθμήσετε συσκευές MIDI (Musical Instrument Digital Interface) και να στείλετε και να λαμβάνετε μηνύματα MIDI από μια εφαρμογή Universal Windows. Τα Windows 10 υποστηρίζουν το MIDI πάνω από το USB (συμμορφούμενες και τους περισσότερους ιδιόκτητους οδηγούς), το MIDI πάνω από το Bluetooth LE (Windows 10 Anniversary Edition και αργότερα) και μέσω ελεύθερων διαθέσιμων προϊόντων τρίτου μέρους, MIDI Over Ethernet και δρομολογημένο MIDI.
Απαριθμήστε τις συσκευές MIDI
Πριν από την απαρίθμηση και τη χρήση συσκευών MIDI, προσθέστε τους ακόλουθους χώρους ονομάτων στο έργο σας.
Χρήση Windows.συσκευές.Απαρίθμηση; Χρήση Windows.συσκευές.Midi; χρησιμοποιώντας σύστημα.Νήμα.Καθήκοντα;
Πρόσθεσε ένα Πλαίσιο λίστας Ελέγξτε στη σελίδα XAML που θα επιτρέψει στον χρήστη να επιλέξει μία από τις συσκευές εισόδου MIDI που συνδέονται με το σύστημα. Προσθέστε ένα άλλο για να απαριθμήσετε τις συσκευές εξόδου MIDI.
ο Εύρετος μέθοδος Πληροφορίες συσκευής Η κλάση χρησιμοποιείται για την απαρίθμηση πολλών διαφορετικών τύπων συσκευών που αναγνωρίζονται από τα Windows. Για να καθορίσετε ότι θέλετε μόνο τη μέθοδο να βρείτε συσκευές εισόδου MIDI, χρησιμοποιήστε τη συμβολοσειρά επιλογής που επιστρέφεται από Midiinport.GetDeviceselector. Εύρετος Επιστρέφει ένα Συσκευασία που περιέχει ένα Πληροφορίες συσκευής Για κάθε συσκευή εισόδου MIDI που έχει εγγραφεί στο σύστημα. Εάν η επιστρεφόμενη συλλογή δεν περιέχει στοιχεία, τότε δεν υπάρχουν διαθέσιμες συσκευές εισόδου MIDI. Εάν υπάρχουν στοιχεία στη συλλογή, βρόχο μέσω του Πληροφορίες συσκευής αντικείμενα και προσθέστε το όνομα κάθε συσκευής στη συσκευή εισόδου MIDI Πλαίσιο λίστας.
ιδιωτική εργασία async exeratemidiinputDevices () < // 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; >// αλλιώς, προσθέστε κάθε συνδεδεμένη συσκευή εισόδου στη λίστα Foreach (DeviceInformation DeviceInfo σε midiinputDevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >Αυτό.midiinportlistbox.IsEnabled = true; >
Η απαρίθμηση των συσκευών εξόδου MIDI λειτουργεί με τον ίδιο ακριβώς τρόπο όπως η απαρίθμηση συσκευών εισόδου, εκτός από το ότι πρέπει να καθορίσετε τη συμβολοσειρά επιλογής που επιστρέφεται από Midioutport.GetDeviceselector Όταν καλείτε Εύρετος.
ιδιωτική εργασία Async EnumerAmidiOutputDevices () < // 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; >// αλλιώς, προσθέστε κάθε συνδεδεμένη συσκευή εισόδου στη λίστα Foreach (DeviceInformation DeviceInfo σε midioutputDevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >Αυτό.midioutportlistbox.IsEnabled = true; >
Δημιουργήστε μια κλάση βοηθητικού παρατηρητή συσκευής
ο Παράθυρα.συσκευές.Απαρίθμηση Ο χώρος ονομάτων παρέχει το Κτηνοτρόφος που μπορεί να ειδοποιήσει την εφαρμογή σας εάν προστίθενται ή αφαιρεθούν συσκευές από το σύστημα ή εάν ενημερώνονται οι πληροφορίες για μια συσκευή. Δεδομένου ότι οι εφαρμογές με δυνατότητα Midi συνήθως ενδιαφέρονται τόσο για συσκευές εισόδου όσο και για εξόδου, αυτό το παράδειγμα δημιουργεί μια κλάση βοηθού που υλοποιεί το Κτηνοτρόφος μοτίβο, έτσι ώστε ο ίδιος κώδικας να μπορεί να χρησιμοποιηθεί τόσο για τις συσκευές εισόδου MIDI όσο και για τις συσκευές εξόδου MIDI, χωρίς την ανάγκη επανάληψης.
Προσθέστε μια νέα τάξη στο έργο σας για να χρησιμεύσετε ως παρατηρητής της συσκευής σας. Σε αυτό το παράδειγμα ονομάζεται η κλάση Mymididevicewatcher. Ο υπόλοιπος κώδικας σε αυτή την ενότητα χρησιμοποιείται για την εφαρμογή της κλάσης Helper.
Προσθέστε μερικές μεταβλητές μελών στην τάξη:
- ΕΝΑ Κτηνοτρόφος αντικείμενο που θα παρακολουθεί τις αλλαγές των συσκευών.
- Μια συμβολοσειρά επιλογής συσκευής που θα περιέχει το MIDI στη συμβολοσειρά επιλογής θύρας για μία εμφάνιση και τη συμβολοσειρά επιλογής θύρας MIDI Out για άλλη εμφάνιση.
- ΕΝΑ Πλαίσιο λίστας Έλεγχος που θα συμπληρωθεί με τα ονόματα των διαθέσιμων συσκευών.
- ΕΝΑ Κροταφόρος που απαιτείται για την ενημέρωση του UI από ένα νήμα εκτός από το νήμα UI.
DeviceWatcher DeviceWatcher; String deviceselectorstring; ListBox DevicElistbox; Coredispatcher Coredispatcher;
Πρόσθεσε ένα Συσκευασία Ιδιότητα που χρησιμοποιείται για πρόσβαση στην τρέχουσα λίστα συσκευών εκτός της κλάσης Helper.
δημόσια συσκευή ΣΥΣΚΕΥΗ ΣΥΣΚΕΥΗ Συσκευασία
Στον κατασκευαστή κλάσης, ο καλούντος περνά στη συμβολοσειρά επιλογής συσκευής MIDI, το Πλαίσιο λίστας για την καταχώριση των συσκευών και το Αποστολέας Χρειάζεται να ενημερώσετε το UI.
Κλήση Πληροφορίες συσκευής.Δημιουργός για να δημιουργήσετε μια νέα παρουσία του Κτηνοτρόφος Κατηγορία, περνώντας στη συμβολοσειρά επιλογής συσκευής MIDI.
Εγγραφείτε χειριστές για τους χειριστές συμβάντων του Watcher.
Δημόσια MyMidideViceWatcher (String MidideVicesElectorString, ListBox MidideVicelistbox, Coredispatcher Dispatcher)
ο Κτηνοτρόφος έχει τα ακόλουθα συμβάντα:
- Προστέθηκε – Ανυψώνεται όταν προστίθεται νέα συσκευή στο σύστημα.
- Απομακρύνθηκε – Ανυψώνεται όταν αφαιρείται μια συσκευή από το σύστημα.
- ΕΠΙΚΑΙΡΟΠΟΙΗΜΕΝΟ – Αυξάνονται όταν ενημερώνονται οι πληροφορίες που σχετίζονται με μια υπάρχουσα συσκευή.
- Απαριθμημένος – Ανυψώθηκε όταν ο παρατηρητής έχει ολοκληρώσει την απαρίθμησή του για τον τύπο της συσκευής που ζητήθηκε.
Στη διαχείριση της εκδήλωσης για κάθε ένα από αυτά τα γεγονότα, μια μέθοδος βοηθού, Επικαιροποιημένες, καλείται να ενημερώσει το Πλαίσιο λίστας με την τρέχουσα λίστα συσκευών. Επειδή Επικαιροποιημένες Ενημερώνει τα στοιχεία του UI και αυτοί οι χειριστές συμβάντων δεν καλούνται στο νήμα UI, κάθε κλήση πρέπει να τυλιχτεί σε κλήση προς Runasync, που αναγκάζει τον καθορισμένο κωδικό να εκτελεστεί στο νήμα UI.
ιδιωτική async void DeviceWatcher_Removed (DeviceWatcher Sender, DeviceInformationUpDate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >) > Ιδιωτικό Async Void DeviceWatcher_Added (αποστολέας συσκευών, συσκευή Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >) > Ιδιωτική Async Void DeviceWatcher_enumerationClepted (DeviceWatcher Sender, Object Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >) > Ιδιωτικό Async Void DeviceWatcher_Updated (DeviceWatcher Sender, DeviceInformationUpDate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >) >
ο Επικαιροποιημένες κλήσεις μεθόδου βοηθητικού Πληροφορίες συσκευής.Εύρετος και ενημερώνει το Πλαίσιο λίστας Με τα ονόματα των επιστρεφόμενων συσκευών όπως περιγράφηκε προηγουμένως σε αυτό το άρθρο.
ιδιωτική 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 σε αυτό.Συσκευασία ΣΥΣΚΕΥΑΣΙΑ) < deviceListBox.Items.Add(deviceInformation.Name); >>
Προσθέστε μεθόδους για να ξεκινήσετε τον παρατηρητή, χρησιμοποιώντας το Κτηνοτρόφος αντικείμενο Αρχή μέθοδος και να σταματήσετε τον παρατηρητή, χρησιμοποιώντας το Να σταματήσει μέθοδος.
δημόσιο κενό startwatcher () < deviceWatcher.Start(); >δημόσιο κενό stupatcher ()
Παρέχετε έναν καταστροφικό για να καταργήσετε την καταργή των χειριστών συμβάντων Watcher και να ρυθμίσετε τον παρατηρητή της συσκευής στο NULL.
~ MyMidideViceWatcher ()
Δημιουργήστε θύρες MIDI για αποστολή και λήψη μηνυμάτων
Στον κώδικα πίσω για τη σελίδα σας, δηλώστε μεταβλητές μέλους για να πραγματοποιήσετε δύο περιπτώσεις του Mymididevicewatcher CLASS Helper, μία για συσκευές εισόδου και μία για συσκευές εξόδου.
MyMidideViceWatcher inputDevicewatcher; MyMidideViceWatcher outputDeviceWatcher;
Δημιουργήστε μια νέα παρουσία των τάξεων του Watcher Helper, περνώντας στη συμβολοσειρά επιλογής συσκευής, το Πλαίσιο λίστας να συμπληρωθεί και το Κροταφόρος αντικείμενο που μπορεί να προσεγγιστεί μέσω της σελίδας Αποστολέας ιδιοκτησία. Στη συνέχεια, καλέστε τη μέθοδο για να ξεκινήσετε κάθε αντικείμενο Κτηνοτρόφος.
Λίγο αργότερα Κτηνοτρόφος Ξεκινά, θα ολοκληρώσει την απαρίθμηση των σημερινών συσκευών που συνδέονται με το σύστημα και θα αυξήσουν το Απαριθμημένος εκδήλωση, η οποία θα προκαλέσει το καθένα Πλαίσιο λίστας να ενημερωθεί με τις τρέχουσες συσκευές MIDI.
inputDeviceWatcher = νέο myMidideViceWatcher (midiinportport.GetDeviceselector (), midiinportlistbox, αποστολέας); inputDeviceWatcher.StartWatcher (); outputDeviceWatcher = νέο myMidideViceWatcher (midioutportport.GetDevicesElector (), midioutportlistbox, αποστολέας); outputDeviceWatcher.StartWatcher ();
Όταν ο χρήστης επιλέξει ένα στοιχείο στην είσοδο MIDI Πλαίσιο λίστας, ο Επιλογή που χρησιμοποιεί Η εκδήλωση αυξάνεται. Στο χειριστή για αυτό το γεγονός, πρόσβαση στο Συσκευασία Ιδιότητα της κλάσης Helper για να λάβετε την τρέχουσα λίστα συσκευών. Εάν υπάρχουν καταχωρήσεις στη λίστα, επιλέξτε το Πληροφορίες συσκευής Αντικείμενο με τον δείκτη που αντιστοιχεί στο Πλαίσιο λίστας έλεγχος ΕπιλεγμένοIndex.
Δημιουργήστε το Midiinport αντικείμενο που αντιπροσωπεύει την επιλεγμένη συσκευή εισόδου κάνοντας κλήση Midiinport.Από την υπόθεση, περνώντας στο Ταυτότητα Ιδιότητα της επιλεγμένης συσκευής.
Καταγράψτε έναν χειριστή για το Μήνυμα ελήφθη το συμβάν, το οποίο αυξάνεται κάθε φορά που λαμβάνεται ένα μήνυμα MIDI μέσω της καθορισμένης συσκευής.
Midiinport midiinport; Imidioutport midioutport;
ιδιωτική async void midiinportlistbox_selectionChanged (αποστολέας αντικειμένου, SelectionChangedEventArgs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation DevInfo = DeviceInformationCollection [midiinportlistbox.ΕπιλεγμένοIndex]; αν (devinfo == null) < return; >midiinport = περιμένετε midiinport.Fromidasync (Devinfo.Ταυτότητα); αν (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >midiinport.MessagereFied += midiinport_messagereCeived; >
Οταν ο Μήνυμα ελήφθη Ο χειριστής ονομάζεται, το μήνυμα περιέχεται στο Μήνυμα ιδιοκτησία του MidiMessagereceivedEventArgs. ο Τύπος του αντικειμένου μηνύματος είναι μια τιμή από το Μεσαία απαρίθμηση που υποδεικνύει τον τύπο του μηνύματος που ελήφθη. Τα δεδομένα του μηνύματος εξαρτώνται από τον τύπο του μηνύματος. Αυτό το παράδειγμα ελέγχει αν το μήνυμα είναι ένα σημείωμα στο μήνυμα και, αν ναι, εξάγει το κανάλι MIDI, τη σημείωση και την ταχύτητα του μηνύματος.
ιδιωτικό κενό midiinport_messagereCeived (αποστολέας midiinport, midimessagerefivedeventargs 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); >>
ο Επιλογή που χρησιμοποιεί Χειρισμός για τη συσκευή εξόδου Πλαίσιο λίστας λειτουργεί το ίδιο με τον χειριστή για συσκευές εισόδου, εκτός από τον χειριστή συμβάντων που δεν έχει καταχωρηθεί.
ιδιωτική async void midioutportlistbox_selectionChanged (αποστολέας αντικειμένου, SelectionChangedEventArgs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation DevInfo = DeviceInformationCollection [midioutportlistbox.ΕπιλεγμένοIndex]; αν (devinfo == null) < return; >midioutport = περιμένετε midioutport.Fromidasync (Devinfo.Ταυτότητα); αν (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
Μόλις δημιουργηθεί η συσκευή εξόδου, μπορείτε να στείλετε ένα μήνυμα δημιουργώντας ένα νέο Imidimessage Για τον τύπο του μηνύματος που θέλετε να στείλετε. Σε αυτό το παράδειγμα, το μήνυμα είναι ένα Σημείωση. ο Να στείλετε μήνυμα μέθοδος του Ιμιδίου Το αντικείμενο καλείται να στείλει το μήνυμα.
κανάλι byte = 0; byte σημείωση = 60; ταχύτητα byte = 127; Imidimessage midimessageTosend = νέο midinoteonMessage (κανάλι, σημείωση, ταχύτητα); midioutport.Sendmessage (midimessagetosend);
Όταν η εφαρμογή σας απενεργοποιείται, φροντίστε να καθαρίσετε τους πόρους των εφαρμογών σας. Καταργήστε την εγκατάσταση των χειριστών συμβάντων σας και ρυθμίστε το MIDI στη θύρα και τα αντικείμενα θύρας στο NULL. Σταματήστε τους παρατηρητές της συσκευής και ρυθμίστε τους σε μηδέν.
inputDeviceWatcher.Stupatwatcher (); inputDeviceWatcher = null; outputDeviceWatcher.Stupatwatcher (); outputDeviceWatcher = null; midiinport.MessagereCeived -= midiinport_messagereCeived; midiinport.Διαθέτω(); midiinport = null; midioutport.Διαθέτω(); midioutport = null;
Χρησιμοποιώντας το ενσωματωμένο Windows General MIDI Synth
Όταν απαριθμείτε συσκευές MIDI παραγωγής χρησιμοποιώντας την τεχνική που περιγράφεται παραπάνω, η εφαρμογή σας θα ανακαλύψει μια συσκευή MIDI που ονομάζεται “Microsoft GS Wavetable Synth”. Πρόκειται για ένα ενσωματωμένο γενικό συνθέτη MIDI που μπορείτε να παίξετε από την εφαρμογή σας. Ωστόσο, η προσπάθεια δημιουργίας ενός MIDI Outport σε αυτή τη συσκευή θα αποτύχει εκτός αν έχετε συμπεριλάβει την επέκταση SDK για το ενσωματωμένο synth στο έργο σας.
Για να συμπεριλάβετε τη γενική επέκταση SDK MIDI Synth στο έργο σας
- Σε Εξερευνητής λύσης, Κάτω από το έργο σας, κάντε δεξί κλικ βιβλιογραφικές αναφορές και επιλέξτε Προσθέστε αναφορά.
- Επεκτείνω το Καθολικά παράθυρα κόμβος.
- Επιλέγω Επεκτάσεις.
- Από τη λίστα επεκτάσεων, επιλέξτε Microsoft General MIDI DLS για εφαρμογές Universal Windows.
Σημείωση Εάν υπάρχουν πολλαπλές εκδόσεις της επέκτασης, φροντίστε να επιλέξετε την έκδοση που ταιριάζει με τον στόχο για την εφαρμογή σας. Μπορείτε να δείτε ποια έκδοση SDK η εφαρμογή σας στοχεύει στο Εφαρμογή καρτέλα των ιδιοτήτων του έργου.
Windows 10 Drivers MIDI: Πώς να τα εγκαταστήσετε σε μερικά βήματα
Για να διορθώσετε διάφορα προβλήματα υπολογιστή, συνιστούμε το πρόγραμμα οδήγησης: Αυτό το λογισμικό θα κρατήσει τους οδηγούς σας σε λειτουργία, διατηρώντας έτσι ασφαλή από κοινά σφάλματα υπολογιστή και αποτυχία υλικού. Ελέγξτε όλους τους οδηγούς σας τώρα σε 3 εύκολα βήματα:
- Κατεβάστε το DriverFix (επαληθευμένο αρχείο λήψης).
- Κάντε κλικ Εναρξη σάρωσης Για να βρείτε όλους τους προβληματικούς οδηγούς.
- Κάντε κλικ Ενημέρωση προγραμμάτων οδήγησης Για να λάβετε νέες εκδόσεις και να αποφύγετε δυσλειτουργίες του συστήματος.
- Το Driverfix έχει ληφθεί από 0 αναγνώστες αυτό το μήνα.
Το MIDI είναι ο τεχνικός όρος για ψηφιακή διεπαφή μουσικού οργάνου και αποτελείται από μια συσκευή που είναι σε θέση να συνδεθεί με ένα πλήθος μουσικών συσκευών.
Οι οδηγοί MIDI έγιναν αρχικά για τον έλεγχο των πληκτρολογίων από έναν υπολογιστή. Οι οδηγοί MIDI έχουν εξελιχθεί κατά τη διάρκεια των ετών και χρησιμοποιούνται τώρα από εκατομμύρια χρήστες των Windows 10 σε όλο τον πλανήτη.
Μια συγκεκριμένη περίπτωση αφορά τους οδηγούς MIDI Bluetooth MIDI των Windows 10, καθώς αυτά φαίνεται να είναι ακόμη πιο ευαίσθητα και μπορούν εύκολα να αποτύχουν να αναγνωριστούν από τα Windows.
Τα Windows 10 υποστηρίζουν το MIDI μέσω Bluetooth?
Το κάνει, ναι. Απλώς ανοίξτε το Ρυθμίσεις στον υπολογιστή σας και μεταβείτε στο συσκευές, έπειτα Bluetooth & άλλες συσκευές. Εδώ, επιλέξτε Bluetooth και συνδυάστε τη συσκευή σας.
Ωστόσο, ορισμένοι χρήστες ανέφεραν ότι η συσκευή τους MIDI δεν αναγνωρίστηκε πλέον μετά την ενημέρωση των Windows. Εάν αυτό είναι και η περίπτωσή σας, εδώ’Αυτό προτείνουμε:
- Διαγράψτε όλες τις συνδεδεμένες συσκευές MIDI και προσπαθήστε να τα συνδυάσετε ξανά (όπως φαίνεται παραπάνω)
- Κάντε δεξί κλικ στο εικονίδιο έντασης ήχου στη γραμμή εργασιών και επιλέξτε Ήχοι. Εάν λείπει η συσκευή σας MIDI, επιλέξτε Εμφάνιση αποσυνδεδεμένων/αναπηριών συσκευών Και δείτε αν αυτό βοηθά.
Πώς μπορώ να εγκαταστήσω προγράμματα οδήγησης MIDI στα Windows 10?
1. Χρησιμοποιήστε το Windows Αντιμετώπιση προβλημάτων
- Μεταβείτε στο Γραμμή εργασιών κουτί αναζήτησης.
- Τύπος Αντιμετώπιση προβλημάτων.
- Επιλέγω Αντιμετώπιση προβλημάτων από τη λίστα.
- Επιλέγω Υλικό και συσκευές από τον αντιμετώπιση προβλημάτων.
- Μόλις ανοίξει το αντιμετώπιση προβλημάτων Επόμενο.
- Επιλέξτε το πρόγραμμα που δεν λειτουργεί από τη λίστα με την πυκνοκατοικημένη λίστα.
- Επιλέξτε την επιθυμητή επιλογή αντιμετώπισης προβλημάτων.
Το μεγαλύτερο μέρος του υλικού είναι βύσμα και παιχνίδι. Αυτό σημαίνει ότι συνδέονται απλά στον υπολογιστή και ο υπολογιστής θα εγκαταστήσει τα σωστά προγράμματα οδήγησης.
Αυτό δεν’t Πάντα να δουλεύουμε στους χρήστες’ Η ευνοϊκή και ο δύτης πρέπει να μεταφορτωθούν από διαφορετική πηγή. Πριν αφιερώσετε χρόνο για να αναζητήσετε έναν οδηγό να εκτελέσει τις ακόλουθες εργασίες για να αντιμετωπίσετε το ζήτημα:
Ο αντιμετώπιση προβλημάτων θα δοκιμάσει το πρόγραμμα για να εξασφαλίσει ότι λειτουργεί. Εκτελέστε το αντιμετωπίζει συμβατότητας για οποιαδήποτε άλλα προγράμματα που δεν είναι συμβατά.
Μη συμβατό? Δεν είναι πρόβλημα
- Κάντε κλικ στο πλαίσιο αναζήτησης της γραμμής εργασιών.
- Τύπος Εκτέλεση προγραμμάτων.
- Επιλέγω Εκτέλεση προγραμμάτων που έγιναν για προηγούμενες εκδόσεις των Windows.
- Αυτό θα ανοίξει το Αντιμετώπιση προβλημάτων.
- Ακολουθήστε τις προτροπές στην οθόνη.
Αρα εσύ’προσπάθησαν να τρέξουν τον αντιμετώπιση προβλημάτων και δεν το έκαναν’δουλεύω. Οτι’εντάξει, γυρίστε πίσω και δοκιμάστε ξανά. Υπάρχει ένας τρόπος για να κάνετε το πρόγραμμά σας συμβατό με την έκδοση των Windows. Εδώ’πώς να το κάνω:
Βεβαιωθείτε ότι έχετε εκτελέσει το αντιμετωπίζει συμβατότητας για κάθε πρόγραμμα που χρειάζεται οδηγούς.
Συμβουλή εμπειρογνωμόνων:
ΕΥΓΕΝΙΚΗ ΧΟΡΗΓΙΑ
Οι ξεπερασμένοι οδηγοί είναι ο κύριος λόγος για τα λάθη και τα προβλήματα του συστήματος. Εάν μερικά από τα αρχεία σας λείπουν ή συντρίβουν, μια αυτοματοποιημένη λύση όπως Οδηγός οδηγού Μπορεί να λύσει αυτά τα προβλήματα σε μερικά μόνο κλικ. Και είναι επίσης ελαφρύ στο σύστημά σας!
Αντιμετωπίζετε προβλήματα με το The Windows Αντιμετώπιση προβλημάτων? Εδώ’είναι ένας μεγάλος οδηγός για τον καθορισμό του αντιμετώπισης προβλημάτων εάν σταμάτησε να εργάζεται για εσάς.
2. Αναζήτηση οδηγών
Η εγκατάσταση του προγράμματος οδήγησης με το χέρι είναι η επόμενη επιλογή σας. Η χειροκίνητη εγκατάσταση των οδηγών μπορεί να είναι επικίνδυνη εάν κατεβάζετε τους οδηγούς από μια άγνωστη ή μη αναγνωρισμένη πηγή.
Βεβαιωθείτε ότι όλοι οι οδηγοί λαμβάνονται από αξιόπιστες πηγές όπως οι κατασκευαστές’ ιστοσελίδες.
Ενημερώστε αυτόματα τα προγράμματα οδήγησης
Αν δεν είσαι’Δεν Θέλετε να περάσετε από το πρόβλημα της χειροκίνητης αναζήτησης στον ιστό για το τελευταίο διαθέσιμο πρόγραμμα οδήγησης, προτείνουμε να χρησιμοποιήσετε ένα λογισμικό Updater του οδηγού τρίτου μέρους που θα το κάνει αυτόματα για εσάς.
Όχι μόνο το λογισμικό θα ενημερώσει εύκολα το υλικολογισμικό σας, αλλά θα σαρώσει συνεχώς τη συσκευή σας για νέους οδηγούς από μόνη της, οπότε δεν μπορείτε’δεν πρέπει να το κάνω αυτό.
3. Εκτελέστε σε λειτουργία συμβατότητας
- Βρείτε το πρόγραμμα που εσείς’Ψάχνετε να τρέξετε μέσα Λειτουργία συμβατότητας.
- Κάντε δεξί κλικ στο πρόγραμμα και επιλέξτε Ιδιότητες.
- Κάνε κλικ στο Καρτέλα συμβατότητα.
- Κάντε κλικ στο πλαίσιο κάτω από τη λειτουργία συμβατότητας.
- Επιλέξτε την έκδοση των Windows που το πρόγραμμα είναι σε θέση να λειτουργήσει.
- Κάντε κλικ στο Ισχύουν.
Τα περισσότερα προγράμματα έχουν τη δυνατότητα να εκτελούνται σε λειτουργία συμβατότητας. Για να εκτελέσετε το πρόγραμμά σας σε αυτήν τη λειτουργία, εκτελέστε τα προαναφερθέντα βήματα.
Διαβάστε περισσότερα για αυτό το θέμα
- Διορθώστε το σφάλμα παραβίασης του προγράμματος οδήγησης στα Windows 10
- Πώς να διορθώσετε το ξεπερασμένο σφάλμα οδηγών στα Windows 11
- Τα Windows δεν μπορούν να κατεβάσουν τα προγράμματα οδήγησης? Διορθώστε το τώρα με αυτές τις λύσεις
- Διορθώστε το σφάλμα ACPI_DRIVER_INTERNAL στα Windows 10
- Βλέποντας τον κωδικό σφάλματος του προγράμματος οδήγησης 32? Διορθώστε το σε 4 απλά βήματα
4. Όταν όλα τα άλλα αποτυγχάνουν
Οι οδηγοί MIDI είναι σημαντικά πιο δύσκολο να εγκατασταθούν στα Windows 10 λόγω ορισμένων προβλημάτων συμβατότητας. Κάθε μία από τις διορθώσεις που αναφέρονται σε αυτό το άρθρο θα μπορούσε ενδεχομένως να διορθώσει το ζήτημα για τον οδηγό σας.
Αν εσύ’Έχετε εξαντληθεί τις επιλογές καλέστε τον κατασκευαστή για τη συσκευή σας και ζητήστε βοήθεια ή για μια θέση συμβατών οδηγών.
Οτι’για αυτό για αυτό το άρθρο. Εάν έχετε κάτι να προσθέσετε σχετικά με το θέμα, παρακαλούμε να το κάνετε στο παρακάτω τμήμα σχολίων.
- οδηγός
- Οδηγοί Windows 10
Βελτιώσεις MIDI στα Windows 10
Καθώς τα Windows 10 εξελίσσονται, συνεχίζουμε να δημιουργούμε υποστήριξη για τεχνολογίες που επικεντρώνονται στη μουσική.
Αφήνω’ρίξτε μια ματιά στο midi. Τα Windows είχαν ενσωματωμένη υποστήριξη MIDI που επέστρεψε στις ημέρες των 16 bit. Από τότε, οι περισσότερες διεπαφές MIDI έχουν μετακινηθεί στο USB και η υποστήριξη στο κουτί μας έχει διατηρήσει το ρυθμό, με οδηγό τάξης και API που υποστηρίζουν αυτές τις νέες διεπαφές.
Εκείνοι που δεν είναι εξοικειωμένοι με τη μουσική τεχνολογία μπορεί να σκεφτούν το MIDI ως απλά .αρχεία μέσης μουσικής. Μα αυτό’είναι μόνο ένα μικρό μέρος του τι είναι πραγματικά το MIDI. Από την τυποποίηση του το 1983, το MIDI παρέμεινε το πιο χρησιμοποιημένο και αναμφισβήτητα σημαντικότερο πρωτόκολλο επικοινωνιών στην παραγωγή μουσικής. Το’S που χρησιμοποιούνται για τα πάντα, από τον έλεγχο των συνθετικών και των αλληλουχιών και την αλλαγή των επιθέσεων για λίστες, για συγχρονισμό μίξερ και ακόμη και μεταβαλλόμενες κάμερες σε podcasts χρησιμοποιώντας μια επιφάνεια ελέγχου MIDI. Ακόμα και το πρωτόκολλο Arduino Firmata βασίζεται στο MIDI.
Σε αυτήν την ανάρτηση, εμείς’Θα μιλήσω για πολλά νέα πράγματα εμείς’Δημιουργήσατε για να κάνετε το MIDI ακόμα πιο χρήσιμο στις εφαρμογές σας:
- Βασικά στοιχεία UWP MIDI – Χρησιμοποιώντας το MIDI στις εφαρμογές Windows Store
- Νέα υποστήριξη Bluetooth Le MIDI στην ενημέρωση των Windows 10 επετείου
- Το Win32 Wrapper για UWP MIDI (καθιστώντας το API προσβάσιμο σε εφαρμογές επιφάνειας εργασίας)
- Βιβλιοθήκες βοηθητικού MIDI για C# και PowerShell
Επιπλέον, συμπεριλάβαμε μια σειρά βελτιώσεων που επικεντρώνονται στην ήχου όταν κυκλοφόρησαν τα Windows 10 το περασμένο καλοκαίρι. Αυτές οι βελτιώσεις περιελάμβαναν: βελτιώσεις χαμηλής καθυστέρησης στο WASAPI, πρόσθετη εργασία οδηγών με συνεργάτες για να συμμετάσχουν σε μικρότερα buffers για χαμηλότερη καθυστέρηση στις σύγχρονες συσκευές των Windows 10 όπως η επιφάνεια και τα τηλέφωνα όπως το 950/950XL. τσιμπήματα για να ενεργοποιήσετε την ακατέργαστη επεξεργασία ήχου χωρίς καθυστέρηση DSP. ένα νέο API Audio και Effect API χαμηλής καθυστέρησης που ονομάζεται Audiograph. Και, φυσικά, ένα νέο API UWP MIDI.
Εμείς’Επίσης, προστέθηκε πρόσφατα υποστήριξη για χωροταξικό ήχο για βυθιστικές εμπειρίες. Αυτό το περασμένο φθινόπωρο, στην ενημέρωση του 1511, ενεργοποιήσαμε πολύ μελλοντική υποστήριξη λειτουργίας για το Thunderbolt 3 Audio Devices, για να διασφαλίσουμε ότι εμείς’Εκεί όταν οι κατασκευαστές αρχίζουν να δημιουργούν αυτές τις συσκευές και τους οδηγούς ήχου υψηλής απόδοσης. Σωρευτικά, αυτό ήταν πολύ μεγάλη δουλειά από την Windows Engineering, όλοι οι μουσικοί και οι εφαρμογές δημιουργίας μουσικής.
Βασικά στοιχεία UWP MIDI
Στα Windows 10 RTM πέρυσι παρουσιάσαμε ένα νέο API MIDI, προσβάσιμο σε εφαρμογές UWP σε όλες σχεδόν τις συσκευές των Windows 10, οι οποίες παρέχουν έναν σύγχρονο τρόπο πρόσβασης σε αυτές τις διεπαφές MIDI. Δημιουργήσαμε αυτό το API για να παρέχουμε μια υψηλή απόδοση και ευέλικτη βάση στην οποία μπορούμε να δημιουργήσουμε υποστήριξη για νέες διεπαφές MIDI.
Αρχικά θέσαμε αυτό το API για σχόλια ως πακέτο Nuget στα Windows 8.1 και έλαβε πολλά σχόλια από τους προγραμματιστές εφαρμογών. Αυτό που βλέπετε στα Windows 10 είναι άμεσο αποτέλεσμα αυτής της ανατροφοδότησης και των δοκιμών μας.
Το API συνδέεται όμορφα με τα API της Αθλητισμού της Συσκευής και του Watcher στο UWP, καθιστώντας εύκολη την ανίχνευση του καυτού βύσματος/αποσύνδεσης των συσκευών ενώ εκτελείται η εφαρμογή σας.
Εδώ’είναι ένας απλός τρόπος για να αποκτήσετε μια λίστα με συσκευές MIDI και τα ID τους, χρησιμοποιώντας C#:
Χρήση Windows.συσκευές.Midi;
Χρήση Windows.συσκευές.Απαρίθμηση;
…
ιδιωτική async void listMidideVices ()
// απαριθμήστε τις συσκευές εισόδου
var devicelist = περιμένοντας τη συσκευή DeviceFormation.FindAllasync (
Midiinport.GetDevicesElector ());
foreach (var deviceInfo στο devicelist)
Σύστημα.Διάγνωση.Εντοπισμός εντοπισμού σφαλμάτων.WriteLine (DeviceInfo.Ταυτότητα);
Σύστημα.Διάγνωση.Εντοπισμός εντοπισμού σφαλμάτων.WriteLine (DeviceInfo.Ονομα);
Σύστημα.Διάγνωση.Εντοπισμός εντοπισμού σφαλμάτων.WriteLine (“—-“);
>
// Οι συσκευές εξόδου απαριθμούνται με τον ίδιο τρόπο, αλλά
// χρησιμοποιώντας το midioutport.GetDevicesElector ()
>
Και εδώ’S Πώς να ρυθμίσετε έναν παρατηρητή και να χειριστείτε τα συμβάντα απαρίθμησης/παρατηρητή και επίσης να λάβετε τη λίστα των συνδεδεμένων διεπαφών. Αυτός είναι λίγο περισσότερος κώδικας, αλλά αυτό’είναι μια πιο κατάλληλη προσέγγιση για τις περισσότερες εφαρμογές:
ιδιωτικό κενό startwatchingInputDevices ()
var watcher = DeviceInformation.CreateWatcher (
Midiinport.GetDevicesElector ());
παρατηρητής.Προστέθηκε += onMidiinputDeviceAdded;
παρατηρητής.Αφαιρέθηκε += onmidiinputDeviceRemoved;
παρατηρητής.Η απαριθμημένη Comcompleted += onMidiinputDeviceEnumerationClepted;
ιδιωτικό κενό onmidiinputDeviceEnumerationClepted (
Αποστολέας συσκευών, αντικείμενο args)
// Η αρχική απαρίθμηση ολοκληρώνεται. Αυτό είναι όταν
// Μπορείτε να παρουσιάσετε μια λίστα διεπαφών στο
// Χρήστης της εφαρμογής σας.
>
ιδιωτικό κενό onmidiinputDeviceRemoved (
Αποστολέας συσκευών, DeviceInformationUpdate args)
// χειριστείτε την αφαίρεση μιας συσκευής εισόδου MIDI
>
ιδιωτικό κενό onmidiinputDeviceAdded (
Αποστολέας συσκευών, συσκευή Args)
// χειριστείτε την προσθήκη μιας νέας συσκευής εισόδου MIDI
>
Η χρήση ενός παρατηρητή για συσκευές καταχώρισης και το χειρισμό προσθήκη/κατάργηση είναι μια βέλτιστη πρακτική που πρέπει να ακολουθήσετε στις εφαρμογές σας. Κανείς δεν θέλει να επανεκκινήσει την εφαρμογή τους μόνο επειδή ξέχασαν να συνδέσουν ή να ενεργοποιήσουν τον ελεγκτή MIDI τους. Η χρήση του Watcher διευκολύνει την εφαρμογή σας να χειριστεί κατάλληλα αυτές τις προσθήκες/μετακομίσεις κατά το χρόνο εκτέλεσης.
Το API είναι απλό στη χρήση, με έντονα δακτυλογραφημένες κατηγορίες για όλα τα τυπικά μηνύματα, καθώς και υποστήριξη για λειτουργίες Sysex και Buffer Based. Αυτό το παράδειγμα C# δείχνει πώς να ανοίξετε τις θύρες εισόδου και εξόδου και να ανταποκριθείτε σε συγκεκριμένα μηνύματα MIDI.
Χρήση Windows.συσκευές.Midi;
Χρήση Windows.συσκευές.Απαρίθμηση;
…
ιδιωτικό async void midiexample ()
String outportId = “ID που περάσετε από την απαρίθμηση της συσκευής”;
String inportId = “ID που περάσετε από την απαρίθμηση της συσκευής”;
// Ανοίξτε τη θύρα εξόδου και στείλτε ένα μήνυμα
var outport = περιμένετε midioutport.Fromidasync (outportid);
var noteOnMessage = νέο midinoteonMessage (0, 110, 127);
ξεπερνώ.Sendmessage (noteOnMessage);
// Ανοίξτε μια θύρα εισόδου και ακούστε μηνύματα
var inport = περιμένετε midiinportport.Fromidasync (inportId);
ανάμειξη.MessagereFied += onMidimessagereceived;
>
Ιδιωτικό κενό ONMIDIMESSAGERECEAVED (Midiinport Sender,
Midimessagerefivedeventargs args)
διακόπτης (args.Μήνυμα.Τύπος)
θήκη midimessagetype.Σημείωση:
Διακοπή;
θήκη midimessagetype.PolyphonicKeyPressure:
Διακοπή;
// και τα λοιπά.
>
>
Στις περισσότερες περιπτώσεις, θα επιθεωρήσατε τον τύπο του μηνύματος και στη συνέχεια θα ρίξετε το imidimessage σε ένα από τα έντονα μηνύματα που ορίζονται στα Windows.συσκευές.Το χώρο ονομάτων MIDI, όπως το midinoteonmessage ή το midipitchbendchangemessage. Εσείς’δεν απαιτείται όμως να το κάνετε αυτό. Μπορείτε πάντα να εργάζεστε από τα ακατέργαστα bytes δεδομένων εάν προτιμάτε.
Το Windows 10 UWP MIDI API είναι κατάλληλο για τη δημιουργία όλων των ειδών εφαρμογών Windows Store που επικεντρώνονται στη μουσική. Μπορείτε να δημιουργήσετε επιφάνειες ελέγχου, sequencers, synthesizers, εφαρμογές χρησιμότητας, βιβλιοθηκονόμους patch, ελεγκτές φωτισμού, υψηλής τάσης συνθέτες πηνίου Tesla και πολλά άλλα.
Ακριβώς όπως τα παλαιότερα API MIDI, το API MIDI των Windows 10 UWP λειτουργεί καλά με πρόσθετα τρίτου μέρους όπως ο Tobias Erichsen’S Great RTPMIDI Driver, παρέχοντας υποστήριξη για το MIDI μέσω Wired και Wi-Fi Networking.
Ένα εξαιρετικό χαρακτηριστικό του νέου API είναι ότι είναι πολυ-πελάτη. Εφόσον όλες οι εφαρμογές με το Port Open χρησιμοποιούν το API MIDI των Windows 10 UWP και όχι τα παλαιότερα API Win32 MME ή DirectMusic, μπορούν να μοιραστούν την ίδια συσκευή. Αυτό είναι κάτι που οι παλαιότεροι Apis δεν είναι’T Handle χωρίς προσαρμοσμένους οδηγούς και ήταν ένα κοινό αίτημα από τους συνεργάτες και τους πελάτες μας.
Τέλος, αυτό’είναι σημαντικό να σημειωθεί ότι το Windows 10 UWP MIDI API λειτουργεί με όλες τις αναγνωρισμένες συσκευές MIDI, είτε χρησιμοποιούν οδηγούς τάξης είτε τους δικούς τους προσαρμοσμένους οδηγούς. Αυτό περιλαμβάνει πολλά βοηθητικά προγράμματα MIDI που βασίζονται σε λογισμικό που εφαρμόζονται ως οδηγοί στα Windows 10.
Νέα υποστήριξη Bluetooth Le MIDI στο UWP MIDI
Εκτός από την υποστήριξη πολλαπλών συνθηκών και τις βελτιώσεις εμείς’Έκανα σε απόδοση και σταθερότητα, ένας καλός λόγος για τη χρήση του API MIDI των Windows 10 UWP είναι λόγω της υποστήριξής του για νέα πρότυπα και μεταφορές.
Η Microsoft συμμετέχει ενεργά στη διαδικασία προτύπων MIDI και έχει εκπροσώπους στις ομάδες εργασίας. Υπάρχουν αρκετοί από εμάς στο εσωτερικό της Microsoft που συμμετέχουν απευθείας στη δημιουργία, την εξέταση και την ψηφοφορία των προτύπων για το MIDI και για τον ήχο γενικά.
Ένα συναρπαστικό και σχετικά νέο πρότυπο MIDI που έχει κερδίσει γρήγορα δημοτικότητα είναι το Bluetooth Le Midi. Η Microsoft ψήφισε να επικυρώσει το πρότυπο βάσει του πρωτοποριακού έργου που έκανε η Apple σε αυτό το χώρο. Ως αποτέλεσμα, η Apple, η Microsoft και άλλοι είναι συμβατά με ένα πρότυπο που βλέπει πραγματική έλξη στην κοινότητα των μουσικών και έχει ήδη μια σειρά συμβατών περιφερειακών.
Στην έκδοση των Windows 10 επετείου, εμείς’Η VE περιλαμβάνει υποστήριξη στο box για το Bluetooth Le Midi για οποιαδήποτε εφαρμογή χρησιμοποιώντας το API MIDI των Windows 10 UWP MIDI.
Στην έκδοση των Windows 10 επετείου, εμείς’Η VE περιλαμβάνει υποστήριξη στο box για το Bluetooth Le Midi για οποιαδήποτε εφαρμογή χρησιμοποιώντας το API MIDI των Windows 10 UWP MIDI. Αυτή είναι μια προσθήκη που δεν απαιτεί αλλαγές στον κωδικό σας, καθώς η ίδια η διεπαφή είναι απλά μια άλλη διαφανής μεταφορά που εμφανίζεται από το API MIDI.
Αυτός ο τύπος διασύνδεσης MIDI χρησιμοποιεί το ραδιόφωνο Bluetooth ήδη στον υπολογιστή σας, το τηλέφωνο, τη συσκευή IoT ή άλλη συσκευή Windows 10 για να μιλήσετε με περιφερειακά Bluetooth MIDI, όπως πληκτρολόγια, πεντάλ και ελεγκτές. Επί του παρόντος ο ίδιος ο υπολογιστής μπορεί’να είναι περιφερειακό, αλλά εμείς’το κοιτάζω για το μέλλον. Παρόλο που υπάρχουν μερικά μεγάλα din midi έως bluetooth le midi και παρόμοιοι προσαρμογείς εκεί έξω, δεν απαιτείται πρόσθετο υλικό για το Bluetooth le MIDI στα Windows 10, εφόσον ο υπολογιστής σας διαθέτει ραδιόφωνο με δυνατότητα Bluetooth Le.
Γνωρίζουμε ότι η καθυστέρηση είναι σημαντική για τους μουσικούς, οπότε βεβαιώσαμε ότι η εφαρμογή μας είναι ανταγωνιστική με άλλες πλατφόρμες. Φυσικά, το Bluetooth έχει υψηλότερη λανθάνουσα κατάσταση από μια ενσύρματη σύνδεση USB, αλλά αυτό το εμπόριο μπορεί να αξίζει τον κόπο για την εξάλειψη της ακαταστασίας καλωδίων.
Όταν συνδυάζεται, το Bluetooth Le Midi Peripheral θα εμφανιστεί ως συσκευή MIDI στον εξερευνητή της συσκευής και θα συμπεριληφθεί αυτόματα στην απαρίθμηση της συσκευής UWP MIDI. Αυτό είναι εντελώς διαφανές στην αίτησή σας.
Για περισσότερες πληροφορίες σχετικά με τον τρόπο ανακάλυψης και ζευγών συσκευών, συμπεριλαμβανομένων των συσκευών Bluetooth Le MIDI, ανατρέξτε στο παράδειγμα απαρίθμησης και αντιστοίχισης συσκευής στο GitHub.
Προσθέσαμε αυτήν την ικανότητα στην έκδοση των Windows 10 Anniversary ως άμεσο αποτέλεσμα των ανατροφοδότησης συνεργατών και πελατών. Εγώ’m πραγματικά ενθουσιασμένος για το Bluetooth Le Midi στα Windows 10 και τις συσκευές που μπορούν τώρα να χρησιμοποιηθούν στα Windows 10.
Υποστήριξη εφαρμογών επιφάνειας εργασίας για το UWP MIDI API
Γνωρίζουμε ότι η πλειοψηφία των μουσικών χρησιμοποιεί το Desktop Win32 Daws και τα βοηθητικά προγράμματα κατά τη δημιουργία μουσικής. Το UWP MIDI API είναι προσβάσιμο σε εφαρμογές επιφάνειας εργασίας, αλλά γνωρίζουμε ότι η πρόσβαση στα API UWP από διαφορετικές γλώσσες και τα περιβάλλοντα κατασκευής μπορεί να είναι προκλητική.
Για να βοηθήσουν τους προγραμματιστές εφαρμογών επιφάνειας εργασίας με το νέο API και να μειώσουν την τριβή, ο συνάδελφός μου Dale Stammen στην ομάδα WDG/PAX Spark έβαλε μαζί ένα Win32 Wrapper για το API Windows 10 UWP MIDI.
Το έργο που κάνει η ομάδα μας, συμπεριλαμβανομένου αυτού του περιτυλίγματος API, είναι ως επί το πλείστον με συνεργασία. Αυτό σημαίνει ότι ως αποτέλεσμα των αιτήσεων και των σχολίων, δημιουργούμε πράγματα που επιτρέπουν στους εταίρους να είναι επιτυχείς στα Windows. Ένας από τους συνεργάτες με τους οποίους συνεργαστήκαμε όταν δημιουργούμε αυτό είναι το Cakewalk, κατασκευαστές της δημοφιλούς εφαρμογής DAW DAW DAW Sonar Desktop.
Αυτό ήταν που οι προγραμματιστές τους είχαν να πουν για το Win32 Wrapper για το API MIDI UWP και την υποστήριξή μας για το Bluetooth Le Midi:
“Εμείς’Επέστρεψα να δούμε τη Microsoft να υποστηρίζει το Bluetooth MIDI spec και να την εκθέσει στους προγραμματιστές των Windows μέσω ενός απλοποιημένου API. Χρησιμοποιώντας το νέο περιτύλιγμα Win32 για το API MIDI UWP, μπορέσαμε να υποστηρίξουμε πολύ γρήγορα το πρωτότυπο Bluetooth MIDI. Στο Cakewalk εμείς’Εξετάζοντας μπροστά για να υποστηρίξετε ασύρματα περιφερειακά, οπότε αυτή είναι μια πολύ ευπρόσδεκτη προσθήκη από τη Microsoft.”
Noel Borthwick, CTO, Cakewalk
Μας αρέσει να δουλεύουμε με μεγάλους συνεργάτες όπως το Cakewalk, γνωρίζοντας ότι το αποτέλεσμα θα ωφελήσει άμεσα τους αμοιβαίους πελάτες μας.
Αυτό το wrapper win32 καθιστά απλό στη χρήση του API όπως και κάθε επίπεδη Win32 API. Επικεφαλεί όλες τις δυνατότητες του API των Windows 10 UWP MIDI και αφαιρεί την απαίτηση για την εφαρμογή σας Win32 να είναι UWP-Aware. Επιπλέον, εκεί’Δεν υπάρχει απαίτηση να χρησιμοποιήσετε C ++/CX ή να αλλάξετε με άλλο τρόπο τα εργαλεία και τις διαδικασίες δημιουργίας σας. Εδώ’S Παράδειγμα εφαρμογής κονσόλας C ++ Win32:
// Ανοίξτε τη θύρα MIDI OUT 0
αποτέλεσμα = gmidioutportopenfunc (midiptr, 0, & gmidioutport);
αν (αποτέλεσμα != Winrt_no_error)
Cout Goto Cleanup?
>
// Στείλτε μια σημείωση στο μήνυμα στη θύρα MIDI OUT
μη υπογεγραμμένο buffer char [3] = < 144, 60 , 127 >;
cout gmidioutportsendfunc (gmidioutport, buffer, 3);
// Αποστολή μηνύματος σημείωσης στη θύρα MIDI Out
buffer cout [0] = 128;
gmidioutportsendfunc (gmidioutport, buffer, 3);
Αυτό το API είναι βελτιστοποιημένο για τη συνεργασία με τις υπάρχουσες εφαρμογές Win32, οπότε παραιτούμε να πληκτρολογούμε έντονα μηνύματα MIDI και να δουλεύουμε αντ ‘αυτού με συστοιχίες byte, όπως οι προγραμματιστές εφαρμογών Win32 Music χρησιμοποιούνται.
Εμείς’να λαμβάνετε ακόμα σχόλια από συνεργάτες και προγραμματιστές στο περιτύλιγμα API και θα αγαπούσα τη δική σας. Μπορείτε να βρείτε τον πηγαίο κώδικα στο GitHub. Μπορούμε να αλλάξουμε την τοποθεσία αργότερα, οπότε το AKA.Σύνδεσμος MS (http: // aka.MS/Win10midiwin32) είναι αυτή που θέλετε να διατηρήσετε βολικό.
Για τους προγραμματιστές που χρησιμοποιούν πρόσφατες εκδόσεις του Visual Studio, εμείς’Διατίθεται επίσης ένα εύχρηστο πακέτο Nuget.
Εμείς’Εργαστείτε ήδη με τους συνεργάτες εφαρμογών της επιφάνειας εργασίας για να ενσωματώσετε στις εφαρμογές τους αυτό το API χρησιμοποιώντας αυτό το περιτύλιγμα, καθώς και άλλες βελτιώσεις εμπειρίας ήχου και χρήστη στα Windows 10. Εάν έχετε μια εφαρμογή επιφάνειας εργασίας που στοχεύει στους μουσικούς και έχετε ερωτήσεις, επικοινωνήστε μαζί μου στο @Pete_Brown στο Twitter ή στο Pete Dot Brown στο Microsoft Dot Com.
Βιβλιοθήκες βοηθητικού MIDI για εφαρμογές Windows Store
Εκτός από το περιτύλιγμα Win32 API, έχουμε επίσης μερικές μικρότερες βιβλιοθήκες βοηθητικών για τους προγραμματιστές εφαρμογών καταστημάτων και τους χρήστες PowerShell.
Το πρώτο είναι το Windows 10 UWP MIDI API βοηθός, για τις εφαρμογές C#, VB και C ++ Windows Store. Αυτό έχει σχεδιαστεί για να διευκολύνει την απαρίθμηση των συσκευών MIDI, δεσμεύει τα αποτελέσματα σε XAML και ανταποκρίνεται σε τυχόν καυτές αλλαγές βύσματος/αποσύνδεσης. Το’S Διατίθεται τόσο ως πηγή όσο και ως πακέτο Nuget Compiled Nuget.
Περιλαμβάνει μια κλάση Watcher με φιλικές προς το XAML συλλογές / παρατηρήσιμες συλλογές για τις περιπτώσεις πληροφοριών της συσκευής.
Τα μηνύματα RPN και NRPN
Επιπλέον, η Βιβλιοθήκη Βοηθού Περιέχει κώδικα για να βοηθήσει με τα μηνύματα RPN (Εγγεγραμμένος αριθμός παραμέτρων) και NRPN (μη εγγεγραμμένος αριθμός παραμέτρων). Αυτά μπορεί να είναι πιο δύσκολο για τους νέους προγραμματιστές να συνεργαστούν επειδή είναι λογικά μηνύματα που αποτελούνται από διάφορα διαφορετικά μηνύματα που συγκεντρώνονται μαζί, αποστέλλονται διαδοχικά.
Επειδή εκθέσαμε τα παράθυρα.συσκευές.MIDI.Διεπαφή Imidimessage στο UWP και ο υποκείμενος κωδικός εξόδου MIDI στέλνει ό, τι υπάρχει στο buffer, δημιουργώντας έντονα δακτυλογραφημένα κλάματα μηνυμάτων ήταν αρκετά εύκολο. Κατά την αποστολή μηνυμάτων, χρησιμοποιείτε αυτές τις κατηγορίες όπως και κάθε άλλη έντονα δακτυλογραφημένη MIDI μήνυμα.
Εγώ’m Διερεύνηση της ενσωμάτωσης υποστήριξης για το προτεινόμενο MPE (πολυδιάστατη πολυφωνική έκφραση), καθώς και για την ανάλυση και τη συγκέντρωση των εισερχόμενων μηνυμάτων RPN και NRPN. Εάν αυτά τα χαρακτηριστικά θα ήταν χρήσιμα για εσάς στις δικές σας εφαρμογές, επικοινωνήστε μαζί μου και ενημερώστε με.
Γεννήτρια ρολογιού MIDI
Ένα άλλο κομμάτι που περιλαμβάνει η βιβλιοθήκη είναι μια γεννήτρια ρολογιού MIDI. Εάν χρειάζεστε μια γεννήτρια ρολογιού MIDI (όχι για βρόχο ελέγχου sequencer, αλλά μόνο για να παράγετε εξερχόμενα μηνύματα ρολογιού), η βιβλιοθήκη περιέχει μια εφαρμογή που θα βρείτε χρήσιμη. Εδώ’S πώς το χρησιμοποιείτε από το C#:
ιδιωτικό midicLockGenerator _clock = νέο midicLockGenerator ();
…
_ρολόι.SendmidistartMessage = true;
_ρολόι.SendmidistopMessage = true;
foreach (πληροφορίες σχετικά με τη συσκευή στο DeviceWatcher.OutputportDescriptors)
VAR PORT = (MIDIOUTPORT) Περιμένετε midioutport.FromIdasync (πληροφορίες.Ταυτότητα);
αν (λιμάνι != null)
_ρολόι.Outputports.Προσθήκη (θύρα);
>
δημόσιο κενό startclock ()
_ρολόι.Αρχή();
>
δημόσιο κενό stopclock ()
_ρολόι.Να σταματήσει();
>
Το github repo μου περιλαμβάνει την πηγή C ++/CX και μια εφαρμογή πελάτη C#/XAML. Ως άκρη: αυτό ήταν το πρώτο μου έργο C ++/CX. Παρόλο που εξακολουθώ να βρίσκω C# ευκολότερο για τις περισσότερες εργασίες, βρήκα C ++ CX εδώ αρκετά προσιτή. Αν εσύ’Re a C# προγραμματιστής που έχει σκεφτεί να χρησιμοποιήσει C ++ CX, δώστε του μια στροβιλισμού. Μπορεί να το βρείτε πιο οικείο από ό, τι περιμένετε!
Αυτή η βιβλιοθήκη θα βοηθήσει τους προγραμματιστές να ακολουθήσουν τις βέλτιστες πρακτικές για εφαρμογές MIDI στο Windows Store. Όπως και με τις εφαρμογές επιφάνειας εργασίας, αν εσείς’Δημιουργία μιας εφαρμογής που επικεντρώνεται στη μουσική εδώ και έχετε ερωτήσεις, επικοινωνήστε μαζί μου στο @Pete_Brown στο Twitter, ή Pete Dot Brown στο Microsoft Dot Com.
Η δεύτερη βιβλιοθήκη βοηθού είναι ένα σύνολο εντολών PowerShell για τη χρήση του Windows 10 UWP MIDI API. Εγώ’μίλησε με άτομα που χρησιμοποιούν αυτό για να αυτοματοποιήσουν το scripting των ενημερώσεων MIDI για να συγχρονίσουν διάφορους αναμίκτες σε μια μεγάλη εγκατάσταση και άλλα που το χρησιμοποιούν ως ως “κόλλα” για τη μετάφραση μηνυμάτων μεταξύ διαφορετικών συσκευών. Εκεί’είναι πολλά που μπορείτε να κάνετε με το PowerShell στα Windows 10, και τώρα το MIDI είναι μέρος αυτού. Το repo περιλαμβάνει παραδείγματα χρήσης, έτσι κέρδισα’να το επαναλάβω εδώ.
συμπέρασμα
Εγώ’M πραγματικά ενθουσιασμένος για το έργο που συνεχίζουμε να κάνουμε στο χώρο ήχου για να βοηθήσουμε τους μουσικούς και τους προγραμματιστές εφαρμογών μουσικής στα Windows.
Συνολικά, το API MIDI UWP, το WIN32 Wrapper για το API MIDI UWP και οι Βιβλιοθήκες Βιοτεχνών για τις εφαρμογές Windows Store και για το Scripting PowerShell επιτρέπουν στις εφαρμογές και τα scripts να επωφεληθούν από την τελευταία τεχνολογία MIDI στα Windows 10, συμπεριλαμβανομένων των Bluetooth MIDI.
Εγώ’M ανυπομονώ πραγματικά για τις επερχόμενες εφαρμογές Desktop και Windows Store που θα υποστηρίξουν αυτό το API και τεχνολογίες όπως το Bluetooth Le Midi. Και, όπως ανέφερα παραπάνω, επικοινωνήστε μαζί μου απευθείας αν εσείς’να δημιουργήσετε μια εφαρμογή που στοχεύει στο Pros. και να χρειαστεί καθοδήγηση ή να έχετε ερωτήσεις.
Πόροι
- Ξεκινήστε την ανάπτυξη εφαρμογών UWP
- συσκευές.Τεκμηρίωση του χώρου ονομάτων MIDI
- Επίσημο δείγμα API MIDI των Windows 10 UWP MIDI
- Github repo για το WIN32 MIDI Wrapper
- Πιτ’s github repos με έργα MIDI και ήχου
- Πακέτο Nuget για το WIN32 MIDI Wrapper
- Pete Brown Summer Namm 2015 Keynote για τα Windows 10
- Η ένωση MIDI
- Ένα στούντιο στην παλάμη του χεριού σας: Ανάπτυξη εφαρμογών δημιουργίας ήχου και βίντεο για τα Windows 10
- Χωρικός ήχος με ακουστικό στο UWP
- Χωρικός ήχος σε εφαρμογές και παιχνίδια UWP
Κατεβάστε το Visual Studio για να ξεκινήσετε.
Η ομάδα των Windows θα ήθελε να ακούσει τα σχόλιά σας. Διατηρήστε τα σχόλια που έρχονται χρησιμοποιώντας τον ιστότοπο Uservoice Windows Developer Uservoice. Εάν έχετε ένα άμεσο σφάλμα, χρησιμοποιήστε το εργαλείο ανατροφοδότησης των Windows που είναι ενσωματωμένο απευθείας στα Windows 10.
Το πρόγραμμα οδήγησης θύρας MIDI
Το πρόγραμμα οδήγησης θύρας MIDI διαχειρίζεται συνθέτη MIDI ή συσκευή λήψης. Ο οδηγός προσαρμογέα παρέχει ένα αντίστοιχο πρόγραμμα οδήγησης MIDI miniport που συνδέεται με το αντικείμενο του προγράμματος οδήγησης θύρας MIDI για να σχηματίσει ένα φίλτρο MIDI (βλ. Φίλτρα MIDI και DirectMusic) που μπορούν να συλλάβουν ή να κάνουν ένα ρεύμα MIDI.
Το πρόγραμμα οδήγησης θύρας MIDI εκθέτει μια διασύνδεση iportmidi στο πρόγραμμα οδήγησης miniport. Iportmidi κληρονομεί τις μεθόδους στη διεπαφή βάσης iport. Iportmidi Παρέχει τις ακόλουθες πρόσθετες μεθόδους:
Ειδοποιεί το πρόγραμμα οδήγησης θύρας ότι η συσκευή συνθέτη ή λήψης MIDI έχει προχωρήσει σε μια νέα θέση στο ρεύμα MIDI. Iportmidi :: RegisterServiceGroup
Καταγράφει ένα αντικείμενο ομάδας υπηρεσιών με το πρόγραμμα οδήγησης θύρας. Μια ομάδα υπηρεσιών περιέχει μια λίστα με μία ή περισσότερες ρουτίνες υπηρεσιών που πρόκειται να καλούνται όταν οι κλήσεις του οδηγού Miniport Κοινοποιώ; Για περισσότερες πληροφορίες, ανατρέξτε στα αντικείμενα της ομάδας νεροχύτη υπηρεσιών και υπηρεσιών.
Τα αντικείμενα του MIDI Port και Miniport, επικοινωνούν μεταξύ τους μέσω του αντίστοιχου Iportmidi και διεπαφές iminiportmidi. Ο οδηγός Miniport χρησιμοποιεί το πρόγραμμα οδήγησης θύρας Iportmidi διασύνδεση για να ειδοποιήσετε το πρόγραμμα οδήγησης θύρας των διακοπών υλικού. Επιπλέον, ο οδηγός θύρας επικοινωνεί με το ρεύμα του οδηγού Miniport μέσω των διεπαφών iminiportmidistream τους.
Στα Windows XP και αργότερα, το Iportmidi και οι διεπαφές iportdmus εφαρμόζονται και οι δύο σε μία μόνο εσωτερική μονάδα οδηγού. Αυτή η ενοποίηση διευκολύνεται από την ομοιότητα αυτών των δύο διεπαφών. Για παράδειγμα, ορίζονται οι ίδιες μέθοδοι και για τις δύο διεπαφές. Οι εφαρμογές γραμμένες για προηγούμενες εκδόσεις των Windows δεν πρέπει να βλέπουν καμία αλλαγή στη συμπεριφορά του Iportmidi και Iportdmus διεπαφές που προκύπτουν από την ενοποίηση των οδηγών θύρας MIDI και DMUS.
Ανατροφοδότηση
Υποβάλετε και προβάλετε σχόλια για
Βελτιώσεις MIDI στα Windows 10
Πρόσφατα ο Pete Brown από τη Microsoft δημοσίευσε μια πολύ ενημερωτική ανάρτηση ιστολογίου σχετικά με τις βελτιώσεις MIDI στα Windows 10.
Η ανάρτηση ιστολογίου καλύπτει μια σειρά θεμάτων
- Βασικά στοιχεία UWP MIDI – Χρησιμοποιώντας το MIDI στις εφαρμογές Windows Store
- Νέα υποστήριξη Bluetooth Le MIDI στην ενημέρωση των Windows 10 επετείου
- Το Win32 Wrapper για UWP MIDI (καθιστώντας το API προσβάσιμο σε εφαρμογές επιφάνειας εργασίας)
- Βιβλιοθήκες βοηθητικού MIDI για C# και PowerShell
Βελτιώσεις MIDI στα Windows 10 | Δημιουργία εφαρμογών για Windows
“Είμαστε στην ευχάριστη θέση να δούμε τη Microsoft να υποστηρίζει το Bluetooth MIDI spec και να την εκθέσει στους προγραμματιστές των Windows μέσω ενός απλοποιημένου API. Χρησιμοποιώντας το νέο περιτύλιγμα Win32 για το API MIDI UWP, μπορέσαμε να υποστηρίξουμε πολύ γρήγορα το πρωτότυπο Bluetooth MIDI. Στο Cakewalk κοιτάζουμε μπροστά για να υποστηρίξουμε τα ασύρματα περιφερειακά, γι ‘αυτό είναι μια πολύ ευπρόσδεκτη προσθήκη από τη Microsoft.«
από τον Noel Borthwick, CTO, Cakewalk
Υπάρχει επίσης μια ωραία εξήγηση στο άρθρο του Pete σχετικά με το πώς λειτουργούν τα RPN και τα NRPNs και η δομή των δεδομένων τους.
Με την απελευθέρωση των Windows 10, και οι τρεις από τις μεγάλες εταιρείες λειτουργικού συστήματος (Apple, Google και Microsoft) έχουν αναπτύξει την υποστήριξη για το πρότυπο MIDI Manufacturers Association για το MIDI σε χαμηλή ενέργεια Bluetooth που μπορεί να βρεθεί στην ενότητα Specs αυτού του ιστότοπου και είναι διαθέσιμο για λήψη από τα μέλη της ένωσης MIDI χωρίς χρέωση.