logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak ustawić transmisję MIDI w Bascomie dla mikrokontrolera 89c2051?

Yosef 28 Sty 2005 14:50 2108 2
REKLAMA
  • #1 1176289
    Yosef
    Poziom 12  
    Posty: 27
    Pomógł: 2
    Ocena: 2
    Jak ustawić transmisję MIDI w Bascomie?. Jaki kwarc oraz jak odebrać komunikat MIDI? :oops: :oops: :oops:
  • REKLAMA
  • Pomocny post
    #2 1176805
    Paweł Es.
    VIP Zasłużony dla elektroda
    Posty: 6981
    Pomógł: 1236
    Ocena: 691
    Musisz dobrać taki kwarc, który da się podzielić tak by uzyskać częstotliwość pracy UART = 31250 Hz +/- 1%

    Komunikat MIDI składa się z 2 lub 3 bajtów. Jeżeli bajt ma ustawiony najstarszy bit to jest on (ten bajt) traktowany jako rozkaz a jezeli nie to są to dane do rozkazu (ogólnie dane są przesyłane w porcjach 7 bitowych). Dekodowanie jest dość złożone, bo w strumieniu danych są wymieszane różne informacje.

    Zwyke

    Rozkazy są wysyłane tylko przy zmianie danego elementu sterującego (wciśnięcie lub zwolnienie).

    rozkaz ma 10 bitów - bit startu, 8 bitów danych, 1 bit stopu (bez kontroli parzystości)
    1 bajt trwa 320 µs, jeden rozkaz 640 lub 960 µs

    Występuje czasami przesyłanie typu running status tzn. przy przesyłaniu ciągu tych samych rozkazów (np. 10 klawiszy) wysyła się 1 bajt rozkazu np. 9x i 20 bajtów danych dla 10 klawiszy. Jezeli jednak w trakcie przesyłania pójdzie inny rozkaz (np. pitch bend) to następne dane klawiszowe zostaną porzedzone kodem rozkazu.

    Podstawowe rozkazy:

    oznaczenia

    x - numer kanału MIDI-1 (kanały 1-16 -> xε<0..15>)

    nn - numer klawisza 0-127

    vv - prędkość ataku lub zwalniania klawisza (0-127) - większość
    instrumentów nie interpretuje tego parametru przy zwalnianiu

    8x nn vv - Note off - Wyłączenie tonu, wysyłane przy zwalnianiu klawisza
    9x nn vv - Note on - włączenie tonu nn z prędkością vv

    Ax nn vv - Polyphonic Key Pressure - niektóre klawiatury wysyłają komunikat o zmianie nacisku vv na klawisz nn. Dotyczy nuty poprzednio włączonej.

    Bx cc vv - zmiana wartości kontrolera cc (0-127) w kanale x (0-15) na wartość vv (0-127)
    dotyczy np. pedałów, pokręteł, suwaków nie dotyczy (Pitch wheel)

    Cx pp - zmiana programu w kanale x na pp (0-127) (np. zmiana barwy z trąbki na pompkę :)

    Dx cc - Channel pressure - dotyczy klawiszy nie wysyłających informacji Polyphonic key Pressure (Ax) dla oddzielnych klawiszy. Zamiast tego wysyłana jest największa wartość nacisku na klawisz w kanale x. Wartość cc z zakresu (0..127).

    Ex ll hh - Pitch bend - odstrojenie tonu w kanale x. Podawane z dokładnością 14 bitów (hh*128+ll) - wartość środkowa (spoczynkowa) = 8192 (2000H) ll,hh z zakresu 0-127.

    F0 - system exclusive - informacje związane z konkretnym typem instrumentu (np. nastawy parametrów specyficznych dla modelu)
    ciąg zaczyna się od F0 a kończy kodem F7

    F0 id dd dd dd F7 -> id 7 bitowy identyfikator producenta (są to numeracje stałe przydzielane przez organizację producentów sprżetu z MIDI)

    dd - dane
    F7 - koniec sysex

    tylko komunikaty czasu rzeczywistego mogą być przeplatane ciągiem sysex.

    F1- niezdefiniowane
    F2 ll hh - Song Position Pointer - 14 bitowy wskaźnik (hh*128+ll) przechowujący ilość jednostek MIDI od startu melodii (jedna jednostka midi to 6 komunikatów zegara MIDI

    F3 ss - song select - wybór sekwencji do odtwarzania (zwykle sekwencery tego używają)

    F4 - niezdefiniowany
    F5 - niezdefiniowany
    F6 - Tune Request. - po tym komunikacie systezatory analogowe powinny zestroić swoje generatory (np. do A=440Hz)

    F7 End of Exclusive (F0)

    Komunikaty czasu rzeczywistego

    F8 - MIDI Clock - wysyłany 24 razy na ćwierćnutę gdy wymagana jest synchronizacja

    F9 - niezdefiniowany
    FA - Start wybranej sekwencji (po tym rozkazie idą komunikaty F8)

    FB - Kontynuacja odtwarzania od miejsca zatrzymania

    FC - Stop - zatrzymanie aktualnie granej sekwencji

    FD - niezdefiniowany

    FE - Active sensing - Użycie tego komunikatu jest opcjonalne. Jeżeli został odebrany to odbiornik będzie oczekiwał na kolejny w czasie maksymalnym 300 ms (lub innego komunikatu). Jeżeli Komunikat nie pojawi się w oknie 300 ms to odbiornik przyjmuje, że łącze zostało przerwane (lub nadajnik wyłączony) i wyłącza wszystkie głosy oraz powraca do trybu normalnego (bez active sensing)

    FF - Reset. Wszystkie odbiorniki w stan jak po włączeni zasilania. Nie powinien być wysyłany przy włączaniu zasilania(groźba zapętlenia)

    Do tego dochodzą różne znaczenia parametrów specyficzne dla instrumentu.

    PROSTE NIE ? :)


    Jak Musical Instrument Digital Interface !
  • #3 1184113
    Yosef
    Poziom 12  
    Posty: 27
    Pomógł: 2
    Ocena: 2
    Dzięki Pawle. Znacznie jaśniej. Może masz jakieś "kawałki" kodów albo linki do sensownych stron? :roll: Powiedz czy robiłeś jakieś układy MIDI ( ale nie adaptery do PC). :sm8:
REKLAMA