Windows 10 MIDI 드라이버 : 몇 단계로 설치하는 방법
Windows 팀은 귀하의 의견을 듣고 싶습니다. Windows 개발자 Uservoice 사이트를 사용하여 피드백을 계속하십시오. 직접 버그가있는 경우 Windows 10에 직접 구축 된 Windows 피드백 도구를 사용하십시오.
미디
이 기사는 MIDI (Musical Instrument Digital Interface) 장치를 열거하고 Universal Windows 앱에서 MIDI 메시지를 보내고받는 방법을 보여줍니다. Windows 10은 USB (클래스 호환 및 대부분의 독점 드라이버), Bluetooth LE (Windows 10 Anniversary Edition 이상)을 통해 MIDI를 지원합니다.
MIDI 장치를 열거하십시오
MIDI 장치를 열거하고 사용하기 전에 프로젝트에 다음 네임 스페이스를 추가하십시오.
Windows 사용.장치.열거;
Windows 사용.장치.미디;
시스템 사용.스레딩.작업;
을 추가하다 리스트 박스 사용자가 시스템에 첨부 된 MIDI 입력 장치 중 하나를 선택할 수있는 XAML 페이지를 제어합니다. MIDI 출력 장치를 나열하려면 다른 것을 추가하십시오.
그만큼 findallasync 방법 DeviceInformation 클래스는 Windows에서 인식하는 다양한 유형의 장치를 열거하는 데 사용됩니다. MIDI 입력 장치를 찾는 메소드 만 원한다고 지정하려면 미드 디 포트.getDeviceSelector. findallasync 반환 a DeviceInformationCollection 여기에는 a가 포함되어 있습니다 DeviceInformation 시스템에 등록 된 각 MIDI 입력 장치에 대해. 반환 된 컬렉션에 항목이없는 경우 사용 가능한 MIDI 입력 장치가 없습니다. 컬렉션에 항목이있는 경우 DeviceInformation 각 장치의 이름을 MIDI 입력 장치에 추가하십시오 리스트 박스.
개인 비동기 작업 enumeratemidiinputDevices ()
{
// 모든 입력 MIDI 장치를 찾습니다
문자열 midiinputquerystring = midiinport.getDeviceSelector ();
DeviceInformationCollection MIDIINPUTDEVICE = AWAIT DeviceInformation.findallasync (midiinputquerystring);
MidiinportListbox.항목.분명한();
// 외부 장치가 연결되어 있지 않으면 반환합니다
if (midiinputDevices.count == 0)
{
이것.MidiinportListbox.항목.추가 ( "MIDI 입력 장치가 없음!");
이것.MidiinportListbox.isenabled = false;
반품;
}
// 다른 연결 입력 장치를 목록에 추가합니다
foreach (midiinputdevices의 deviceinformation deviceinfo)
{
이것.MidiinportListbox.항목.추가 (DeviceInfo.이름);
}
이것.MidiinportListbox.isenabled = true;
}
열거하는 MIDI 출력 장치는 입력 장치 열거 장치와 동일한 방식으로 작동합니다 미들 아웃 포트.getDeviceSelector 전화 할 때 findallasync.
개인 비동기 작업 enumeratemidioutputDevices ()
{
// 모든 출력 MIDI 장치를 찾습니다
문자열 MIDIOUTPORTQUERYSTRING = MIDIOUTPORT.getDeviceSelector ();
DeviceInformationCollection MIDIOUTPUTDEVICE = AWAIT DeviceInformation.findAllasync (midioutportQueryString);
MidioutportListbox.항목.분명한();
// 외부 장치가 연결되어 있지 않으면 반환합니다
if (midioutputDevices.count == 0)
{
이것.MidioutportListbox.항목.추가 ( "MIDI 출력 장치가 없음!");
이것.MidioutportListbox.isenabled = false;
반품;
}
// 다른 연결 입력 장치를 목록에 추가합니다
foreach (midioutputdevices의 deviceinformation deviceinfo)
{
이것.MidioutportListbox.항목.추가 (DeviceInfo.이름);
}
이것.MidioutportListbox.isenabled = true;
}
장치 감시자 도우미 클래스를 만듭니다
그만큼 창.장치.열거 네임 스페이스를 제공합니다 DeviceWatcher 시스템에서 장치가 추가되거나 제거되거나 장치에 대한 정보가 업데이트 된 경우 앱에 알릴 수 있습니다. MIDI 지원 앱은 일반적으로 입력 및 출력 장치 모두에 관심이 있으므로이 예제는 DeviceWatcher 패턴, 동일한 코드를 중복의 필요없이 MIDI 입력 및 MIDI 출력 장치 모두에 사용할 수 있습니다.
장치 감시자 역할을하기 위해 프로젝트에 새 클래스를 추가하십시오. 이 예에서는 클래스의 이름이 지정됩니다 MyMidideViceWatcher. 이 섹션의 나머지 코드는 도우미 클래스를 구현하는 데 사용됩니다.
클래스에 일부 멤버 변수를 추가하십시오
- ㅏ DeviceWatcher 장치 변경을 모니터링하는 객체.
- 한 인스턴스의 포트 선택기 문자열에 MIDI를 포함하는 장치 선택기 문자열과 다른 인스턴스의 경우 MIDI OUT 포트 선택기 문자열.
- ㅏ 리스트 박스 사용 가능한 장치의 이름으로 채워질 컨트롤.
- ㅏ Coredispatcher UI 스레드 이외의 스레드에서 UI를 업데이트해야합니다.
DeviceWatcher DeviceWatcher;
문자열 deviceSelectorstring;
Listbox DeviceListbox;
Coredispatcher Coredispatcher;
을 추가하다 DeviceInformationCollection 도우미 클래스 외부에서 현재 장치 목록에 액세스하는 데 사용되는 속성.
public deviceinformationCollection DeviceInformationCollection {get; 개인 세트; }
클래스 생성자에서 발신자는 MIDI 장치 선택기 문자열을 통과합니다 리스트 박스 장치를 나열하고 디스패처 UI를 업데이트하는 데 필요했습니다.
부르다 DeviceInformation.CreateWatcher 새 인스턴스를 생성합니다 DeviceWatcher 클래스, MIDI 장치 선택기 문자열을 통과합니다.
감시자의 이벤트 핸들러에 대한 핸들러를 등록하십시오.
public mymididevicewatcher (String midideviceselectortring, listbox mididevicelistbox, coredispatcher 디스패처) { DeviceSelectorstring = MidideVicesElectortring; DeviceListbox = MidideViceListbox; Coredispatcher = 디스패처; DeviceWatcher = DeviceInformation.CreateWatcher (DeviceSelectorstring); DeviceWatcher.추가 += DeviceWatcher_added; DeviceWatcher.제거 += DeviceWatcher_Removed; DeviceWatcher.업데이트 += DeviceWatcher_Updated; DeviceWatcher.EnumerationCompleted += DeviceWatcher_EnumerationCompleted; }
질문 1 : Universal Windows 앱에서 MIDI 입력 장치를 열거하는 방법?
사용하여 Universal Windows 앱에서 MIDI 입력 장치를 열거 할 수 있습니다 findallasync 방법의 방법 DeviceInformation 수업. MIDI 입력 장치 만 찾으려면 미드 디 포트.getDeviceSelector. 루프 DeviceInformation 반환 된 개체 DeviceInformationCollection 각 장치의 이름을 ListBox 컨트롤에 추가하십시오.
질문 2 : Universal Windows 앱에서 MIDI 출력 장치를 열거하는 방법?
입력 장치를 열거하는 것과 동일한 방법을 사용하여 범용 Windows 앱에서 MIDI 출력 장치를 열거 할 수 있습니다. 다음으로 반환 한 선택기 문자열 만 사용하십시오 미들 아웃 포트.getDeviceSelector 대신 전화 할 때 findallasync.
질문 3 : Universal Windows 앱에서 장치 감시자 도우미 클래스를 만드는 방법?
구현하여 Universal Windows 앱에서 장치 감시자 도우미 클래스를 만들 수 있습니다 DeviceWatcher 패턴 창.장치.열거 네임 스페이스. 이를 통해 장치에서 장치가 추가되거나 제거되거나 장치의 정보가 업데이트 된 경우 앱에 알릴 수 있습니다. 헬퍼 클래스는 코드 복제없이 MIDI 입력 및 출력 장치 모두에 사용할 수 있습니다.
질문 4 : ListBox 컨트롤을 사용하여 Universal Windows 앱에 MIDI 입력 장치를 나열하는 방법?
Universal Windows 앱에서 Listbox 컨트롤을 사용하여 MIDI 입력 장치를 나열 할 수 있습니다. XAML 페이지에 ListBox 컨트롤을 추가하고 DeviceInformation 객체 DeviceInformationCollection 에서 얻은 findallasync.
질문 5 : Listbox 컨트롤을 사용하여 Universal Windows 앱에 MIDI 출력 장치를 나열하는 방법?
Universal Windows 앱에 MIDI 출력 장치를 나열하기 위해 ListBox 컨트롤을 사용하면 입력 장치 목록과 유사합니다. 간단히 얻으십시오 DeviceInformationCollection 출력 장치 사용 findallasync 그리고 루프 DeviceInformation 목록 상자 컨트롤을 채우는 개체.
질문 6 : Universal Windows 앱의 UI 스레드 이외의 스레드에서 UI를 업데이트하려면 어떻게해야합니까??
Universal Windows 앱에서 UI 스레드가 아닌 스레드에서 UI를 업데이트 할 수 있습니다 Coredispatcher 수업. Coredispatcher 인스턴스를 장치 감시자 도우미 클래스에 전달하고 사용하십시오 runasync 방법 UI 스레드에서 코드를 실행하는 메소드.
질문 7 : Universal Windows 앱에서 장치 변경을 모니터링하려면 어떻게해야합니까??
Universal Windows 앱에서는 사용하여 장치 변경 사항을 모니터링 할 수 있습니다 DeviceWatcher 수업. 이벤트 처리기 등록자 추가, 제거됨, 업데이트, 그리고 열거 된 장치 감시자의 이벤트는 장치가 추가, 제거, 업데이트 또는 열거 작업이 완료 될 때 알림을받습니다.
질문 8 : Universal Windows 앱에서 새로운 MIDI 장치가 추가되면 이벤트를 처리하는 방법?
새로운 MIDI 장치가 Universal Windows 앱에 추가 될 때 이벤트를 처리 할 수 있습니다 추가 장치 감시자 이벤트. 이벤트 핸들러에서는 새로운 장치를 반영하도록 UI를 업데이트 할 수 있습니다.
질문 9 : Universal Windows 앱에서 MIDI 장치가 제거 될 때 이벤트를 처리하는 방법?
Universal Windows 앱에서 MIDI 장치가 제거 될 때 이벤트를 처리하려면 제거됨 장치 감시자 이벤트. 이벤트 핸들러에서는 UI를 업데이트하여 목록에서 장치를 제거 할 수 있습니다.
질문 10 : Universal Windows 앱에서 MIDI 장치에 대한 정보가 업데이트 될 때 이벤트를 처리하는 방법?
Universal Windows 앱에서는 MIDI 장치의 정보가 가입하여 업데이트 될 때 이벤트를 처리 할 수 있습니다 업데이트 장치 감시자 이벤트. 이벤트 핸들러에서는 장치의 업데이트 된 정보를 반영하도록 UI를 업데이트 할 수 있습니다.
질문 11 : Universal Windows 앱에 사용 가능한 MIDI 입력 장치가 없는지 확인하려면 어떻게해야합니까??
범용 Windows 앱에서는 사용 가능한 MIDI 입력 장치가 없는지 확인할 수 있습니다 DeviceInformationCollection 에서 얻은 findallasync. 카운트가 0이면 사용 가능한 MIDI 입력 장치가 없음을 의미합니다.
질문 12 : Universal Windows 앱에 사용 가능한 MIDI 출력 장치가 없는지 확인하려면 어떻게해야합니까??
Universal Windows 앱에서는 사용 가능한 MIDI 출력 장치가 없는지 확인할 수 있습니다 DeviceInformationCollection 에서 얻은 findallasync. 카운트가 0 인 경우 사용 가능한 MIDI 출력 장치가 없음을 의미합니다.
질문 13 : Universal Windows 앱에서 MIDI 장치의 열거가 완료되면 이벤트를 처리하는 방법?
MIDI 장치의 열거가 Universal Windows 앱에서 가입하여 이벤트를 처리 할 수 있습니다 열거 된 장치 감시자 이벤트. 이벤트 핸들러에서는 열거가 완료된 후 필요한 조치를 수행 할 수 있습니다.
질문 14 : 특정 MIDI 장치가 Universal Windows 앱의 출력 장치인지 출력 장치인지 확인하는 방법?
범용 Windows 앱에서 특정 MIDI 장치가 입력 장치인지 출력 장치인지 확인할 수 있습니다 DeviceInformation 객체의 속성. 장치의 속성에는 입력 또는 출력 장치인지 여부와 같은 장치 유형에 대한 정보가 포함되어 있습니다.
질문 15 : Universal Windows 앱에서 장치 감시자 도우미 클래스 외부에서 현재 MIDI 장치 목록에 액세스하려면 어떻게해야합니까??
Universal Windows 앱에서는 속성을 사용하여 장치 감시자 도우미 클래스 외부에서 현재 MIDI 장치 목록에 액세스 할 수 있습니다. 유형의 공공 속성을 만듭니다 DeviceInformationCollection 도우미 클래스에서 장치 목록이 업데이트 될 때마다 값을 설정합니다. 그런 다음 앱의 다른 부분 에서이 속성에 액세스하여 현재 MIDI 장치 목록을 얻을 수 있습니다.
Windows 10 MIDI 드라이버 : 몇 단계로 설치하는 방법
Windows 팀은 귀하의 의견을 듣고 싶습니다. Windows 개발자 Uservoice 사이트를 사용하여 피드백을 계속하십시오. 직접 버그가있는 경우 Windows 10에 직접 구축 된 Windows 피드백 도구를 사용하십시오.
미디
이 기사는 MIDI (Musical Instrument Digital Interface) 장치를 열거하고 Universal Windows 앱에서 MIDI 메시지를 보내고받는 방법을 보여줍니다. Windows 10은 USB (클래스 호환 및 대부분의 독점 드라이버), Bluetooth LE (Windows 10 Anniversary Edition 이상)을 통해 MIDI를 지원합니다.
MIDI 장치를 열거하십시오
MIDI 장치를 열거하고 사용하기 전에 프로젝트에 다음 네임 스페이스를 추가하십시오.
Windows 사용.장치.열거; Windows 사용.장치.미디; 시스템 사용.스레딩.작업;
을 추가하다 리스트 박스 사용자가 시스템에 첨부 된 MIDI 입력 장치 중 하나를 선택할 수있는 XAML 페이지를 제어합니다. MIDI 출력 장치를 나열하려면 다른 것을 추가하십시오.
그만큼 findallasync 방법 DeviceInformation 클래스는 Windows에서 인식하는 다양한 유형의 장치를 열거하는 데 사용됩니다. MIDI 입력 장치를 찾는 메소드 만 원한다고 지정하려면 미드 디 포트.getDeviceSelector. findallasync 반환 a DeviceInformationCollection 여기에는 a가 포함되어 있습니다 DeviceInformation 시스템에 등록 된 각 MIDI 입력 장치에 대해. 반환 된 컬렉션에 항목이없는 경우 사용 가능한 MIDI 입력 장치가 없습니다. 컬렉션에 항목이있는 경우 DeviceInformation 각 장치의 이름을 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; >// 그렇지 않으면, 연결된 각 입력 장치를 목록에 추가하십시오 < this.midiInPortListBox.Items.Add(deviceInfo.Name); >이것.MidiinportListbox.isenabled = true; >
열거하는 MIDI 출력 장치는 입력 장치 열거 장치와 동일한 방식으로 작동합니다 미들 아웃 포트.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; >// 그렇지 않으면, 연결된 각 입력 장치를 목록에 추가하십시오 < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >이것.MidioutportListbox.isenabled = true; >
장치 감시자 도우미 클래스를 만듭니다
그만큼 창.장치.열거 네임 스페이스를 제공합니다 DeviceWatcher 시스템에서 장치가 추가되거나 제거되거나 장치에 대한 정보가 업데이트 된 경우 앱에 알릴 수 있습니다. MIDI 지원 앱은 일반적으로 입력 및 출력 장치 모두에 관심이 있으므로이 예제는 DeviceWatcher 패턴, 동일한 코드를 중복의 필요없이 MIDI 입력 및 MIDI 출력 장치 모두에 사용할 수 있습니다.
장치 감시자 역할을하기 위해 프로젝트에 새 클래스를 추가하십시오. 이 예에서는 클래스의 이름이 지정됩니다 MyMidideViceWatcher. 이 섹션의 나머지 코드는 도우미 클래스를 구현하는 데 사용됩니다.
클래스에 일부 멤버 변수를 추가하십시오
- ㅏ DeviceWatcher 장치 변경을 모니터링하는 객체.
- 한 인스턴스의 포트 선택기 문자열에 MIDI를 포함하는 장치 선택기 문자열과 다른 인스턴스의 경우 MIDI OUT 포트 선택기 문자열.
- ㅏ 리스트 박스 사용 가능한 장치의 이름으로 채워질 컨트롤.
- ㅏ Coredispatcher UI 스레드 이외의 스레드에서 UI를 업데이트해야합니다.
DeviceWatcher DeviceWatcher; 문자열 deviceSelectorstring; Listbox DeviceListbox; Coredispatcher Coredispatcher;
을 추가하다 DeviceInformationCollection 도우미 클래스 외부에서 현재 장치 목록에 액세스하는 데 사용되는 속성.
public deviceinformationCollection DeviceInformationCollection
클래스 생성자에서 발신자는 MIDI 장치 선택기 문자열을 통과합니다 리스트 박스 장치를 나열하고 디스패처 UI를 업데이트하는 데 필요했습니다.
부르다 DeviceInformation.CreateWatcher 새 인스턴스를 생성합니다 DeviceWatcher 클래스, MIDI 장치 선택기 문자열을 통과합니다.
감시자의 이벤트 핸들러에 대한 핸들러를 등록하십시오.
public mymididevicewatcher (String midideviceselectortring, listbox mididevicelistbox, coredispatcher 디스패처)
그만큼 DeviceWatcher 다음 이벤트가 있습니다
- 추가 – 새 장치가 시스템에 추가 될 때 제기.
- 제거됨 – 시스템에서 장치가 제거 될 때 발생합니다.
- 업데이트 – 기존 장치와 관련된 정보가 업데이트 될 때 제기.
- 열거 된 – 감시자가 요청 된 장치 유형의 열거를 완료했을 때 제기.
이러한 각 이벤트에 대한 이벤트 처리기에서 도우미 방법, updatedevices, 업데이트로 호출됩니다 리스트 박스 현재 장치 목록이 있습니다. 왜냐하면 updatedevices UI 요소를 업데이트하고 이러한 이벤트 처리기는 UI 스레드에서 호출되지 않으므로 각 호출은 전화로 래핑해야합니다 runasync, 지정된 코드가 UI 스레드에서 실행됩니다.
Private Async Void DeviceWatcher_Removed (DeviceWatcher Sender, DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async Void DeviceWatcher_Added (DeviceWatcher Sender, DeviceInformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async Void DeviceWatcher_EnumerationCompleted (DeviceWatcher Sender, Object Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async Void DeviceWatcher_Updated (DeviceWatcher Sender, DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >
그만큼 updatedevices 도우미 방법 호출 DeviceInformation.findallasync 그리고 업데이트 리스트 박스 이 기사에서 앞에서 설명한대로 반환 된 장치의 이름으로.
Private Async void updateVices () < // 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에서.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >>
메소드를 추가하여 감시자를 시작하여 DeviceWatcher 사물 시작 방법을 사용하고 감시자를 중지하기 위해 멈추다 방법.
공개 void StartWatcher () < deviceWatcher.Start(); >공개 무효 스톱워치 ()
감시자 이벤트 핸들러 등록을 해제하고 장치 감시자를 NULL로 설정할 수있는 파괴자 제공.
~ myMidideViceWatcher ()
MIDI 포트를 만들어 메시지를 보내고받습니다
귀하의 페이지의 뒤에있는 코드에서, 회원 변수는 두 가지 인스턴스를 보유하도록 선언합니다 MyMidideViceWatcher 도우미 클래스, 입력 장치 용 및 출력 장치 용 1 개 클래스.
MyMidideViceWatcher InputDeviceWatcher; MyMidideViceWatcher outputDeviceWatcher;
장치 선택기 문자열을 전달하는 Watcher 도우미 클래스의 새 인스턴스를 만듭니다 리스트 박스 인구가 많고 Coredispatcher 페이지를 통해 액세스 할 수있는 객체 디스패처 재산. 그런 다음 메소드를 호출하여 각 객체를 시작합니다 DeviceWatcher.
각각 직후 DeviceWatcher 시작되면 시스템에 연결된 현재 장치를 열거하는 것이 완료되고 증가합니다 열거 된 이벤트는 각각을 일으킬 것입니다 리스트 박스 현재 MIDI 장치로 업데이트하려면.
inputDeviceWatcher = 새로운 MyMidideViceWatcher (Midiinport.getDevicesElector (), MidiinportListbox, Dispatcher); inputDeviceWatcher.startWatcher (); OutputDeviceWatcher = New MyMidideViceWatcher (Midioutport.getDeviceSelector (), MidioutportListbox, Dispatcher); outputDeviceWatcher.startWatcher ();
사용자가 MIDI 입력에서 항목을 선택할 때 리스트 박스, 그만큼 선택이 변경되었습니다 이벤트가 제기됩니다. 이 이벤트의 핸들러에서 액세스하십시오 DeviceInformationCollection 현재 장치 목록을 얻으려면 도우미 클래스의 속성. 목록에 항목이있는 경우 DeviceInformation 인덱스가있는 객체 리스트 박스 통제 수단 선택된 index.
작성 미드 디 포트 호출하여 선택한 입력 장치를 나타내는 개체 미드 디 포트.Fromidasync, 통과 ID 선택한 장치의 속성.
핸들러를 등록하십시오 메시지 받음 지정된 장치를 통해 MIDI 메시지가 수신 될 때마다 발생하는 이벤트.
미디 포트 미니 포트; imidioutport midioutport;
Private Async void midiinportListbox_SelectionChanged (Object Sender, SelectionChangedEventArgs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation DevInfo = DeviceInformationCollection [MidiinportListbox.selectedIndex]; if (devinfo == null) < return; >Midiinport = Midiinport를 기다립니다.Fromidasync (Devinfo.ID); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >미드 디 포트.MessagerEceived += midiinport_messagereceived; >
때 메시지 받음 핸들러가 호출되며 메시지는 메시지 의 속성 MidimessageReceivedEventArgs. 그만큼 유형 메시지 객체의 값은 값입니다 MidimessageType 수신 된 메시지 유형을 나타내는 열거. 메시지의 데이터는 메시지 유형에 따라 다릅니다. 이 예제는 메시지가 메시지의 메모인지 확인하고 MIDI 채널, 메모 및 메시지의 속도를 출력합니다.
Private void midiinport_messagereceived (Midiinport 발신자, MidimessageReceivedeventargs args) < IMidiMessage receivedMidiMessage = args.Message; System.Diagnostics.Debug.WriteLine(receivedMidiMessage.Timestamp.ToString()); if (receivedMidiMessage.Type == MidiMessageType.NoteOn) < System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Channel); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Note); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Velocity); >>
그만큼 선택이 변경되었습니다 출력 장치의 핸들러 리스트 박스 이벤트 핸들러가 등록되지 않는 경우를 제외하고 입력 장치의 핸들러와 동일하게 작동합니다.
Private Async void midioutportListbox_SelectionChanged (Object Sender, SelectionChangedEventArgs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation DevInfo = DeviceInformationCollection [MidioutportListbox.selectedIndex]; if (devinfo == null) < return; >Midioutport = Midioutport를 기다립니다.Fromidasync (Devinfo.ID); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
출력 장치가 생성되면 새를 만들어 메시지를 보낼 수 있습니다 imidimessage 보내려는 메시지 유형의 경우. 이 예에서는 메시지가 a입니다 NOTENMESSAGE. 그만큼 문자 보내 방법의 방법 imidioutport 메시지를 보내도록 객체가 호출됩니다.
바이트 채널 = 0; 바이트 노트 = 60; 바이트 속도 = 127; imidesagage midimessagetosend = 새로운 midinoteonmessage (채널, 참고, 속도); 미들 아웃 포트.SendMessage (midimessagetosend);
앱이 비활성화되면 앱 리소스를 정리하십시오. 이벤트 핸들러 등록을 해제하고 MIDI를 포트로 설정하고 포트 오브젝트를 NULL로 설정하십시오. 장치 감시자를 멈추고 널로 설정하십시오.
inputDeviceWatcher.스톱워치 (); inputDeviceWatcher = null; outputDeviceWatcher.스톱워치 (); outputDeviceWatcher = null; 미드 디 포트.MessagerEceived- = midiinport_messagereceived; 미드 디 포트.처리 (); Midiinport = null; 미들 아웃 포트.처리 (); midioutport = null;
내장 된 Windows General MIDI Synth 사용
위에서 설명한 기술을 사용하여 출력 MIDI 장치를 열거하면 앱은 “Microsoft GS Wavetable Synth”라는 MIDI 장치를 발견합니다. 이것은 앱에서 재생할 수있는 내장 일반 미디 신시사이저입니다. 그러나 프로젝트에 내장 신디사이저의 SDK 확장을 포함하지 않으면이 장치에 MIDI 아웃 포트를 만들려고 시도하면 실패합니다.
앱 프로젝트에 일반 MIDI Synth SDK 확장을 포함하려면
- ~ 안에 솔루션 탐색기, 프로젝트에서 마우스 오른쪽 버튼을 클릭하십시오 참조 그리고 선택하십시오 참조를 추가하십시오.
- 확장 보편적 인 창 마디.
- 선택하다 확장.
- 확장 목록에서 선택하십시오 Universal Windows 앱 용 Microsoft General MIDI DLS.
참고 확장자의 여러 버전이있는 경우 앱 대상과 일치하는 버전을 선택하십시오. 앱이 어떤 SDK 버전을 대상으로하는지 확인할 수 있습니다 애플리케이션 프로젝트 속성의 탭.
Windows 10 MIDI 드라이버 : 몇 단계로 설치하는 방법
다양한 PC 문제를 해결하기 위해 DriverFix를 권장합니다 이 소프트웨어는 운전자를 높이고 실행할 수 있도록하여 일반적인 컴퓨터 오류 및 하드웨어 고장으로부터 안전하게 유지할 수 있습니다. 3 단계의 쉬운 단계로 모든 운전자를 확인하십시오
- DriverFix 다운로드 (검증 된 다운로드 파일).
- 딸깍 하는 소리 스캔 시작 모든 문제가있는 드라이버를 찾기 위해.
- 딸깍 하는 소리 드라이버 업데이트 새로운 버전을 얻고 시스템 오작동을 피하십시오.
- DriverFix는 이번 달 독자 0 명이 다운로드했습니다.
MIDI는 악기 디지털 인터페이스의 기술 용어이며 다양한 뮤지컬 장치에 연결할 수있는 장치로 구성됩니다.
MIDI 드라이버는 원래 컴퓨터에서 키보드를 제어하도록 만들어졌습니다. MIDI 드라이버는 수년에 걸쳐 진화했으며 현재는 수백만 명의 Windows 10 사용자가 지구 전역에 사용했습니다.
특정 사례는 Windows 10 Bluetooth MIDI 드라이버와 관련하여 더욱 섬세한 것처럼 보이며 Windows에 의해 쉽게 인식되지 않을 수 있습니다.
Windows 10은 Bluetooth를 통해 MIDI를 지원합니다?
그렇습니다. 단순히 열기 설정 당신의 PC에서 장치, 그 다음에 Bluetooth 및 기타 장치. 여기에서 선택하십시오 블루투스 그리고 당신의 장치를 페어링하십시오.
그러나 일부 사용자는 Windows 업데이트 후 MIDI 장치가 더 이상 인식되지 않았다고보고했습니다. 그것이 당신의 경우라면, 여기’우리가 제안한 것 :
- 연결된 모든 MIDI 장치를 삭제하고 다시 페어링하십시오 (위와 같이)
- 작업 표시 줄의 볼륨 아이콘을 마우스 오른쪽 버튼으로 클릭하고 선택하십시오 소리. MIDI 장치가 없으면 선택하십시오 연결이 끊어 지거나 비활성화 된 장치를 표시합니다 그리고 그것이 도움이되는지 확인하십시오.
Windows 10에 MIDI 드라이버를 어떻게 설치합니까??
1. Windows 문제 해결사를 사용하십시오
- 로 이동하십시오 작업 표시 줄 검색 창.
- 유형 문제 해결.
- 선택하다 문제 해결 목록에서.
- 선택하다 하드웨어 및 장치 문제 해결사에서.
- 문제 해결사가 열리면 클릭하십시오 다음.
- 인구가없는 목록에서 작동하지 않는 프로그램을 선택하십시오.
- 원하는 문제 해결 옵션을 선택하십시오.
대부분의 하드웨어는 플러그 앤 플레이입니다. 이것은 단지 컴퓨터에 연결하고 컴퓨터가 올바른 드라이버를 설치한다는 것을 의미합니다.
이것은 그렇지 않습니다’t는 항상 사용자에게 운동을합니다’ 호의와 다이버는 다른 소스에서 다운로드해야합니다. 시간을내어 드라이버를 찾기 전에 다음과 같은 작업을 수행하여 문제를 해결합니다
문제 해결사는 프로그램이 작동하는지 확인하기 위해 프로그램을 테스트합니다. 호환되지 않는 다른 프로그램에 대한 호환성 문제 해결사를 실행하십시오.
호환되지 않습니다? 문제가 아니다
- 작업 표시 줄 검색 상자를 클릭하십시오.
- 유형 프로그램 실행.
- 선택하다 이전 버전의 Windows 용 프로그램을 실행하십시오.
- 이것은 열립니다 호환성 문제 해결사.
- 화면 프롬프트를 따르십시오.
그래서 당신은’VE는 문제 해결사를 실행하려고 시도했지만 그랬습니다’T 일. 저것’좋아, 다시 일어나서 다시 시도해보십시오. 프로그램 버전의 Windows와 호환되는 방법이 있습니다. 여기’S 방법 :
드라이버가 필요한 각 프로그램에 대한 호환성 문제 해결사를 실행하는지 확인하십시오.
전문가 팁 :
후원
오래된 드라이버는 오류 및 시스템 문제의 주된 이유입니다. 일부 파일이 누락되거나 충돌하는 경우 자동화 된 솔루션과 같은 드라이버 픽스 몇 번의 클릭만으로 이러한 문제를 해결할 수 있습니다. 또한 시스템에서도 가볍습니다!
Windows 문제 해결사에 문제가 있습니까?? 여기’문제 해결이 중단 된 경우 문제 해결에 대한 훌륭한 가이드입니다.
2. 드라이버를 검색하십시오
드라이버를 수동으로 설치하는 것이 다음 옵션입니다. 알 수 없거나 인식 할 수없는 소스에서 드라이버를 다운로드하는 경우 운전자의 수동 설치가 위험 할 수 있습니다.
모든 드라이버가 제조업체와 같은 신뢰할 수있는 소스에서 다운로드되도록’ 웹 사이트.
드라이버를 자동으로 업데이트합니다
당신이하지 않으면’t 최신 사용 가능한 드라이버를 위해 웹을 수동으로 검색하는 데 어려움을 겪고 싶을 때 자동으로 수행 할 타사 드라이버 업데이트 소프트웨어를 사용하는 것이 좋습니다.
소프트웨어는 펌웨어를 쉽게 업데이트 할뿐만 아니라 새로운 드라이버를 위해 기기를 지속적으로 스캔하므로’T조차 그렇게해야합니다.
삼. 호환 모드에서 실행됩니다
- 당신의 프로그램을 찾으십시오’RE를 찾고 있습니다 호환 모드.
- 프로그램을 마우스 오른쪽 버튼으로 클릭하고 선택하십시오 속성.
- 클릭하십시오 호환성 탭.
- 호환성 모드에서 상자를 클릭하십시오.
- 프로그램이 작업 할 수있는 Windows 버전을 선택하십시오.
- 클릭 적용하다.
대부분의 프로그램에는 호환 모드에서 실행할 수있는 옵션이 있습니다. 이 모드에서 프로그램을 실행하려면 위에서 언급 한 단계를 수행하십시오.
이 주제에 대해 자세히 알아보십시오
- Windows 10에서 드라이버 위반 오류를 수정하십시오
- Windows 11에서 오래된 드라이버 오류를 수정하는 방법
- Windows는 드라이버를 다운로드 할 수 없습니다? 이 솔루션으로 지금 수정하십시오
- Windows 10에서 acpi_driver_internal 오류를 수정하십시오
- 드라이버 오류 코드보기 32? 4 가지 간단한 단계로 수정하십시오
4. 다른 모든 것이 실패 할 때
MIDI 드라이버는 여러 호환성 문제로 인해 Windows 10에 설치하기가 매우 어렵습니다. 이 기사에 언급 된 각 수정 사항은 잠재적으로 운전자의 문제를 해결할 수 있습니다.
만약 너라면’VE 옵션이 부족하여 장치의 제조업체에 전화하여 도움을 요청하거나 호환되는 드라이버의 위치를 요청하십시오.
저것’이 기사에 대해 그것에 대해. 주제와 관련하여 추가해야 할 것이 있다면 아래의 의견 섹션에서 자유롭게하십시오.
- 운전사
- Windows 10 가이드
Windows 10의 MIDI 향상
Windows 10이 발전함에 따라 우리는 음악가 중심 기술을 계속 지원하고 있습니다.
허락하다’s 미디를 살펴보십시오. Windows는 MIDI 지원이 16 비트로 돌아가는 내장을 내장했습니다. 그 이후로, 대부분의 MIDI 인터페이스는 USB로 이동했으며 우리의 인 박스 지원은 새로운 인터페이스를 지원하는 클래스 드라이버 및 API와 함께 속도를 유지했습니다.
음악 기술에 익숙하지 않은 사람들은 미디를 단지로 생각할 수 있습니다 .중간 음악 파일. 그러나 그것은’미디가 실제로 무엇을하는지의 작은 부분 일뿐. 1983 년 표준화 이후 MIDI는 음악 제작에서 가장 많이 사용되고 가장 중요한 커뮤니케이션 프로토콜을 유지했습니다. 그것’신디사이저 및 시퀀서 제어 및 세트 목록의 패치 변경, 믹서 동기화 및 MIDI 컨트롤 표면을 사용하여 팟 캐스트에서 카메라를 전환하는 데 필요한 모든 것에 사용됩니다. Arduino Firmata 프로토콜조차도 MIDI를 기반으로합니다.
이 게시물에서 우리는’우리가 몇 가지 새로운 것들에 대해 이야기합니다’VE는 MIDI를 앱에서 더 유용하게 만들기 위해 만들었습니다
- UWP MIDI 기본 사항 – Windows 스토어 앱에서 MIDI 사용
- Windows 10 기념일 업데이트의 새로운 Bluetooth LE MIDI 지원
- UWP MIDI 용 Win32 래퍼 (API를 데스크탑 앱에 액세스 할 수 있도록)
- C# 및 PowerShell 용 MIDI 헬퍼 라이브러리
또한 지난 여름 Windows 10이 출시되었을 때 여러 오디오 중심 향상을 포함 시켰습니다. 이러한 개선 사항에는 다음이 포함되었습니다. WASAPI에 대한 낮은 장기 개선, 추가 드라이버는 파트너와 협력하여 Surface와 같은 최신 Windows 10 장치 및 950/950XL과 같은 휴대폰에서 더 낮은 대기 시간을 위해 더 작은 버퍼를 옵트 인으로 작동합니다. 대기 시간에 대한 DSP없이 원시 오디오 처리를 가능하게하는 조정; 새로운 저도의 UWP 오디오 및 효과 API라는 Audiograph; 물론 새로운 UWP MIDI API.
우리’VE는 최근 몰입 형 경험을위한 공간 오디오에 대한 지원을 추가했습니다. 지난 가을, 1511 업데이트에서 우리는 Thunderbolt 3 오디오 장치에 대한 매우 미래 지향적 인 OS 지원을 활성화하여’제조업체가 이러한 장치 및 고성능 오디오 드라이버 생성을 시작할 때. 누적 적으로, 이것은 Windows Engineering의 많은 훌륭한 작업이었습니다.
UWP MIDI 기본
작년 Windows 10 RTM에서는 거의 모든 Windows 10 장치에서 UWP 앱에 액세스 할 수있는 새로운 MIDI API를 도입하여 이러한 MIDI 인터페이스에 액세스 할 수있는 최신 방법을 제공합니다. 우리는 새로운 MIDI 인터페이스를 지원할 수있는 고성능 및 유연한 기반을 제공하기 위해이 API를 만들었습니다.
우리는 원래이 API를 Windows 8에서 Nuget 패키지로 댓글을 달아주었습니다.1 앱 개발자로부터 많은 피드백을 받았습니다. Windows 10에서 보는 것은 해당 피드백과 테스트의 직접적인 결과입니다.
API는 UWP의 장치 열거 및 Watcher API와 함께 잘 연결되어 앱이 실행중인 동안 핫 플러그/플러그를 쉽게 감지 할 수 있습니다.
여기’C#을 사용하여 MIDI 장치 및 ID 목록을 얻는 간단한 방법입니다
Windows 사용.장치.미디;
Windows 사용.장치.열거;
…
Private Async void ListMidideVices ()
// 입력 장치를 열거합니다
var devicelist = DeviceInformation을 기다립니다.findallasync (
미드 디 포트.getDeviceSelector ());
foreach (devicelist의 var deviceinfo)
체계.진단.디버그.Writeline (DeviceInfo.ID);
체계.진단.디버그.Writeline (DeviceInfo.이름);
체계.진단.디버그.Writeline ( “———-“);
>
// 출력 장치는 같은 방식으로 열거되어 있지만
// midioutport 사용.getDeviceSelector ()
>
그리고 여기’s 감시자를 설정하고 열거/감시자 이벤트를 처리하고 연결된 인터페이스 목록을 얻는 방법. 이것은 조금 더 많은 코드이지만 그것입니다’대부분의 앱에 더 적절한 접근 방식입니다
개인 void StartWatchingInputDevices ()
var watcher = deviceinformation.생물체 (CreateWatcher)
미드 디 포트.getDeviceSelector ());
당직자.추가 += onmidiinputDeviceadded;
당직자.제거 += OnMidiinputDevicerEmoved;
당직자.EnumerationCompleted += OnMidiinputDeviceEnumerationCompleted;
개인 void onmidiinputDeviceEnumerationCompleted (
DeviceWatcher Sender, Object Args)
// 초기 열거가 완료되었습니다. 이것은 언제입니다
// 인터페이스 목록을
// 응용 프로그램 사용자.
>
개인 void onmidiinputDevicerEmoved (
DeviceWatcher Sender, DeviceInformationUpdate args)
// MIDI 입력 장치 제거를 처리합니다
>
개인 void onmidiinputDeviceadded (
DeviceWatcher Sender, DeviceInformation Args)
// 새로운 MIDI 입력 장치 추가 처리
>
기기 목록에 감시자를 사용하고 추가/제거 처리는 앱에서 팔로우하는 모범 사례입니다. 아무도 MIDI 컨트롤러를 연결하거나 켜는 것을 잊었 기 때문에 앱을 다시 시작하고 싶지 않습니다. 감시자를 사용하면 앱이 런타임에 추가/제거를 적절하게 처리 할 수 있습니다.
API는 모든 표준 메시지에 강력하게 입력 된 클래스와 Sysex 및 버퍼 기반 작업을 지원하는 클래스와 함께 사용하기 간단합니다. 이 C# 예제는 입력 및 출력 포트를 열고 특정 MIDI 메시지에 응답하는 방법을 보여줍니다.
Windows 사용.장치.미디;
Windows 사용.장치.열거;
…
개인 비동기 void midiexample ()
String outportId = “장치 열거를 통해 얻는 ID”;
String inportId = “장치 열거를 통해 얻는 ID”;
// 출력 포트를 열고 메시지를 보냅니다
var Outport = MIDIOUTPORT를 기다립니다.Fromidasync (OutportId);
VAR NOTENMESSAGE = NEW MIDINOTEONMESSAGE (0, 110, 127);
외항.SendMessage (NoteOnMessage);
// 입력 포트를 열고 메시지를 듣습니다
var inport = Midiinport를 기다립니다.Fromidasync (inportid);
inport.MessagerEceived += onmidimessageReceived;
>
개인 void onmidimessageReceived (Midiinport 발신자,
midimessageReceivedEventArgs Args)
스위치 (Args.메시지.유형)
CASE MIDIMESSSAGETYPE.Noteon :
부서지다;
CASE MIDIMESSSAGETYPE.다 식기 압력 :
부서지다;
// 등.
>
>
대부분의 경우 메시지의 유형을 검사 한 다음 Windows에 정의 된 강력한 메시지 중 하나에 Imidimessage를 시전합니다.장치.MidinoteonMessage 또는 MidipitchbendChangemessage와 같은 MIDI 네임 스페이스. 너’그러나이를 수행 할 필요는 없습니다. 선호하는 경우 항상 원시 데이터 바이트에서 작업 할 수 있습니다.
Windows 10 UWP MIDI API는 모든 종류의 음악 중심 Windows 스토어 앱을 만드는 데 적합합니다. 제어 표면, 시퀀서, 신디사이저, 유틸리티 앱, 패치 사서, 조명 컨트롤러, 고전압 테슬라 코일 신디사이저 등을 만들 수 있습니다.
오래된 MIDI API와 마찬가지로 Windows 10 UWP MIDI API는 Tobias Erichsen과 같은 타사 애드온과 잘 작동합니다’훌륭한 RTPMIDI 드라이버, 유선 및 Wi-Fi 네트워킹을 통해 MIDI에 대한 지원 제공.
새로운 API의 큰 특징 중 하나는 그것이 다중 클라이언트라는 것입니다. 포트 오픈이있는 모든 앱이 Windows 10 UWP MIDI API를 사용하는 한 이전 Win32 MME 또는 Directmusic API가 아닌 동일한 장치를 공유 할 수 있습니다. 이것은 오래된 apis 돈입니다’T 사용자 정의 드라이버없이 처리하고 파트너 및 고객의 일반적인 요청이었습니다.
마지막으로, 그것은’S Windows 10 UWP MIDI API는 클래스 드라이버를 사용하든 자체 사용자 지정 드라이버를 사용하든 모든 인식 된 MIDI 장치와 함께 작동합니다. 여기에는 Windows 10에서 드라이버로 구현 된 많은 소프트웨어 기반 MIDI 유틸리티가 포함됩니다.
UWP MIDI의 새로운 Bluetooth LE MIDI 지원
멀티 클라이언트 지원 및 개선 외에도’성능과 안정성에서 만들어진 VE Windows 10 UWP MIDI API를 사용해야하는 좋은 이유는 새로운 표준 및 전송에 대한 지원 때문입니다.
Microsoft는 MIDI 표준 프로세스에 적극적으로 참여하며 실무 그룹에 담당자가 있습니다. Microsoft 내부에는 MIDI 표준의 창조, 심사 및 투표에 직접 참여하고 일반적인 오디오에 직접 참여하는 우리 중 몇 명이 있습니다.
빠르게 인기를 얻은 흥미롭고 비교적 새로운 MIDI 표준 중 하나는 Bluetooth Le Midi입니다. Microsoft는 Apple 이이 공간에서 한 선구자 작업에 따라 표준을 비준하기로 투표했습니다. 결과적으로 Apple, Microsoft 등은 뮤지션 커뮤니티에서 실제 견인을보고있는 표준과 호환되며 이미 많은 호환되는 주변 장치가 있습니다.
Windows 10 Anniversary Edition에서’Wind.
Windows 10 Anniversary Edition에서’Wind. 인터페이스 자체는 단순히 MIDI API에 의해 표면 된 또 다른 투명 전송이기 때문에 코드를 변경할 필요가없는 추가입니다.
이러한 유형의 MIDI 인터페이스. 현재 PC 자체는 할 수 있습니다’말초가되지만 우리는 우리’미래를 위해 그것을보고 있습니다. Bluetooth LE MIDI에 대한 훌륭한 DIN MIDI 및 유사한 어댑터가 있지만 PC가 Bluetooth LE 기능을 사용할 수있는 한 Windows 10의 Bluetooth LE MIDI에는 추가 하드웨어가 필요하지 않습니다.
우리는 음악가에게 대기 시간이 중요하다는 것을 알고 있으므로 구현이 다른 플랫폼과 경쟁하고 있는지 확인했습니다. 물론, Bluetooth는 유선 USB 연결보다 대기 시간이 높지만 케이블 클러 터를 제거하는 데 가치가 있습니다.
페어링되면 Bluetooth Le MIDI 주변 장치는 장치 탐색기의 MIDI 장치로 표시되며 UWP MIDI 장치 열거에 자동으로 포함됩니다. 이것은 응용 프로그램에 완전히 투명합니다.
Bluetooth Le MIDI 장치를 포함한 장치를 발견하고 페어링하는 방법에 대한 자세한 내용은 GitHub의 장치 열거 및 페어링 예제를 참조하십시오.
파트너 및 고객 피드백의 직접적인 결과로 Windows 10 Anniversary Edition 에이 기능을 추가했습니다. 나’M은 Windows 10의 Bluetooth Le Midi와 Windows 10에서 사용할 수있는 장치에 대해 정말로 흥분합니다.
UWP MIDI API에 대한 데스크탑 응용 프로그램 지원
우리는 음악을 만들 때 대다. UWP MIDI API는 데스크탑 애플리케이션에 액세스 할 수 있지만 다른 언어 및 빌드 환경에서 UWP API에 액세스하는 것이 어려울 수 있음을 알고 있습니다.
새로운 API를 사용하여 데스크탑 앱 개발자를 돕고 마찰을 줄이기 위해 WDG/PAX Spark 팀의 동료 인 Dale Stammen.
이 API 래퍼를 포함하여 우리 팀이하는 작업은 대부분 파트너 중심입니다. 즉, 요청 및 피드백의 결과로 파트너가 Windows에서 성공할 수있는 물건을 만듭니다. 이를 만들 때 우리와 함께 일한 파트너 중 하나는 Cakewalk입니다.
이것이 UWP MIDI API의 Win32 래퍼와 Bluetooth Le Midi에 대한 지원에 대해 개발자가 말한 것입니다
“우리’Microsoft가 Bluetooth MIDI 사양을 지원하고 단순화 된 API를 통해 Windows 개발자에게 노출되는 것을 보게되어 기쁩니다. UWP MIDI API의 새로운 Win32 래퍼를 사용하여 Bluetooth MIDI 지원을 매우 빠르게 프로토 타입 할 수있었습니다. 케이크 워크에서 우리’무선 주변 장치를 지원하기 위해 앞서고 있으므로 이것은 Microsoft의 매우 환영받는 추가입니다.”
Noel Borthwick, CTO, Cakewalk
우리는 CakeWalk와 같은 훌륭한 파트너와 함께 일하는 것을 좋아합니다.
이 Win32 래퍼는 플랫 Win32 API와 마찬가지로 API를 간단하게 사용합니다. Windows 10 UWP MIDI API의 모든 기능을 표면하고 Win32 응용 프로그램의 요구 사항을 UWP 인식으로 제거합니다. 또한, 거기’s C ++/CX를 사용하거나 빌드 도구 및 프로세스를 변경할 필요가 없습니다. 여기’S A C ++ Win32 콘솔 앱 예 :
// MIDI를 열어 포트 0
결과 = gmidioutportopenfunc (midiptr, 0, & gmidioutport);
if (결과 != winrt_no_error)
Cout Goto Cleanup;
>
// MIDI OUT 포트에 메시지에 메모를 보내십시오
서명되지 않은 숯 버퍼 [3] = < 144, 60 , 127 >;
Cout gmidioutportsendfunc (gmidioutport, buffer, 3);
// 미디 아웃 포트에 메모 오프 메시지 보내기
Cout 버퍼 [0] = 128;
gmidioutportsendfunc (gmidioutport, buffer, 3);
이 API는 기존 Win32 응용 프로그램으로 작업하는 데 최적화되어 있으므로 Win32 Music App Developers가.
우리’API 래퍼의 파트너 및 개발자로부터 여전히 피드백을 받고 있으며 귀하의 것을 좋아할 것입니다. GitHub에서 소스 코드를 찾을 수 있습니다. 나중에 위치를 변경할 수 있으므로 일명.MS Link (http : // aka.ms/win10midiwin32)는 당신이 편리하고 싶은 것입니다.
최근 버전의 Visual Studio를 사용하는 개발자를 위해’VE는 또한 편리한 Nuget 패키지를 제공했습니다.
우리’다시 Desktop App Partners와 함께이 래퍼를 사용 하여이 API와 Windows 10의 다른 오디오 및 사용자 경험 향상을 사용하여 응용 프로그램에 통합했습니다. 프로 음악가를 대상으로 한 데스크탑 앱이 있고 질문이 있으시면 트위터의 @pete_brown 또는 Pete Dot Brown에서 저에게 연락하십시오.
Windows 스토어 앱 용 MIDI 헬퍼 라이브러리
Win32 API 래퍼 외에도 상점 앱 개발자 및 PowerShell 사용자를위한 작은 도우미 라이브러리도 있습니다.
첫 번째는 C#, VB 및 C ++ Windows 스토어 앱 용 Windows 10 UWP MIDI API 도우미입니다. 이것은 MIDI 장치를 쉽게 열거하고 XAML의 결과에 바인딩하고 핫 플러그/플러그 변경에 응답 할 수 있도록 설계되었습니다. 그것’s 소스 및 컴파일 된 Nuget 패키지로 사용 가능.
장치 정보 인스턴스에 대한 XAML 친화적 인 바인딩 가능 / 관찰 가능한 컬렉션이 포함 된 감시자 클래스가 포함됩니다.
RPN 및 NRPN 메시지
또한 헬퍼 라이브러리에는 RPN (등록 매개 변수 번호) 및 NRPN (등록되지 않은 매개 변수 번호) 메시지를 지원하는 코드가 포함되어 있습니다. 이들은 새로운 개발자가 함께 일하기가 더 어려울 수 있습니다. 이들은 함께 집계 된 여러 다른 메시지로 구성된 논리적 메시지이기 때문에 연속으로 전송됩니다.
우리는 창문을 노출했기 때문입니다.장치.미디.UWP의 imidesagage 인터페이스 및 기본 MIDI 출력 코드는 버퍼에있는 모든 것을 보내므로 강력하게 입력 된 집계 메시지 클래스를 생성합니다. 메시지를 보낼 때이 클래스를 다른 강력하게 입력 한 MIDI 메시지와 마찬가지로이 클래스를 사용합니다.
나’M 제안 된 MPE (다차원 폴리 포닉 발현)에 대한 지원을 통합하고 수신 RPN 및 NRPN 메시지를 구문 분석 및 집계하는 것에 대한 조사. 이러한 기능이 자신의 앱에서 유용한 경우 저에게 연락하여 알려주십시오.
미디 시계 생성기
라이브러리가 포함 된 다른 작품 중 하나는 미디 시계 생성기입니다. 미디 클록 생성기 (시퀀서 제어 루프가 아니라 나가는 클럭 메시지를 생성하기 위해)가 필요한 경우 라이브러리에는 유용한 구현이 포함되어 있습니다. 여기’c#에서 사용하는 방법 :
private midiclockgenerator _clock = 새로운 midiclockgenerator ();
…
_시계.SendMidistArtMessage = true;
_시계.sendmidistopmessage = true;
foreach (DeviceInformation info in DeviceWatcher.outputportDescriptors)
var port = (midioutport) Midioutport를 기다립니다.Fromidasync (정보.ID);
if (포트 != null)
_시계.출력 포트.추가 (포트);
>
public void startClock ()
_시계.시작();
>
공개 void stopclock ()
_시계.멈추다();
>
내 github Repo에는 C ++/CX 소스와 C#/XAML 클라이언트 앱이 포함됩니다. 따로 : 이것은 나의 첫 C ++/CX 프로젝트였습니다. 대부분의 작업에서 C#이 더 쉬운 것을 여전히 발견했지만 여기에서 C ++ CX가 접근하기 쉬운 것으로 나타났습니다. 만약 너라면’C ++ CX 사용에 대해 생각한 C# 개발자, 소용돌이를 줘. 당신은 당신이 기대하는 것보다 더 친숙하다는 것을 알 수 있습니다!
이 라이브러리는 개발자가 Windows 스토어에서 MIDI 앱의 모범 사례를 따르는 데 도움이됩니다. 데스크탑 앱과 마찬가지로’여기에 음악가 중심 앱을 구축하고 질문이 있습니다. Twitter의 @pete_brown 또는 Pete Dot Brown에서 저에게 연락하십시오. Microsoft Dot Com.
두 번째 헬퍼 라이브러리는 Windows 10 UWP MIDI API 사용을위한 PowerShell 명령 세트입니다. 나’VE는 대규모 설치에서 다양한 믹서를 동기화하기 위해 MIDI 업데이트의 스크립팅을 자동화하기 위해 이것을 사용하는 개인과 대화했습니다 “접착제” 다른 장치간에 메시지를 변환합니다. 거기’당신은 Windows 10에서 PowerShell과 함께 할 수있는 일을 많이하고 이제는 MIDI가 그 일부입니다. 리포에는 사용 예제가 포함되어 있으므로 이겼습니다’여기서 반복하십시오.
결론
나’M 음악가와 음악 앱 개발자가 Windows에서 오디오 공간에서 계속하는 작업에 대해 정말 흥분됩니다.
모두 UWP MIDI API, UWP MIDI API 용 WIN32 래퍼 및 Windows 스토어 앱 및 PowerShell 스크립팅 용 도우미 라이브러리 및 Bluetooth MIDI를 포함하여 Windows 10의 최신 MIDI 기술을 활용할 수 있도록합니다.
나’M이 API를 지원할 다가오는 데스크탑 및 Windows 스토어 앱과 Bluetooth Le Midi와 같은 기술을 정말 기대합니다. 위에서 언급했듯이 저에게 직접 연락하십시오’프로 뮤지션-표적화 된 앱을 구축하고지도가 필요하거나 다른 질문이 필요합니다.
자원
- UWP 앱 개발을 시작하십시오
- 장치.MIDI 네임 스페이스 문서
- 공식 Windows 10 UWP MIDI API 샘플
- Win32 MIDI 래퍼를위한 Github Repo
- 피트’S Github는 MIDI 및 오디오 프로젝트와 함께 저장합니다
- Win32 MIDI 래퍼 용 Nuget 패키지
- Pete Brown Summer Namm 2015 Windows 10에 대한 기조 연설
- 미디 협회
- 손바닥의 스튜디오 : Windows 10 용 오디오 및 비디오 제작 앱 개발
- UWP의 오디오 그래프를 사용한 공간 오디오
- UWP 앱 및 게임의 공간 오디오
시작하려면 Visual Studio를 다운로드하십시오.
Windows 팀은 귀하의 의견을 듣고 싶습니다. Windows 개발자 Uservoice 사이트를 사용하여 피드백을 계속하십시오. 직접 버그가있는 경우 Windows 10에 직접 구축 된 Windows 피드백 도구를 사용하십시오.
미디 포트 드라이버
MIDI 포트 드라이버는 MIDI 신디사이저 또는 캡처 장치를 관리합니다. 어댑터 드라이버는 MIDI 포트 드라이버에 바인딩하는 해당 MIDI MINIPORT 드라이버를 제공하여 MIDI 스트림을 캡처하거나 렌더링 할 수있는 MIDI 필터 (MIDI 및 DirectMusic 필터 참조)를 형성합니다.
MIDI 포트 드라이버는 iportmidi 인터페이스를 Miniport 드라이버에 노출시킵니다. iportmidi 기본 인터페이스 iport의 메소드를 상속합니다. iportmidi 다음 추가 방법을 제공합니다
포트 드라이버에게 MIDI 신디사이저 또는 캡처 장치가 MIDI 스트림에서 새로운 위치로 발전했음을 알립니다. iportmidi :: RegisterServiceGroup
포트 드라이버에 서비스 그룹 객체를 등록합니다. 서비스 그룹에는 Miniport 드라이버가 호출 할 때 호출 할 하나 이상의 서비스 루틴 목록이 포함되어 있습니다 알림; 자세한 내용은 서비스 싱크 및 서비스 그룹 객체를 참조하십시오.
MIDI 포트 및 미니 포트 드라이버 객체는 각자의 iportmidi 및 iminiportmidi 인터페이스. Miniport 드라이버는 포트 드라이버를 사용합니다 iportmidi 인터페이스는 포트 드라이버에 하드웨어 인터럽트를 알리는 인터페이스입니다. 또한 포트 드라이버는 iminiportmidistream 인터페이스를 통해 Miniport 드라이버 스트림 객체와 통신합니다.
Windows XP와 나중에 iportmidi IportdMus 인터페이스는 단일 내부 드라이버 모듈에서 구현됩니다. 이 통합은이 두 인터페이스의 유사성에 의해 촉진됩니다. 예를 들어, 동일한 메소드가 두 인터페이스에 대해 정의됩니다. 이전 버전의 Windows에 대해 작성된 응용 프로그램은 iportmidi 그리고 iportdmus MIDI 및 DMUS 포트 드라이버의 통합으로 인한 인터페이스.
피드백
제출하고 피드백을 봅니다
Windows 10의 MIDI 향상
최근 Microsoft의 Pete Brown은 Windows 10의 MIDI 향상에 관한 매우 유익한 블로그 게시물을 게시했습니다.
블로그 게시물은 다음을 포함한 여러 주제를 다룹니다
- UWP MIDI 기본 사항 – Windows 스토어 앱에서 MIDI 사용
- Windows 10 기념일 업데이트의 새로운 Bluetooth LE MIDI 지원
- UWP MIDI 용 Win32 래퍼 (API를 데스크탑 앱에 액세스 할 수 있도록)
- C# 및 PowerShell 용 MIDI 헬퍼 라이브러리
Windows 10의 MIDI 향상 | Windows 용 앱 구축
“우리는 Microsoft가 Bluetooth MIDI 사양을 지원하고 단순화 된 API를 통해 Windows 개발자에게 노출되는 것을 보게되어 기쁩니다. UWP MIDI API의 새로운 Win32 래퍼를 사용하여 Bluetooth MIDI 지원을 매우 빠르게 프로토 타입 할 수있었습니다. CakeWalk에서 우리는 무선 주변 장치를 지원하기 위해 앞서고 있기 때문에 이것은 Microsoft의 매우 환영받는 추가 기능입니다.”
Noel Borthwick, CTO, Cakewalk
Pete의 기사에 RPN 및 NRPN이 작동하는 방식 및 데이터 구조에 대한 좋은 설명도 있습니다.
Windows 10이 출시되면서 3 개의 주요 운영 체제 회사 (Apple, Google 및 Microsoft)는 모두이 사이트의 사양 섹션에서 찾을 수있는 Bluetooth 저 에너지를 통한 MIDI의 MIDI 제조업체 협회 표준에 대한 지원을 개발했습니다.