Udostępnij przez


Zarządzanie MIDI Thru

Urządzenie wejściowe MIDI można podłączyć bezpośrednio do urządzenia wyjściowego MIDI, aby gdy urządzenie wejściowe odbiera komunikat MIM_DATA, system wysyłał komunikat z tymi samymi danymi zdarzenia MIDI do sterownika urządzenia wyjściowego. Aby podłączyć urządzenie wyjściowe MIDI do urządzenia wejściowego MIDI, użyj funkcji midiConnect.

Aby uzyskać najlepszą możliwą wydajność przy użyciu wielu danych wyjściowych, aplikacja może wybrać, aby dostarczyć specjalną formę sterownika wyjściowego MIDI, nazywanym sterownikiem thru. Mimo że system umożliwia podłączenie tylko jednego urządzenia wyjściowego MIDI do urządzenia wejściowego MIDI, wiele urządzeń wyjściowych MIDI można podłączyć do sterownika thru. Aplikacja w takim systemie może podłączyć urządzenie wejściowe MIDI do tego urządzenia thru i podłączyć urządzenie MIDI thru do takiej liczby urządzeń wyjściowych MIDI, jaka jest potrzebna. Aby uzyskać więcej informacji na temat sterowników thru, zobacz dokumentację sterowników urządzeń z systemem Windows.

Zarządzanie nagrywaniem MIDI przy użyciu komunikatów

Następujące wiadomości można wysłać do okna lub procedury wywołania zwrotnego wątku do zarządzania nagraniem MIDI.

Wartość Znaczenie
MM_MIM_CLOSE Wysyłane po zamknięciu urządzenia wejściowego MIDI za pomocą funkcji midiInClose.
MM_MIM_DATA Wysłane po odebraniu pełnej wiadomości MIDI. (Ten komunikat jest używany dla wszystkich wiadomości MIDI z wyjątkiem wiadomości system-exclusywnych).
MM_MIM_ERROR Wysłane po odebraniu nieprawidłowej wiadomości MIDI. (Ten komunikat jest używany dla wszystkich komunikatów MIDI z wyjątkiem wyłącznych komunikatów systemowych).
MM_MIM_LONGDATA Wysłane, gdy odebrany zostanie kompletny komunikat o wyłączności systemu MIDI lub gdy bufor zostanie zapełniony danymi o wyłączności systemu.
MM_MIM_LONGERROR Wysłane po odebraniu nieprawidłowej wiadomości ekskluzywnej systemowej MIDI.
MM_MIM_MOREDATA Wysyłane, gdy aplikacja nie przetwarza MIM_DATA komunikatów wystarczająco szybko, aby nadążyć za sterownikiem urządzenia wejściowego.
MM_MIM_OPEN Wysyłane po otwarciu urządzenia wejściowego MIDI za pomocą funkcji midiInOpen.

 

Parametr wParam i parametr lParam są skojarzone z każdym z tych komunikatów. Parametr wParam zawsze określa uchwyt otwartego urządzenia MIDI. Parametr lParam jest nieużywany dla komunikatów MM_MIM_CLOSE i MM_MIM_OPEN.

W przypadku komunikatu MM_MIM_LONGDATAlpMidiHdr określa adres struktury MIDIHDR, która identyfikuje bufor dla komunikatów wyłącznego użycia systemowego. Bufor może nie być całkowicie wypełniony, ponieważ rozmiar komunikatów systemowo-wyłącznych zwykle nie jest znany przed ich zarejestrowaniem, oraz ponieważ trzeba przydzielić bufory, których całkowity rozmiar może pomieścić największy oczekiwany komunikat. Aby określić ilość prawidłowych danych znajdujących się w buforze, użyj składowej dwBytesRecorded struktury MIDIHDR.

Używanie funkcji wywołania zwrotnego do zarządzania nagraniem MIDI

Możesz zdefiniować własną funkcję wywołania zwrotnego, aby zarządzać nagrywaniem dla urządzeń wejściowych MIDI. Funkcja wywołania zwrotnego jest udokumentowana jako MidiInProc.

Następujące komunikaty można wysłać do wMsg parametru MidiInProc funkcji wywołania zwrotnego.

Wartość Znaczenie
MIM_CLOSE Wysyłane po zamknięciu urządzenia za pomocą funkcji midiInClose.
MIM_DATA Wysyłane po odebraniu pełnej wiadomości MIDI (ta wiadomość jest używana dla wszystkich komunikatów MIDI z wyjątkiem wiadomości systemowych z wyłącznym przesyłem).
MIM_ERROR Wiadomość wysłana po otrzymaniu nieprawidłowej wiadomości MIDI (używana dla wszystkich nieprawidłowych komunikatów MIDI z wyjątkiem komunikatów systemowych wyłącznych).
MIM_LONGDATA Wysłane, gdy zostanie odebrany pełny komunikat z wyłącznym systemem MIDI lub gdy bufor został wypełniony danymi wyłącznymi dla systemu.
MIM_LONGERROR Wysyłane po odebraniu nieprawidłowej wiadomości systemowej typu exclusive MIDI.
MIM_MOREDATA Wysyłane, gdy aplikacja nie przetwarza MIM_DATA komunikatów wystarczająco szybko, aby nadążyć za sterownikiem urządzenia wejściowego.
MIM_OPEN Wysyłane po otwarciu urządzenia wejściowego MIDI za pomocą funkcji midiInOpen.

 

Te komunikaty są podobne do tych wysyłanych do funkcji procedury okna, ale parametry są różne. Uchwyt otwartego urządzenia MIDI jest przekazywany jako parametr do funkcji wywołania zwrotnego, wraz z podwójnym słowem danych wystąpienia przekazanych przy użyciu midiInOpen.

W przypadku komunikatu MIM_LONGDATAlpMidiHdr określa adres MIDIHDR struktury identyfikującej bufor komunikatów wykluczających system. Bufor może nie zostać całkowicie wypełniony. Aby określić liczbę prawidłowych danych znajdujących się w buforze, użyj członka dwBytesRecorded struktury MIDIHDR.

Po tym, jak sterownik urządzenia zakończy pracę z blokiem danych, można go wyczyścić i zwolnić.

Nagrywanie dźwięku MIDI