האם ל- Windows 10 יש MIDI
מנהלי התקנים של Windows 10 MIDI: כיצד להתקין אותם בכמה שלבים
צוות Windows ישמח לשמוע את המשוב שלך. אנא שמור על המשוב מגיע באמצעות אתר המפתח של Windows uservoice שלנו. אם יש לך באג ישיר, אנא השתמש בכלי המשוב של Windows המובנה ישירות ב- Windows 10.
MIDI
מאמר זה מראה לך כיצד למנות מכשירי MIDI (ממשק דיגיטלי של כלי נגינה) ולשלוח ולקבל הודעות MIDI מאפליקציית Windows Universal Windows. Windows 10 תומך ב- MIDI מעל USB (מנהלי התקנים תואמים וכיתות קנייניות ביותר), MIDI מעל Bluetooth LE (מהדורת יום השנה של Windows 10 ובהמשך), ובאמצעות מוצרי צד שלישי הזמינים בחופשיות, MIDI על Ethernet והנותב את MIDI.
למנות מכשירי MIDI
לפני שמנת ומשתמש במכשירי MIDI, הוסף את מרחבי השמות הבאים לפרויקט שלך.
באמצעות Windows.מכשירים.ספירה;
באמצעות Windows.מכשירים.MIDI;
באמצעות מערכת.הַשׁחָלָה.משימות;
הוסף קופסת רשימה שליטה לדף ה- XAML שלך שיאפשר למשתמש לבחור אחד ממכשירי הקלט MIDI המצורפים למערכת. הוסף עוד אחד לרשימת מכשירי הפלט של MIDI.
ה FindAllasync שיטה Information Device הכיתה משמשת כדי למנות סוגים רבים ושונים של מכשירים המוכרים על ידי Windows. כדי לציין שאתה רוצה רק שהשיטה תמצא התקני קלט MIDI, השתמש במחרוזת הבורר שהוחזרה על ידי Midiinport.GetDevicesElector. FindAllasync חוזר א DeviceInformationCollection שמכיל א Information Device עבור כל התקן קלט MIDI הרשום במערכת. אם האוסף שהוחזר אינו מכיל פריטים, אין מכשירי קלט MIDI זמינים. אם יש פריטים באוסף, לולאה דרך Information Device אובייקטים והוסף את השם של כל מכשיר למכשיר הקלט MIDI קופסת רשימה.
משימת אסינכר פרטית enumeratemidiinputdevices ()
{
// מצא את כל מכשירי MIDI קלט
מחרוזת midiinputquerystring = midiinport.GetDevicesElector ();
Deviceinformationcollect.FindAllasync (MidiinputQueryString);
midiinportlistbox.פריטים.ברור();
// חזור אם לא מחוברים מכשירים חיצוניים
אם (midiinputdevices.ספירה == 0)
{
זֶה.midiinportlistbox.פריטים.הוסף ("אין מכשירי קלט MIDI!");
זֶה.midiinportlistbox.ISenabled = false;
לַחֲזוֹר;
}
// אחרת, הוסף כל התקן קלט מחובר לרשימה
foreach (Deviceinformation deviceinfo ב- midiinputdevices)
{
זֶה.midiinportlistbox.פריטים.הוסף (DeviceInfo.שֵׁם);
}
זֶה.midiinportlistbox.Isenabled = true;
}
מינון התקני פלט MIDI פועל בדיוק באותו אופן כמו למנות התקני קלט, פרט לכך שעליך לציין את מחרוזת הבורר שהוחזרה על ידי Midioutport.GetDevicesElector בעת מתקשר FindAllasync.
משימת אסינכר פרטית enumeratemidioutputdevices ()
{
// מצא את כל מכשירי ה- MIDI הפלטים
מחרוזת midioutportquerystring = midioutport.GetDevicesElector ();
DeviceNonformationCollect.FindAllasync (midioutportquerystring);
midioutportlistbox.פריטים.ברור();
// חזור אם לא מחוברים מכשירים חיצוניים
אם (midioutputdevices.ספירה == 0)
{
זֶה.midioutportlistbox.פריטים.הוסף ("אין מכשירי פלט MIDI!");
זֶה.midioutportlistbox.ISenabled = false;
לַחֲזוֹר;
}
// אחרת, הוסף כל התקן קלט מחובר לרשימה
foreach (Deviceinformation deviceinfo ב- midioutputdevices)
{
זֶה.midioutportlistbox.פריטים.הוסף (DeviceInfo.שֵׁם);
}
זֶה.midioutportlistbox.Isenabled = true;
}
צור מחלקת עוזר של צופה במכשירים
ה חלונות.מכשירים.ספירה מרחב השמות מספק את Devicewatcher מה שיכול להודיע לאפליקציה שלך אם מתווספים או מוסרים מכשירים מהמערכת, או אם המידע עבור מכשיר מתעדכן. מכיוון שאפליקציות מאפשרות midi בדרך כלל מעוניינות במכשירי קלט וגם בפלט, דוגמה זו יוצרת מחלקת עוזרים שמיישמת את Devicewatcher דפוס, כך שניתן להשתמש באותו קוד הן עבור מכשירי קלט MIDI והן למכשירי פלט MIDI, ללא צורך בשכפול.
הוסף כיתה חדשה לפרויקט שלך כדי לשמש כצופה המכשירים שלך. בדוגמה זו, הכיתה נקראת Mymididevicewatcher. שאר הקוד בסעיף זה משמש ליישום מחלקת העוזרים.
הוסף כמה משתני חברים לשיעור:
- א Devicewatcher אובייקט שיפקח על שינויי מכשירים.
- מחרוזת בורר מכשירים שתכיל את ה- MIDI במחרוזת בורר יציאה למופע אחד ואת מחרוזת בורר יציאת MIDI למופע אחר.
- א קופסת רשימה בקרה שתאוכלס בשמות המכשירים הזמינים.
- א Coredispatcher זה נדרש לעדכן את ממשק המשתמש מחוט שאינו חוט ממשק המשתמש.
Devicewatcher devicewatcher;
String DevicesElectorString;
ListBox DevicelistBox;
Coredispatcher Coredispatcher;
הוסף DeviceInformationCollection מאפיין המשמש לגישה לרשימת המכשירים הנוכחית מחוץ למחלקת העוזרים.
התקן ציבורי PermanperationCollection DeviceInformationCollection {get; סט פרטי; }
בבנאי הכיתה, המתקשר עובר במחרוזת בורר המכשירים MIDI, קופסת רשימה לרישום המכשירים, ו- המוקדן צריך לעדכן את ממשק המשתמש.
שִׂיחָה Information Device.CreateWatcher ליצירת מופע חדש של Devicewatcher כיתה, עוברת במחרוזת בורר המכשירים MIDI.
רשמו מטפלים למטפלי האירועים של הצופה.
mymididevicewatcher ציבורי (מחרוזת midideviceselectorstring, ListBox mididevicelistbox, Coredispatcher Dispatcher) { DevicesElectorString = midideviceselectorstring; devicelistbox = mididevicelistbox; CoreSispatcher = משלוח; DeviceWatcher = Information Device.CreateWatcher (DevicesElectorString); Devicewatcher.נוסף += devicewatcher_added; Devicewatcher.הוסרה += devicewatcher_emoke; Devicewatcher.עודכן += devicewatcher_updated; Devicewatcher.EnumerationCompleted += devicewatcher_enumerationCompleted; }
שאלה 1: כיצד אוכל למנות מכשירי קלט MIDI באפליקציית Windows אוניברסלית?
אתה יכול למנות מכשירי קלט MIDI באפליקציית Windows אוניברסלית באמצעות FindAllasync שיטה של Information Device מעמד. כדי לציין שרק תרצה למצוא התקני קלט MIDI, השתמש במחרוזת הבורר שהוחזרה על ידי Midiinport.GetDevicesElector. לולאה דרך Information Device חפצים ב DeviceInformationCollection והוסף את השם של כל מכשיר לבקרת תיבת רשימה.
שאלה 2: כיצד אוכל למנות התקני פלט MIDI באפליקציית Windows אוניברסלית?
אתה יכול למנות התקני פלט MIDI באפליקציית Windows אוניברסלית על ידי שימוש באותה שיטה כמו ספירת התקני קלט. פשוט השתמש במחרוזת הבורר שהוחזרה על ידי Midioutport.GetDevicesElector במקום זאת בעת מתקשר FindAllasync.
שאלה 3: כיצד אוכל ליצור מחלקת עוזר של צופה בהתקנים באפליקציית Windows אוניברסלית?
אתה יכול ליצור מחלקת עוזר של צופה בהתקנים באפליקציית Windows אוניברסלית על ידי יישום ה- Devicewatcher דפוס מה- חלונות.מכשירים.ספירה מרחב שמות. זה מאפש. ניתן להשתמש בכיתת העוזרים הן למכשירי קלט MIDI והן למכשירי פלט ללא כפילות של קוד.
שאלה 4: כיצד אוכל להשתמש בבקרת רשימה כדי לרשום מכשירי קלט MIDI באפליקציית Windows אוניברסלית?
באפליקציית Windows Universal, באפשרותך להשתמש בבקרת רשימת תיבת רשימה כדי לרשום התקני קלט MIDI. הוסף בקרת תיבת רשימה לדף ה- XAML שלך ואכלס אותה עם שמות התקני הקלט MIDI על ידי לולאה דרך Information Device חפצים ב DeviceInformationCollection הושג מ FindAllasync.
שאלה 5: כיצד אוכל להשתמש בבקרת רשימה כדי לרשום התקני פלט MIDI באפליקציית Windows אוניברסלית?
השימוש בבקרת רשימת תיבות כדי לרשום התקני פלט MIDI באפליקציית Windows אוניברסלית דומה לרישום התקני קלט. פשוט להשיג את DeviceInformationCollection למכשירי פלט המשתמשים FindAllasync ולולאה דרך Information Device אובייקטים לאכלוס את בקרת ה- ListBox.
שאלה 6: כיצד אוכל לעדכן את ממשק המשתמש מחוט שאינו חוט ממשק המשתמש באפליקציית Windows אוניברסלית?
אתה יכול לעדכן את ממשק המשתמש משרשור שאינו חוט ממשק המשתמש באפליקציית Windows אוניברסלית באמצעות Coredispatcher מעמד. העבירו את מופע Coredispatcher לשיעור העוזר של המכשיר צופה והשתמשו בו Runasync שיטה לביצוע קוד בשרשור ממשק המשתמש.
שאלה 7: כיצד אוכל לפקח על שינויי מכשירים באפליקציית Windows אוניברסלית?
באפליקציית Windows Universal, באפשרותך לפקח על שינויי מכשירים באמצעות Devicewatcher מעמד. לרשום מטפלי אירועים עבור נוסף, הוסר, מְעוּדכָּן, וכן ספירה מושלמת אירועים של צופה המכשירים שיש להודיע להם בעת הוספת מכשירים, מוסרים, מעודכנים או לאחר השלמת פעולת הספירה.
שאלה 8: כיצד אוכל לטפל באירוע כאשר מתווסף מכשיר MIDI חדש באפליקציית Windows אוניברסלית?
אתה יכול לטפל באירוע כאשר מתווסף מכשיר MIDI חדש באפליקציית Windows אוניברסלית על ידי הרשמה ל נוסף אירוע צופה המכשירים. במטפל באירוע, תוכלו לעדכן את ממשק המשתמש כדי לשקף את המכשיר החדש.
שאלה 9: כיצד אוכל לטפל באירוע כאשר מוסר מכשיר MIDI באפליקציית Windows אוניברסלית?
כדי לטפל באירוע כאשר מכשיר MIDI מוסר באפליקציית Windows אוניברסלית, הירשם ל הוסר אירוע צופה המכשירים. במטפל באירוע, אתה יכול לעדכן את ממשק המשתמש כדי להסיר את המכשיר מהרשימה.
שאלה 10: כיצד אוכל לטפל באירוע כאשר המידע עבור מכשיר MIDI מתעדכן באפליקציית Windows Universal Windows?
באפליקציית Windows Universal, באפשרותך לטפל באירוע כאשר המידע עבור מכשיר MIDI מתעדכן על ידי הרשמה ל מְעוּדכָּן אירוע צופה המכשירים. במטפל באירוע, אתה יכול לעדכן את ממשק המשתמש כדי לשקף את המידע המעודכן של המכשיר.
שאלה 11: כיצד אוכל לקבוע אם אין מכשירי קלט MIDI זמינים באפליקציית Windows אוניברסלית?
באפליקציית Windows אוניברסלית, באפשרותך לקבוע אם אין התקני קלט MIDI זמינים על ידי בדיקת הספירה של DeviceInformationCollection הושג מ FindAllasync. אם הספירה היא 0, פירוש הדבר שאין מכשירי קלט MIDI זמינים.
שאלה 12: כיצד אוכל לקבוע אם אין מכשירי פלט MIDI זמינים באפליקציית Windows אוניברסלית?
באפליקציית Windows אוניברסלית, באפשרותך לקבוע אם אין התקני פלט MIDI זמינים על ידי בדיקת הספירה של DeviceInformationCollection הושג מ FindAllasync. אם הספירה היא 0, זה אומר שאין התקני פלט MIDI זמינים.
שאלה 13: כיצד אוכל לטפל באירוע כאשר הספירה של מכשירי MIDI מסתיימת באפליקציית Windows אוניברסלית?
אתה יכול לטפל באירוע כאשר הספירה של מכשירי MIDI מסתיימת באפליקציית Windows אוניברסלית על ידי הרשמה ל ספירה מושלמת אירוע צופה המכשירים. במטפל באירוע, תוכלו לבצע כל פעולות הכרחיות לאחר השלמת הספירה.
שאלה 14: כיצד אוכל לבדוק אם מכשיר MIDI ספציפי הוא מכשיר קלט או התקן פלט באפליקציית Windows אוניברסלית?
באפליקציית Windows Universal, באפשרותך לבדוק אם התקן MIDI ספציפי הוא התקן קלט או התקן פלט באמצעות Information Device מאפייני האובייקט. מאפייני המכשיר מכילים מידע על סוג המכשיר, כגון האם מדובר במכשיר קלט או פלט.
שאלה 15: כיצד אוכל לגשת לרשימה הנוכחית של מכשירי MIDI מחוץ לשיעור העוזר של צופה המכשירים באפליקציית Windows אוניברסלית?
באפליקציית Windows Universal, באפשרותך לגשת לרשימה הנוכחית של מכשירי MIDI מחוץ למחלקת העוזרים של המכשיר באמצעות נכס באמצעות נכס. צור רכוש ציבורי מסוג DeviceInformationCollection בשיעור העוזר וקבע את ערכו בכל פעם שרשימת המכשירים מתעדכנת. לאחר מכן תוכל לגשת למאפיין זה מחלקים אחרים באפליקציה שלך כדי לקבל את הרשימה הנוכחית של מכשירי MIDI.
מנהלי התקנים של Windows 10 MIDI: כיצד להתקין אותם בכמה שלבים
צוות Windows ישמח לשמוע את המשוב שלך. אנא שמור על המשוב מגיע באמצעות אתר המפתח של Windows uservoice שלנו. אם יש לך באג ישיר, אנא השתמש בכלי המשוב של Windows המובנה ישירות ב- Windows 10.
MIDI
מאמר זה מראה לך כיצד למנות מכשירי MIDI (ממשק דיגיטלי של כלי נגינה) ולשלוח ולקבל הודעות MIDI מאפליקציית Windows Universal Windows. Windows 10 תומך ב- MIDI מעל USB (מנהלי התקנים תואמים וכיתות קנייניות ביותר), MIDI מעל Bluetooth LE (מהדורת יום השנה של Windows 10 ובהמשך), ובאמצעות מוצרי צד שלישי הזמינים בחופשיות, MIDI על Ethernet והנותב את MIDI.
למנות מכשירי MIDI
לפני שמנת ומשתמש במכשירי MIDI, הוסף את מרחבי השמות הבאים לפרויקט שלך.
באמצעות Windows.מכשירים.ספירה; באמצעות Windows.מכשירים.MIDI; באמצעות מערכת.הַשׁחָלָה.משימות;
הוסף קופסת רשימה שליטה לדף ה- XAML שלך שיאפשר למשתמש לבחור אחד ממכשירי הקלט MIDI המצורפים למערכת. הוסף עוד אחד לרשימת מכשירי הפלט של MIDI.
ה FindAllasync שיטה Information Device הכיתה משמשת כדי למנות סוגים רבים ושונים של מכשירים המוכרים על ידי Windows. כדי לציין שאתה רוצה רק שהשיטה תמצא התקני קלט MIDI, השתמש במחרוזת הבורר שהוחזרה על ידי Midiinport.GetDevicesElector. FindAllasync חוזר א DeviceInformationCollection שמכיל א Information Device עבור כל התקן קלט MIDI הרשום במערכת. אם האוסף שהוחזר אינו מכיל פריטים, אין מכשירי קלט MIDI זמינים. אם יש פריטים באוסף, לולאה דרך Information Device אובייקטים והוסף את השם של כל מכשיר למכשיר הקלט MIDI קופסת רשימה.
משימת אסינכר פרטית 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; >// אחרת, הוסף כל מכשיר קלט מחובר לרשימה foreach (Deviceinformation deviceinfo ב- midiinputdevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >זֶה.midiinportlistbox.Isenabled = true; >
מינון התקני פלט MIDI פועל בדיוק באותו אופן כמו למנות התקני קלט, פרט לכך שעליך לציין את מחרוזת הבורר שהוחזרה על ידי Midioutport.GetDevicesElector בעת מתקשר FindAllasync.
משימת אסינכר פרטית 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; >// אחרת, הוסף כל מכשיר קלט מחובר לרשימה foreach (DeviceNformation deviceinfo ב- midioutputdevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >זֶה.midioutportlistbox.Isenabled = true; >
צור מחלקת עוזר של צופה במכשירים
ה חלונות.מכשירים.ספירה מרחב השמות מספק את Devicewatcher מה שיכול להודיע לאפליקציה שלך אם מתווספים או מוסרים מכשירים מהמערכת, או אם המידע עבור מכשיר מתעדכן. מכיוון שאפליקציות מאפשרות midi בדרך כלל מעוניינות במכשירי קלט וגם בפלט, דוגמה זו יוצרת מחלקת עוזרים שמיישמת את Devicewatcher דפוס, כך שניתן להשתמש באותו קוד הן עבור מכשירי קלט MIDI והן למכשירי פלט MIDI, ללא צורך בשכפול.
הוסף כיתה חדשה לפרויקט שלך כדי לשמש כצופה המכשירים שלך. בדוגמה זו הכיתה נקראת Mymididevicewatcher. שאר הקוד בסעיף זה משמש ליישום מחלקת העוזרים.
הוסף כמה משתני חברים לשיעור:
- א Devicewatcher אובייקט שיפקח על שינויי מכשירים.
- מחרוזת בורר מכשירים שתכיל את ה- MIDI במחרוזת בורר יציאה למופע אחד ואת מחרוזת בורר יציאת MIDI למופע אחר.
- א קופסת רשימה בקרה שתאוכלס בשמות המכשירים הזמינים.
- א Coredispatcher זה נדרש לעדכן את ממשק המשתמש מחוט שאינו חוט ממשק המשתמש.
Devicewatcher devicewatcher; String DevicesElectorString; ListBox DevicelistBox; Coredispatcher Coredispatcher;
הוסף DeviceInformationCollection מאפיין המשמש לגישה לרשימת המכשירים הנוכחית מחוץ למחלקת העוזרים.
התקן ציבורי PermanperationCollection DeviceNformationCollection
בבנאי הכיתה, המתקשר עובר במחרוזת בורר המכשירים של MIDI, קופסת רשימה לרישום המכשירים, ו- המוקדן צריך לעדכן את ממשק המשתמש.
שִׂיחָה Information Device.CreateWatcher ליצירת מופע חדש של Devicewatcher כיתה, עוברת במחרוזת בורר המכשירים MIDI.
רשמו מטפלים למטפלי האירועים של הצופה.
mymididevicewatcher ציבורי (מחרוזת midideviceselectorstring, ListBox mididevicelistbox, Coredispatcher Dispatcher)
ה Devicewatcher יש את האירועים הבאים:
- נוסף – מוגבה כאשר מתווסף מכשיר חדש למערכת.
- הוסר – מוגבה כאשר מוסר מכשיר מהמערכת.
- מְעוּדכָּן – הועלה כאשר המידע המשויך למכשיר קיים מתעדכן.
- ספירה מושלמת – הועלה כאשר הצופה השלים את הספירה שלו בסוג המכשיר המבוקש.
במטפל באירועים לכל אחד מהאירועים הללו, שיטת עוזר, מעודכן, נקרא לעדכן את קופסת רשימה עם רשימת המכשירים הנוכחית. כי מעודכן עדכונים אלמנטים של ממשק משתמש ומטפלי האירועים הללו אינם נקראים על חוט ממשק המשתמש, כל שיחה חייבת להיות עטופה בשיחה Runasync, מה שגורם להפעלת הקוד שצוין בשרשור ממשק המשתמש.
async void void devicewatcher_removed (שולח DeviceWatcher, DeviceinformationUpdate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > פרטי async void devicewatcher_added (שולח DeviceWatcher, Argsinformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > פרטי async void devicewatcher_enumerationcompleted (שולח DeviceWatcher, אובייקט args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > פרטי async void devicewatcher_updated (שולח DeviceWatcher, DeviceNformationUpdate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >
ה מעודכן שיחות עוזרות שיחות Information Device.FindAllasync ומעדכן את קופסת רשימה עם שמות המכשירים שהוחזרו כמתואר לעיל במאמר זה.
async void void מעודכן () < // 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 deviceformation בזה.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >>
הוסף שיטות להפעלת הצופה, באמצעות Devicewatcher אובייקט הַתחָלָה שיטה, וכדי לעצור את הצופה, באמצעות תפסיק שיטה.
StartWatcher בטל ציבורי () < deviceWatcher.Start(); >StopWatcher בטל ציבורי ()
ספק הרס כדי לבטל את רושמת מטפלי האירוע.
~ Mymididevicewatcher ()
צור יציאות MIDI כדי לשלוח ולקבל הודעות
בקוד שמאחורי הדף שלך, הצהיר על משתני החברים כדי להחזיק שני מקרים של Mymididevicewatcher מחלקת עוזרים, אחת למכשירי קלט ואחד למכשירי פלט.
Mymididevicewatcher inputDeviceWatcher; Mymididevicewatcher outputDeviceWatcher;
צור מופע חדש של שיעורי העוזר של צופה, העברת מחרוזת בורר המכשירים, קופסת רשימה להיות מאוכלס, וה- Coredispatcher אובייקט שניתן לגשת אליו דרך הדף המוקדן תכונה. לאחר מכן, התקשר לשיטה כדי להתחיל של כל אובייקט Devicewatcher.
זמן קצר אחרי כל אחד Devicewatcher מתחיל, הוא יסיים למנות את המכשירים הנוכחיים המחוברים למערכת ויעלה את זה ספירה מושלמת אירוע, שיגרום לכל אחד קופסת רשימה להתעדכן במכשירי ה- MIDI הנוכחיים.
inputdevicewatcher = mymididevicewatcher חדש (midiinport.GetDevicesElector (), midiinportlistbox, מפוקח); inputDeviceWatcher.StartWatcher (); OutputDeviceWatcher = חדש mymididevicewatcher (midioutport.GetDevicesElector (), midioutportlistbox, מפוקח); OutputDeviceWatcher.StartWatcher ();
כאשר המשתמש בוחר פריט בקלט MIDI קופסת רשימה, ה בחירה מחויבת האירוע מוגדל. במטפל לאירוע זה, גש ל DeviceInformationCollection רכוש מחלקת העוזרים כדי לקבל את רשימת המכשירים הנוכחית. אם יש ערכים ברשימה, בחר Information Device אובייקט עם האינדקס המתאים ל קופסת רשימה שליטה SelectiNindex.
צור את Midiinport אובייקט המייצג את מכשיר הקלט שנבחר על ידי שיחה Midiinport.Fromidasync, עובר ב תְעוּדַת זֶהוּת מאפיין של המכשיר שנבחר.
לרשום מטפל ל הודעה התקבלה אירוע, המועלה בכל פעם שמתקבל הודעת MIDI דרך המכשיר שצוין.
Midiinport Midiinport; Imidioutport midioutport;
פרטי async void midiinportlistbox_selectionchanged (שולח אובייקטים, SelectedChangedEventArgs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >Information DevInfo = deviceNformationCollection [midiinportlistbox.Selectionindex]; אם (devinfo == null) < return; >midiinport = מחכה midiinport.Fromidasync (Devinfo.תְעוּדַת זֶהוּת); אם (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >Midiinport.MessagereCeive += midiinport_messagereceive; >
כאשר הודעה התקבלה מטפל נקרא, ההודעה כלולה ב הוֹדָעָה רכוש של Midimessageceeveneventargs. ה סוּג של אובייקט ההודעה הוא ערך מה- MidimessageType ספירה המציינת את סוג ההודעה שהתקבלה. נתוני ההודעה תלויים בסוג ההודעה. דוגמה זו בודקת אם ההודעה היא הערה בהודעה, ואם כן, מוציא את ערוץ ה- MIDI, הערה ומהירות ההודעה.
חלל פרטי midiinport_messagereceive (שולח midiinport, midimessegereceiveventargs 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 (שולח אובייקטים, SelectedChangedEventArgs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceNormation DevInfo = deviceinformationcollection [midioutportlistbox.Selectionindex]; אם (devinfo == null) < return; >midioutport = מחכה midioutport.Fromidasync (Devinfo.תְעוּדַת זֶהוּת); אם (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
לאחר יצירת מכשיר הפלט, אתה יכול לשלוח הודעה על ידי יצירת חדש Imidimessage עבור סוג ההודעה שאתה רוצה לשלוח. בדוגמה זו, ההודעה היא א NoteOnMessage. ה לשלוח הודעה שיטה של Imidioutport האובייקט נקרא לשלוח את ההודעה.
ערוץ בתים = 0; הערה בתים = 60; מהירות בתים = 127; Imidimessage midimessagetosend = midinoteonmessage חדש (ערוץ, הערה, מהירות); Midioutport.SendMessage (midimessagetosend);
כאשר האפליקציה שלך מבוטלת, הקפד לנקות את משאבי האפליקציות שלך. ביטול הרשמה של מטפלי האירועים שלך והגדר את ה- MIDI ביציאה ויציאה חפצי יציאה ל- NULL. עצור את שומרי ההתקנים והגדיר אותם ל- NULL.
inputDeviceWatcher.StopWatcher (); inputDeviceWatcher = null; OutputDeviceWatcher.StopWatcher (); outputDeviceWatcher = null; Midiinport.MessagereCeive -= midiinport_messagereceive; Midiinport.להיפטר (); midiinport = null; Midioutport.להיפטר (); midioutport = null;
בעזרת Windows Windows הכללי MIDI Synth
כשאתה מונה מכשירי MIDI פלט בטכניקה המתוארת לעיל, האפליקציה שלך תגלה מכשיר MIDI בשם “Microsoft GS Wavetable Synth”. זהו סינתיסייזר MIDI כללי מובנה שתוכלו לשחק מהאפליקציה שלכם. עם זאת, ניסיון ליצור מיצוי MIDI למכשיר זה ייכשל אלא אם כן כללת את סיומת SDK לסינתיס המובנה בפרויקט שלך.
לכלול את סיומת ה- SDK הכללית של MIDI SYNTH בפרויקט האפליקציות שלך
- ב סייר פתרונות, תחת הפרויקט שלך, לחץ באמצעות לחצן העכבר הימני על הפניות ובחר הוסף הפניה.
- הרחב את חלונות אוניברסליים צוֹמֶת.
- בחר הרחבות.
- מרשימת הרחבות, בחר מיקרוסופט MIDI DLS עבור אפליקציות Windows Universal.
הערה אם ישנן גרסאות מרובות של התוסף, הקפד לבחור את הגרסה התואמת את היעד לאפליקציה שלך. אתה יכול לראות באיזו גרסת SDK האפליקציה שלך מכוונת על יישום כרטיסיית מאפייני הפרויקט.
מנהלי התקנים של Windows 10 MIDI: כיצד להתקין אותם בכמה שלבים
כדי לתקן בעיות שונות במחשבים, אנו ממליצים על DriverFix: תוכנה זו תשאיר את הנהגים שלך פועלים, ובכך תשאיר אותך מפני שגיאות מחשב נפוצות וכישלון חומרה. בדוק את כל הנהגים שלך עכשיו בשלושה שלבים פשוטים:
- הורד DriverFix (קובץ הורדה מאומת).
- נְקִישָׁה התחל סריקה למצוא את כל הנהגים הבעייתיים.
- נְקִישָׁה עדכן מנהלי התקנים כדי לקבל גרסאות חדשות ולהימנע מתקלות במערכת.
- DriverFix הורד על ידי 0 קוראים החודש.
MIDI הוא המונח הטכני לממשק דיגיטלי של כלי נגינה, והוא מורכב ממכשיר המסוגל להתחבר לשלל מכשירים מוזיקליים.
נהגי MIDI נעשו במקור כדי לשלוט במקלדות ממחשב. נהגי MIDI התפתחו עם השנים ומשמשים כיום מיליוני משתמשי Windows 10 ברחבי כדור הארץ.
מקרה מסוים נוגע למנהלי התקנים של Windows 10 Bluetooth Midi מכיוון שנראה כי אלה הם עדינים עוד יותר ויכולים להיכשל בקלות על ידי Windows.
האם Windows 10 תומך ב- MIDI מעל Bluetooth?
זה כן, כן. פשוט פותח את הגדרות במחשב האישי שלך והלך ל מכשירים, לאחר מכן Bluetooth ומכשירים אחרים. כאן, בחר בלוטות וזווג את המכשיר שלך.
עם זאת, חלק מהמשתמשים דיווחו כי מכשיר ה- MIDI שלהם כבר לא זיהה בעקבות עדכון Windows. אם זה גם המקרה שלך, כאן’מה שאנחנו מציעים:
- מחק את כל מכשירי ה- MIDI המחוברים ונסה להתאים אותם שוב (כפי שמוצג לעיל)
- לחץ באמצעות לחצן העכבר הימני על סמל עוצמת הקול בשורת המשימות ובחר צלילים. אם מכשיר ה- MIDI שלך חסר, בחר הצג מכשירים מנותקים/מושכים ולראות אם זה עוזר.
כיצד אוכל להתקין מנהלי התקנים MIDI ב- Windows 10?
1. השתמש בפותר בעיות של Windows
- נווט אל שורת משימות תיבת חיפוש.
- סוּג פתרון בעיות.
- בחר פתרון בעיות מהרשימה.
- בחר חומרה ומכשירים מפותר בעיות.
- ברגע שפותר הבעיות נפתח ללחוץ הַבָּא.
- בחר את התוכנית שאינה מתפקדת מהרשימה המאוכלסת.
- בחר באפשרות פתרון בעיות הרצוי.
רוב החומרה היא פלאג-משחק. המשמעות היא שהם פשוט מחברים למחשב והמחשב יתקין את מנהלי ההתקן הנכונים.
זה לא’לא תמיד מסתדר אצל המשתמשים’ לטובת הצולל יש להוריד ממקור אחר. לפני שאתה לוקח את הזמן לחפש נהג לבצע את המשימות הבאות כדי לפתור את הבעיה:
פותר הבעיות יבחן את התוכנית כדי להבטיח שהיא עובדת. הפעל את פותר בעיות התאימות עבור כל תוכניות אחרות שאינן תואמות.
אינו תואם? לא בעיה
- לחץ בתיבת החיפוש של שורת המשימות.
- סוּג הפעל תוכניות.
- בחר הפעל תוכניות המיוצרות עבור גרסאות קודמות של Windows.
- זה יפתח את פותר בעיות תאימות.
- עקוב אחר ההנחיות על המסך.
אז אתה’ניסתה להריץ את פותר הבעיות וזה לא עשה זאת’לא עבודה. זֶה’זה בסדר, קם ונסה שוב. יש דרך להפוך את התוכנית שלך לתואמת את גרסתך של Windows. כאן’איך לעשות את זה:
ודא שאתה מפעיל את פותר הבעיות של תאימות עבור כל תוכנית הזקוקה לנהגים.
טיפ מומחה:
בחסות
נהגים מיושנים הם הסיבה העיקרית לשגיאות ובעיות מערכת. אם חלק מהקבצים שלך חסרים או מתרסקים, פיתרון אוטומטי כמו Driverfix יכול לפתור בעיות אלה רק בכמה לחיצות. וזה גם קל משקל במערכת שלך!
האם אתה מתקשה עם פותר הבעיות של Windows? כאן’מדריך נהדר לתיקון פותר הבעיות אם הוא הפסיק לעבוד בשבילך.
2. חפש נהגים
התקנת מנהלי התקנים ידנית היא האפשרות הבאה שלך. התקנה ידנית של מנהלי התקנים יכולה להיות מסוכנת אם אתה מוריד מנהלי התקנים ממקור לא ידוע או לא מוכר.
ודא שכל הנהגים מורידים ממקורות מהימנים כמו יצרנים’ אתרים.
עדכן מנהלי התקנים באופן אוטומטי
אם אתה לא’אני רוצה לעבור את הבעיה של חיפוש ידני באינטרנט אחר מנהל התקן הזמין האחרון, אנו ממליצים להשתמש בתוכנת עדכון של מנהל התקן של צד שלישי שתעשה זאת אוטומטית עבורך עבורך.
לא רק שהתוכנה תעדכן את הקושחה שלך בקלות, היא גם תסרוק כל העת את המכשיר שלך לנהגים חדשים בפני עצמה, כך שאתה לא תום’אפילו צריך לעשות את זה.
3. הפעל במצב תאימות
- מצא את התוכנית שאתה’מחדש מחפש לרוץ פנימה מצב תאימות.
- לחץ באמצעות לחצן העכבר הימני על התוכנית ובחר נכסים.
- הקלק על ה כרטיסיית תאימות.
- לחץ על התיבה תחת מצב תאימות.
- בחר את הגרסה של Windows שהתוכנית מסוגלת לעבוד עליה.
- לחץ על להגיש מועמדות.
לרוב התוכניות יש אפשרות להפעיל במצב תאימות. כדי לגרום לתוכנית שלך לרוץ במצב זה, בצע את הצעדים האמורים.
קרא עוד על נושא זה
- תקן שגיאת הפרת מנהל התקן ב- Windows 10
- כיצד לתקן את שגיאת מנהלי התקנים מיושנים ב- Windows 11
- Windows לא יכול להוריד מנהלי התקנים? תקן את זה עכשיו עם הפתרונות האלה
- תקן שגיאת ACPI_DRIVIVER_INTERNERAL ב- Windows 10
- לראות את קוד השגיאה של מנהל התקן 32? תקן את זה בארבעה שלבים פשוטים
4. כשכל השאר נכשל
מנהלי התקנים של MIDI קשה יותר להתקנה ב- Windows 10 בגלל מספר בעיות תאימות. כל אחד מהתיקונים המוזכרים במאמר זה עשוי לתקן את הבעיה עבור הנהג שלך.
אם אתה’לא נוגע אפשרויות התקשר ליצרן למכשיר שלך ובקש סיוע או מיקום של מנהלי התקנים תואמים.
זֶה’על זה למאמר זה. אם יש לך מה להוסיף בנושא, אנא אל תהסס לעשות זאת בקטע התגובות למטה.
- נהג
- מדריכי Windows 10
שיפורי MIDI ב- Windows 10
עם התפתחות Windows 10, אנו ממשיכים לבנות תמיכה בטכנולוגיות ממוקדות מוזיקאי.
לתת’תסתכל על MIDI. Windows זכתה לתמיכה MIDI מובנית חזרה לימי 16 סיביות. מאז, מרבית ממשקי ה- MIDI עברו ל- USB והתמיכה שלנו בתיבה המשיכה בקצב, עם מנהל התקן וממשקי API כיתתיים התומכים בממשקים חדשים אלה.
מי שאינו מכיר טכנולוגיית מוסיקה עשויים לחשוב על MIDI כ- SUTY .קבצי מוסיקה אמצעיים. אבל זה’זה רק חלק זעיר ממה ש- MIDI באמת. מאז הסטנדרטיזציה שלו בשנת 1983, MIDI נותרה הפרוטוקול התקשורת המשומש ביותר והחשוב ביותר בהפקת המוסיקה. זה’S המשמש לכל דבר, החל משליטה על סינתיסייזרים ורצפים ושינוי טלאים לרשימות סטים, ועד סנכרון מערבלים ואפילו החלפת מצלמות בפודקאסטים באמצעות משטח בקרת MIDI. אפילו פרוטוקול Arduino Firmata מבוסס על MIDI.
בפוסט זה, אנחנו’אדבר על כמה דברים חדשים שאנחנו’נוצר כדי להפוך את MIDI לשימושי עוד יותר באפליקציות שלך:
- יסודות UWP MIDI – שימוש ב- MIDI באפליקציות Windows Store
- תמיכה חדשה של Bluetooth Le Midi בעדכון יום השנה של Windows 10
- עטיפת Win32 עבור UWP MIDI (הופך את ה- API לנגיש לאפליקציות שולחן עבודה)
- ספריות עוזר MIDI עבור C# ו- PowerShell
בנוסף, כללנו מספר שיפורים ממוקדי שמע כאשר Windows 10 שוחרר בקיץ האחרון. שיפורים אלה כללו: שיפורים נמוכים לאחור בווסאפי, עבודות נהג נוספות עם שותפים כדי להצטרף למאגר קטן יותר לצורך חביון נמוך יותר במכשירי Windows 10 מודרניים כמו משטח וטלפונים כמו 950/950XL; ציוץ כדי לאפשר עיבוד שמע גולמי ללא כל DSP המוסף חביון; ממשק API חדש של AUDIO ו- Effects UWP בשם Audiograph; וכמובן, API חדש של UWP MIDI.
אָנוּ’לאחרונה הוסיף לאחרונה תמיכה באודיו מרחבי לחוויות טבולות. בסתיו האחרון, בעדכון 1511, אפשרנו תמיכה מערכת הפעלה צופה פני עתיד למכשירי שמע של Thunderbolt 3, כדי להבטיח שאנחנו’יש שם כאשר היצרנים מתחילים ליצור מכשירים אלה ואת נהגי השמע הביצועים הגבוהים שלהם. באופן מצטבר, זו הייתה הרבה עבודה נהדרת של Windows Engineering, כולם ממוקדים למוזיקאים ואפליקציות יצירת מוסיקה.
יסודות UWP MIDI
ב- Windows 10 RTM בשנה שעברה הצגנו ממשק API של MIDI חדש, הנגיש לאפליקציות UWP כמעט בכל מכשירי Windows 10, המספק דרך מודרנית לגשת לממשקי MIDI אלה. יצרנו ממשק API זה כדי לספק ביצועים גבוהים וגמישים עליו אנו יכולים לבנות תמיכה בממשקי MIDI חדשים.
במקור הוצאנו את ה- API הזה לתגובה כחבילת נוגט ב- Windows 8.1 וקיבלו משוב רב ממפתחי אפליקציות. מה שאתה רואה ב- Windows 10 הוא תוצאה ישירה של אותו משוב והבדיקה שלנו.
ה- API מתחבר יפה למנוי המכשיר וממשקי ה- API של Watcher ב- UWP, מה שמקל על גילוי תקע/ביטול חמים של מכשירים בזמן שהאפליקציה שלך פועלת.
כאן’דרך פשוטה להשיג רשימה של מכשירי MIDI ותעודת זהות שלהם, באמצעות C#:
באמצעות Windows.מכשירים.MIDI;
באמצעות Windows.מכשירים.ספירה;
..
async async void listmididevices ()
// למנות מכשירי קלט
var devicelist = ממתין ל- DeviceFormation.FindAllasync (
Midiinport.GetDevicesElector ());
foreach (var deviceinfo ב- devicelist)
מערכת.אבחון.לנפות.Writeline (deviceinfo.תְעוּדַת זֶהוּת);
מערכת.אבחון.לנפות.Writeline (deviceinfo.שֵׁם);
מערכת.אבחון.לנפות.Writeline (“———-“);
>
// מכשירי פלט מונים באותה צורה, אך
// באמצעות midioutport.GetDevicesElector ()
>
והנה’S כיצד להגדיר צופה ולטפל באירועי ספירה/צופה, וגם לקבל את רשימת הממשקים המחוברים. זה קצת יותר קוד, אבל זה’גישה מתאימה יותר לרוב האפליקציות:
חלל פרטי STARTWATCHINGINPUTDEVICES ()
var Watcher = Information.CreateWatcher (
Midiinport.GetDevicesElector ());
צוֹפֶה.נוסף += onmidiinputdeviceadded;
צוֹפֶה.הוסרה += onmidiinputDevicereModemod;
צוֹפֶה.EnumerationCompleted += onmidiinputDeviceEnumerationCompleted;
חלל פרטי onmidiinputDeviceEnumeration Completed (
שולח DeviceWatcher, אובייקטים Args)
// הספירה הראשונית הושלמה. זה כאשר
// תוכל להציג רשימת ממשקים ל
// משתמש היישום שלך.
>
חלל פרטי onmidiinputdeviceremodemodemod (
שולח DeviceWatcher, DeviceinformationUpdate Args)
// לטפל בהסרת התקן קלט MIDI
>
חלל פרטי onmidiinputdeviceadeded (
שולח DeviceWatcher, Arginformation Args)
// לטפל בתוספת מכשיר קלט MIDI חדש
>
שימוש בצופה למכשירי רישום וטיפול הוסף/הסר הוא הנוהג הטוב ביותר לעקוב אחר האפליקציות שלך. אף אחד לא רוצה להפעיל מחדש את האפליקציה שלהם רק בגלל ששכחו לחבר או להפעיל את בקר ה- MIDI שלהם. השימוש בצופה מקל על האפליקציה שלך להתמודד כראוי בתוספות/הסרה בזמן ריצה.
ממשק ה- API פשוט לשימוש, עם שיעורים מוקלדים מאוד עבור כל ההודעות הסטנדרטיות, כמו גם תמיכה בפעולות SYSEX ובחיץ חיץ. דוגמא C# זו מראה כיצד לפתוח יציאות קלט ופלט, ולהגיב להודעות MIDI ספציפיות.
באמצעות Windows.מכשירים.MIDI;
באמצעות Windows.מכשירים.ספירה;
..
async void void midiexample ()
מחרוזת outportId = “מזהה אתה מקבל את ספיון ההתקנים”;
מחרוזת inportId = “מזהה אתה עובר על ספירה של מכשירים”;
// פתח את יציאת הפלט ושלח הודעה
var outport = מחכה midioutport.Fromidasync (OutortId);
var noteOnMessage = MidinoteOnMessage חדש (0, 110, 127);
מתחילים.SendMessage (NothonMessage);
// פתח יציאת קלט והאזין להודעות
var inport = מחכה midiinport.Fromidasync (inportid);
אינפורמציה.MessagereCeive += onMidimessagereCeepteed;
>
חלל פרטי onmidimessagereceeved (שולח Midiinport,
Midimessegereceiveventargs args)
מתג (args.הוֹדָעָה.סוּג)
מקרה midimessageType.הערה:
לשבור;
מקרה midimessageType.Polyphonickeysure:
לשבור;
// וכו.
>
>
ברוב המקרים, היית בודק את סוג ההודעה ואז מטיל את ה- iMidiMessage לאחת ההודעות שהוגדרו מאוד שהוגדרו בחלונות.מכשירים.מרחב השמות של MIDI, כמו midinoteonmessage או midipitchbendchangemessage. אתה’עם זאת, לא נדרש לעשות זאת; אתה תמיד יכול לעבוד מבתי הנתונים הגולמיים אם אתה מעדיף.
ממשק ה- API של Windows 10 UWP MIDI מתאים ליצירת כל מיני אפליקציות Windows Store ממוקדות מוסיקה. אתה יכול ליצור משטחי בקרה, רצפים, סינתיסייזרים, אפליקציות שירות, ספרני טלאים, בקרי תאורה, סינתיסייזרי סליל טסלה מתח גבוה ועוד הרבה יותר.
ממש כמו ממשקי ה- API של MIDI הישנים יותר, ה- API של Windows 10 UWP MIDI עובד טוב עם תוספות של צד שלישי כמו טוביאס ארייצן’נהג RTPMIDI נהדר, המספק תמיכה ב- MIDI על רשתות Wired ו- Wi-Fi.
מאפיין אחד נהדר של ה- API החדש הוא שהוא רב-לקוח. כל עוד כל האפליקציות עם היציאה פתוחה משתמשות בממשק ה- API של Windows 10 UWP MIDI ולא ב- WIN32 MME הישן או בממשקי ה- API של DirectMusic, הם יכולים לשתף את אותו המכשיר. זה משהו שהממשקי המועדים הישנים יותר דון’לא ידית ללא נהגים בהתאמה אישית והיה בקשה נפוצה מצד השותפים והלקוחות שלנו.
לבסוף, זה’חשוב לציין כי API של Windows 10 UWP MIDI עובד עם כל מכשירי ה- MIDI המוכרים, בין אם הם משתמשים בנהגי הכיתה או בנהגים מותאמים אישית משלהם. זה כולל כלי עזר MIDI מבוססי תוכנה רבים המיושמים כמנהלי התקנים ב- Windows 10.
תמיכה חדשה של Bluetooth Le Midi ב- UWP MIDI
בנוסף לתמיכה רב-לקוח והשיפורים שאנחנו’נעשה בביצועים ויציבות, סיבה טובה להשתמש בממשק ה- API של Windows 10 UWP MIDI הוא בגלל התמיכה שלה בסטנדרטים חדשים ובהנסעות.
מיקרוסופט משתתפת באופן פעיל בתהליך התקנים של MIDI ויש לה נציגים בקבוצות העבודה. ישנם כמה מאיתנו בתוך מיקרוסופט שמשתתפים ישירות ביצירה, מצטיינים והצבעה של סטנדרטים עבור MIDI, ולמען האודיו בכלל.
תקן MIDI מרגש וחדש יחסית שזכה במהרה לפופולריות הוא Bluetooth le Midi. מיקרוסופט הצביעה לאשרר את התקן על סמך העבודה החלוצית שאפל עשתה במרחב זה; כתוצאה מכך, אפל, מיקרוסופט ואחרים תואמים תקן שרואה משיכה אמיתית בקהילה המוזיקאית, וכבר יש לה מספר ציוד היקפי תואם.
במהדורת יום השנה של Windows 10, אנחנו’יש לכלול תמיכה בתיבה ב- Bluetooth LE MIDI עבור כל אפליקציה באמצעות API של Windows 10 UWP MIDI.
במהדורת יום השנה של Windows 10, אנחנו’יש לכלול תמיכה בתיבה ב- Bluetooth LE MIDI עבור כל אפליקציה באמצעות API של Windows 10 UWP MIDI. זוהי תוספת שאינה דורשת שינויים בקוד שלך, מכיוון שהממשק עצמו הוא פשוט הובלה שקופה נוספת שעלתה על ידי ה- MIDI API.
סוג זה של ממשק MIDI משתמש ברדיו Bluetooth שכבר במחשב האישי, טלפון, מכשיר IoT או מכשיר Windows 10 אחר כדי לדבר עם ציוד היקפי MIDI של Bluetooth כמו מקלדות, דוושות ובקרים. נכון לעכשיו המחשב עצמו יכול’לא להיות היקפי, אבל אנחנו’מסתכל על זה לעתיד. למרות שיש כמה Midi נהדר ל- Bluetooth le Midi ומתאמים דומים שם, אין חומרה נוספת נדרשת ל- Bluetooth Le Midi ב- Windows 10 כל עוד למחשב שלך יש רדיו Bluetooth Le זמין.
אנו יודעים שהשהייה חשובה למוזיקאים, ולכן דאגנו ליישום שלנו תחרותי עם פלטפורמות אחרות. כמובן של- Bluetooth יש חביון גבוה יותר מחיבור USB קווי, אבל הסחר הזה יכול להיות שווה את זה כדי לחסל את עומס הכבלים.
כאשר הוא מזווג, ה- Bluetooth Le Midi ההיקפי יופיע כמכשיר MIDI בחוקר המכשיר, והוא ייכלל אוטומטית במניעת מכשיר ה- UWP MIDI. זה שקוף לחלוטין ליישום שלך.
למידע נוסף כיצד לגלות ולתקדם מכשירים, כולל מכשירי Bluetooth Le Midi, אנא עיין בדוגמה של ספירה והתאמה של המכשיר ב- GitHub.
הוספנו יכולת זו במהדורת יום השנה של Windows 10 כתוצאה ישירה של משוב של שותף ולקוחות. אני’M ממש מתרגש מ- Bluetooth Le Midi ב- Windows 10 והמכשירים שניתן להשתמש בהם כעת ב- Windows 10.
תמיכה ליישום שולחן עבודה ב- UWP MIDI API
אנו יודעים שרוב המוזיקאים משתמשים בשולחן העבודה Win32 Daws וכלי עזר בעת ביצוע מוסיקה. ממשק ה- API של UWP MIDI נגיש ליישומי שולחן עבודה, אך אנו יודעים כי גישה לממשקי API של UWP משפות שונות וסביבות בנייה יכולה להיות מאתגרת.
כדי לעזור למפתחי אפליקציות שולחן עבודה עם ה- API החדש וכדי להפחית את החיכוך, עמית שלי דייל סטמן בצוות WDG/PAX Spark שלנו הרכיב עטיפה של Win32 עבור Windows 10 UWP MIDI API.
העבודה שהצוות שלנו עושה, כולל עטיפת API זו, מונעת בעיקר בשותף. זה אומר שכתוצאה מבקשות ומשוב, אנו יוצרים דברים כדי לאפשר לשותפים להצליח ב- Windows. אחד השותפים שעבדנו איתם בעת יצירת זה הוא Cakewalk, יצרני יישום DAW שולחן עבודה פופולרי של סונאר.
זה מה שהיה למפתחים שלהם לומר על עטיפת Win32 עבור ה- UWP MIDI API, והתמיכה שלנו ב- Bluetooth Le Midi:
“אָנוּ’שמח לראות את מיקרוסופט תומכת במפרט ה- Bluetooth Midi וחושף אותו למפתחי Windows באמצעות ממשק API פשוט. בעזרת העטיפה החדשה של Win32 עבור ממשק ה- API של UWP MIDI, הצלחנו לאב טיפוס של Bluetooth MIDI תמיכה במהירות רבה. ב- Cakewalk אנחנו’מסתכל קדימה לתמוך בציוד היקפי אלחוטי, כך שזו תוספת מבורכת מאוד של מיקרוסופט.”
נואל בורטוויק, CTO, Cakewalk
אנחנו אוהבים לעבוד עם שותפים גדולים כמו Cakewalk, בידיעה שהתוצאה תועיל ישירות ללקוחות ההדדיים שלנו.
העטיפה הזו של Win32 הופכת את זה לפשוט להשתמש בממשק ה- API ממש כמו כל API שטוח WIN32. זה משטף את כל היכולות של ה- API של Windows 10 UWP MIDI, ומסיר את הדרישה ליישום Win32 שלך להיות מודע UWP. בנוסף, שם’אין דרישה להשתמש ב- C ++/CX או לשנות בדרך אחרת את כלי הבנייה והתהליכים שלך. כאן’S A C ++ WIN32 App Console App דוגמה:
// פתח את יציאת Midi Out 0
תוצאה = gmidioutportopenfunc (midiptr, 0, & gmidioutport);
אם (תוצאה != WinRT_NO_ERROR)
ניקוי גוטו של Cout;
>
// שלח הערה על הודעה ליציאת MIDI OUT
חיץ char לא חתום [3] = < 144, 60 , 127 >;
cout gmidioutportsendfunc (gmidioutport, חיץ, 3);
// שלח הודעת פתק ליציאת MIDI OUT
מאגר Cout [0] = 128;
gmidioutportsendfunc (gmidioutport, חיץ, 3);
ממשק API זה מותאם לעבודה עם יישומי WIN32 קיימים, ולכן אנו מוותרות על הודעות MIDI מקלידות בחוזקה ועבודה במקום עם מערכי בתים, ממש כמו שמפתחי אפליקציות Win32 Music רגילים.
אָנוּ’עדיין מקבל משוב משותפים ומפתחים בעטיפת ה- API, ואוהב את שלך. אתה יכול למצוא את קוד המקור ב- GitHub. אנו עשויים לשנות את המיקום בהמשך, כך שה- AKA.קישור MS (http: // aka.MS/WIN10MIDIWIN32) הוא זה שאתה רוצה לשמור על שימוש נוח.
עבור מפתחים המשתמשים בגרסאות אחרונות של Visual Studio, אנחנו’VE גם העמיד לרשות חבילת נוגט שימושית.
אָנוּ’כבר עובד עם שותפי אפליקציות שולחניים כדי לשלב ביישומים שלהם ממשק API זה באמצעות עטיפה זו, כמו גם שיפורי שמע ומשתמש אחרים ב- Windows 10. אם יש לך אפליקציית שולחן עבודה הממוקדת למוזיקאים מקצוענים ויש לך שאלות, אנא צור איתי קשר ב- @pete_brown בטוויטר, או פיט דוט בראון ב- Microsoft Dot Com.
ספריות עוזר MIDI לאפליקציות של Windows Store
בנוסף לעטיפת ה- API של Win32, יש לנו גם כמה ספריות עוזרות קטנות יותר למפתחי אפליקציות בחנויות ומשתמשי PowerShell.
הראשון הוא עוזר ה- API של Windows 10 UWP MIDI שלי, עבור אפליקציות C#, VB ו- C ++ Windows Store. זה נועד להקל על המינוי של מכשירי MIDI, נקשר לתוצאות ב- XAML ולהגיב לכל שינוי תקע/נתק חם. זה’S זמין הן כמקור והן כחבילת נוגט מורכבת.
זה כולל מחלקת צופים עם אוספים הניתנים להיקף / נצפה ידידותי ל- XAML למופעי מידע על מכשירים.
הודעות RPN ו- NRPN
בנוסף, ספריית העוזרים מכילה קוד שיסייע בהודעות RPN (מספר פרמטר רשום) ו- NRPN (מספר פרמטר שאינו רשום). אלה יכולים להיות מאתגרים יותר עבור מפתחים חדשים לעבוד איתם מכיוון שהם הודעות הגיוניות המורכבות מכמה הודעות שונות המצטברות יחד, שנשלחות ברצף.
כי חשפנו את החלונות.מכשירים.MIDI.ממשק imidiMessage ב- UWP, וקוד הפלט של MIDI הבסיסי שולח כל מה שיש במאגר, יצירת כיתות הודעות מצטברות שהוקלדו מאוד הייתה די קלה. כשאתה שולח הודעות אתה משתמש בכיתות אלה ממש כמו כל הודעת MIDI אחרת שהוקלדה מאוד.
אני’M החקירה המשלבת תמיכה ב- MPE המוצע (ביטוי פוליפוני רב ממדי), כמו גם לניתוח וצבירה של הודעות RPN והודעות NRPN הנכנסות. אם תכונות אלה היו מועילות לך באפליקציות שלך, אנא צור איתי קשר והודיע לי.
מחולל שעון MIDI
יצירה אחת נוספת שהספרייה כוללת היא מחולל שעון MIDI. אם אתה זקוק לגנרטור שעון MIDI (לא לולאת בקרת רצף, אלא רק כדי לייצר הודעות שעון יוצאת), הספרייה מכילה יישום שתמצא שימושי. כאן’S איך אתה משתמש בו מ- C#:
MIDICLOCKGENERATOR פרטי _CLOCK = חדש MIDICLOCKGENERATOR ();
..
_שָׁעוֹן.SendMidistArtMessage = נכון;
_שָׁעוֹן.SendMidistOpMessage = נכון;
foreach (מידע על מידע מכשירים ב- devicewatcher.OutputPortDescriptors)
var port = (midioutport) מחכה midioutport.Fromidasync (מידע.תְעוּדַת זֶהוּת);
אם (יציאה != null)
_שָׁעוֹן.Outputports.הוסף (יציאה);
>
StartClock Public Void ()
_שָׁעוֹן.הַתחָלָה();
>
Stoplock void void ציבורי ()
_שָׁעוֹן.תפסיק();
>
ריפו של GitHub שלי כולל את מקור C ++/CX ואפליקציית C#/XAML לקוח. במאמר מוסגר: זה היה פרויקט ה- C ++/CX הראשון שלי. למרות שעדיין אני מוצא את C# קל יותר לרוב המשימות, מצאתי את C ++ CX כאן די נגיש. אם אתה’מחדש מפתח C# שחשב להשתמש ב- C ++ CX, תן לזה מערבולת. יתכן שתמצא את זה מוכר יותר ממה שאתה מצפה!
ספרייה זו תעזור למפתחים לעקוב אחר שיטות העבודה המומלצות עבור אפליקציות MIDI בחנות Windows. בדיוק כמו עם אפליקציות שולחן עבודה, אם אתה’לבנות כאן אפליקציה ממוקדת מוזיקאית ויש לך שאלות, אנא צור איתי קשר ב- @pete_brown בטוויטר, או פיט דוט בראון ב- Microsoft Dot Com.
ספריית העוזרים השנייה היא קבוצה של פקודות PowerShell לשימוש בממשק ה- API של Windows 10 UWP MIDI. אני’דיבר עם אנשים שמשתמשים בזה כדי לאוטומציה של סקריפט של עדכוני MIDI כדי לסנכרן מערבלים שונים במתקן גדול ואחרים שמשתמשים בו כ- “דֶבֶק” לתרגום הודעות בין מכשירים שונים. שם’הרבה אתה יכול לעשות עם PowerShell ב- Windows 10, ועכשיו MIDI הוא חלק מזה. הריפו כולל דוגמאות שימוש, אז ניצחתי’לא חזור על זה כאן.
סיכום
אני’M ממש מתרגש מהעבודה שאנחנו ממשיכים לעשות במרחב האודיו כדי לעזור למוזיקאים ומפתחי אפליקציות מוסיקה ב- Windows.
בסך הכל, ה- UWP MIDI API, עטיפת ה- WIN32 של ה- UWP MIDI API, וספריות העוזרות עבור אפליקציות Windows Store ולסקריפטים של PowerShell מאפשרים לאפליקציות ותסריטים לנצל את ה- MIDI Tech האחרון ב- Windows 10, כולל Bluetooth Midii.
אני’M ממש מצפה לאפליקציות השולחן העבודה וה- Windows Store הקרובות אשר יתמכו בממשק ה- API הזה, וטכנולוגיות כמו Bluetooth le Midi. וכפי שציינתי לעיל, אנא צור איתי קשר ישירות אם אתה’לבנות מחדש אפליקציה Pro Musician Hargeted וזקוק להדרכה או יש להם שאלות אחרת.
אֶמְצָעִי
- התחל להתחיל לפתח אפליקציות UWP
- מכשירים.תיעוד מרחב השמות של MIDI
- מדגם API רשמי של Windows 10 UWP MIDI
- Github repo עבור עטיפת Midi Win32
- פיט’s github ריפוז עם פרויקטים של MIDI ו- Audio
- חבילת נוגט לעטיפת MIDI Win32
- פיט בראון קיץ נאם 2015 מפתח על Windows 10
- איגוד MIDI
- סטודיו בכף היד שלך: פיתוח אפליקציות ליצירת שמע ווידאו עבור Windows 10
- שמע מרחבי עם אודיוגרפיה ב- UWP
- שמע מרחבי באפליקציות ומשחקים של UWP
הורד את Visual Studio כדי להתחיל.
צוות Windows ישמח לשמוע את המשוב שלך. אנא שמור על המשוב מגיע באמצעות אתר המפתח של Windows uservoice שלנו. אם יש לך באג ישיר, אנא השתמש בכלי המשוב של Windows המובנה ישירות ב- Windows 10.
נהג נמל MIDI
מנהל ההתקן של יציאת MIDI מנהל מכשיר סינתיסייזר או לכידת MIDI. מנהל ההתקן המתאם מספק מנהל התקן MIDI Miniport המתאים הנקשר לאובייקט מנהל ההתקן של ה- MIDI ליצירת פילטר MIDI (ראה MIDI ומסנני DirectMusic) שיכולים ללכוד או להעביר זרם MIDI.
מנהל ההתקן של יציאת MIDI חושף ממשק iportmidi למנהל התקן Miniport. יפורטמידי יורש את השיטות בממשק הבסיס iport. יפורטמידי מספק את השיטות הנוספות הבאות:
מודיע למנהל התקן היציאה כי מכשיר ה- MIDI Synthesizer או לכידת. Iportmidi :: RegisterServiceGroup
רושם אובייקט קבוצת שירות עם מנהל התקן היציאה. קבוצת שירות מכילה רשימה של שגרת שירות אחת או יותר אשר אמורים להיקרא כאשר מנהל התקן המיניופורט מתקשר לְהוֹדִיעַ; למידע נוסף, עיין בכיור שירות וקבוצת שירותים.
אובייקטים של נהג MIDI ו- Miniport מתקשרים זה עם זה דרך שלהם יפורטמידי וממשקי iminiportmidi. מנהל ההתקן המיניופורט משתמש בנהג היציאה יפורטמידי ממשק כדי להודיע על מנהל ההפרעות של מנהל התקן החומרה. בנוסף, נהג היציאה מתקשר עם אובייקטי זרם הנהג Miniport דרך ממשקי ה- iminiportmidistream שלהם.
ב- Windows XP ובהמשך, יפורטמידי וממשקי IportDmus מיושמים שניהם במודול מנהל התקן פנימי יחיד. איחוד זה מקל על ידי הדמיון של שני ממשקים אלה. לדוגמה, אותן שיטות מוגדרות לשני הממשקים. יישומים שנכתבו לגרסאות קודמות של Windows צריכות לראות שום שינוי בהתנהגות יפורטמידי וכן IPORTDMUS ממשקים הנובעים מאיחוד נהגי נמל MIDI ו- DMUS.
מָשׁוֹב
הגש וצפה במשוב עבור
שיפורי MIDI ב- Windows 10
לאחרונה פיט בראון ממיקרוסופט פרסם פוסט בבלוג אינפורמטיבי מאוד על שיפורי MIDI ב- Windows 10.
פוסט הבלוג מכסה מספר נושאים כולל
- יסודות UWP MIDI – שימוש ב- MIDI באפליקציות Windows Store
- תמיכה חדשה של Bluetooth Le Midi בעדכון יום השנה של Windows 10
- עטיפת Win32 עבור UWP MIDI (הופך את ה- API לנגיש לאפליקציות שולחן עבודה)
- ספריות עוזר MIDI עבור C# ו- PowerShell
שיפורי MIDI ב- Windows 10 | בניית אפליקציות לחלונות
“אנו שמחים לראות את מיקרוסופט תומכת במפרט ה- Bluetooth Midi וחושפת אותו למפתחי Windows באמצעות ממשק API פשוט. בעזרת העטיפה החדשה של Win32 עבור ממשק ה- API של UWP MIDI, הצלחנו לאב טיפוס של Bluetooth MIDI תמיכה במהירות רבה. ב- Cakewalk אנו מסתכלים קדימה לתמוך בציוד היקפי אלחוטי, כך שזו תוספת מבורכת מאוד ממיקרוסופט.”
מאת נואל בורתוויק, CTO, Cakewalk
יש גם הסבר נחמד במאמרו של פיט על האופן בו עובדים RPN ו- NRPNs ומבנה הנתונים שלהם.
עם שחרורו של Windows 10, שלוש חברות מערכות ההפעלה הגדולות (אפל, גוגל ומיקרוסופט) פיתחו כולם תמיכה בתקן איגוד יצרני MIDI עבור MIDI על פני אנרגיה נמוכה של Bluetooth שניתן למצוא בקטע המפרט באתר זה וזמין להורדה על ידי חברי איגוד MIDI ללא עלות.