# adam śmiałek MUZYKANT 5

### Co to jest?

„Muzykant 5” to prosty sterownik midi przeznaczony do samodzielnego montażu. Układ jest rozwinięciem „Muzykanta 4”, posiada osiem potencjometrów, które umożliwiają generowanie komunikatów w sposób płynny. Układ jest dość prosty, a cena części potrzebnych do jego zbudowania jest niska, dzięki czemu sterownik jest możliwy do zbudowania także przez początkujących elektroników. Urządzenie pobiera niewiele prądu, co pozwala na efektywne zasilanie z baterii.

### A po co to?

Opis potencjalnych zastosowań „Muzykanta 4” znajduje się na stronie poświęconej „Muzykantowi 1”. Dodatkowo otrzymujemy możliwość płynnej generacji jednocześnie do ośmiu wybranych komunikatów. Umożliwia to wykonanie sterownika w postaci pulpitu z elementami sterującymi, bądź wbudowania owych elementów w manipulatory dowolnego typu jak pedały, joysticki analogowe, manipulatory X-Y itp. Dwie wersje oprogramowania realizują proste, a niezwykle elastyczne urządzenia:

- Sześćdziesięcioczterokanałowy sterownik generujący komunikaty „Program Change” z zakresu 0-31 i 64-95.

- Ośmiokanałowy mikser midi z ośmioma regulowanymi parametrami na każdym kanale.

Oczywiście urządzenie posiada osiem potencjometrów, więc obsługa takiej ilości kanałów możliwa jest po aktywowaniu odpowiednim przyciskiem konkretnego zestawu komunikatów bądź kanału midi.

## ___ jak to działa ________________

Na wstępnie pragnę wspomnieć, że do wykonania urządzenia wystarczy podstawowa wiedza na temat jego budowy i sposobu działania. Dlatego poniższy opis będzie traktował temat pobieżnie i zupełnie pominie zagadnienia programu mikrokontrolera.

Sercem układu jest mikroprocesor firmy Atmel, ze znanej i popularnej rodziny „51”. Za konwersję napięć z potencjometrów odpowiada dość popularny układ ADC0808. Poza dwoma układami w kontrolerze pracuje już tylko kilka elementów. Do części nóżek procesora można dołączyć przełączniki zwierające owe nóżki do jednego z wyprowadzeń. Wciśnięcie, bądź w niektórych przypadkach puszczenie przełącznika wysyła wybrany komunikat midi. W niektórych wersjach oprogramowania przełączniki zmieniają funkcjonalność potencjometrów. Wybór przełączników, ich rozmieszczenie i mechaniczne rozwiązania całości zostawiamy budującym sterownik. Ważne jest jedynie to, by przełączniki zwierały po wciśnięciu i przestawały zwierać po puszczeniu (muszą być to tak zwane przełączniki monostabilne). Sterujący układ analogowy nie musi być potencjometrem w klasycznym tego słowa znaczeniu. Może to być dowolny układ generujący napięcie w zakresie od 0 do napięcia zasilającego, w szczególności może być to układ optyczny, ciśnieniowy itp.

A tak wygląda schemat urządzenia:

Jak widać układ zawiera, nie licząc potencjometrów, 13 elementów, z czego do pracy niezbędnych jest 11. Zielona część układu to wskaźnik zasilania na diodzie świecącej. Niebieska część schematu obrazuje połączenie układu z komputerem PC, niezbędne tylko podczas programowania układu, które zwykle będzie przeprowadzane raz, podczas uruchamiania sterownika. Dla zachowania czytelności nie narysowano połączeń wejść układu IC2 ze ślizgaczami potencjometrów. Należy zwrócić uwagę na to, że wyprowadzenia układu IC2 opisane są w ten sposób, jak gdyby układ ten leżał „do góry nogami”, co ma miejsce w przypadku montażu bez płytki drukowanej.

Poniżej znajduje się lista wszystkich komunikatów, które sterownik wysyła.

W zależności od wersji oprogramowania poszczególne wyprowadzenia sterownika przyjmują określoną funkcjonalność.

## ___ wersja A ________________

„Sterownik uniwersalny” - projekt kontrolera, który wysyła komunikaty spoza standardowej puli Control Change, dzięki czemu nie koliduje z typowymi strumieniami danych midi. Rozwiązanie to jest przeznaczone do aplikacji potrafiących przyporządkowywać dowolne komunikaty do wybranych funkcji, jak np. dodatkowy kontroler dla programów komputerowych.

- P10 - wciśnięcie generuje komunikat „Control Change 102 127” (1011 0000 0110 0110 0111 1111)

- P11 - wciśnięcie generuje komunikat „Control Change 103 127” (1011 0000 0110 0111 0111 1111)

- P12 - wciśnięcie generuje komunikat „Control Change 104 127” (1011 0000 0110 1000 0111 1111)

- P13 - wciśnięcie generuje komunikat „Control Change 105 127” (1011 0000 0110 1001 0111 1111)

- P14 - wciśnięcie generuje komunikat „Control Change 106 127” (1011 0000 0110 1010 0111 1111)

- P15 - wciśnięcie generuje komunikat „Control Change 107 127” (1011 0000 0110 1011 0111 1111)

- P16 - wciśnięcie generuje komunikat „Control Change 108 127” (1011 0000 0110 1100 0111 1111)

- P17 - wciśnięcie generuje komunikat „Control Change 109 127” (1011 0000 0110 1101 0111 1111)

- P20 - wciśnięcie generuje komunikat „Control Change 110 127” 1011 0000 0110 1110 0111 1111)
- Puszczenie generuje komunikat „Control Change 110 0” (1011 0000 0110 1110 0000 0000)

- P21 - wciśnięcie generuje komunikat „Control Change 111 127” 1011 0000 0110 1111 0111 1111)
- Puszczenie generuje komunikat „Control Change 111 0” (1011 0000 0110 1111 0000 0000)

- P32 - wciśnięcie generuje komunikat „Control Change 112 n” 1011 0000 0111 0000 0000 0nnn), gdzie n cyklicznie zwiększa się od 0 do 7. Po wartości 7 n przyjmuje ponownie wartość 0 i cykl się powtarza.

- P33 - wciśnięcie nieparzyste generuje komunikat „Control Change 113 127” (1011 0000 0111 0001 0111 1111)
- Wciśnięcie parzyste generuje komunikat „Control Change 113 0” (1011 0000 0111 0001 0000 0000)

- P34 - wciśnięcie generuje komunikat „Control Change 114 n” (1011 0000 0111 0010 0nnn nnnn), gdzie n cyklicznie zwiększa się od 0 do 127. Po wartości 127 n przyjmuje ponownie wartość 0 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P35 - wciśnięcie generuje komunikat „Control Change 114 n” (1011 0000 0111 0010 0nnn nnnn), gdzie n cyklicznie zmniejsza się od 127 do 0. Po wartości 0 n przyjmuje ponownie wartość 127 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P36 - wciśnięcie generuje komunikat „Control Change 115 127” (1011 0000 0111 0011 0111 1111). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- P37 - wciśnięcie generuje komunikat „Control Change 116 127” (1011 0000 0111 0100 0111 1111). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 85 n” (1011 0000 0101 0101 0nnn nnnn)

- IN1 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 83 n” (1011 0000 0101 0011 0nnn nnnn)

- IN2 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 82 n” (1011 0000 0101 0010 0nnn nnnn)

- IN3 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 88 n” (1011 0000 0101 1000 0nnn nnnn)

- IN4 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 87 n” (1011 0000 0101 0111 0nnn nnnn)

- IN5 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 86 n” (1011 0000 0101 0110 0nnn nnnn)

- IN6 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 89 n” (1011 0000 0101 1001 0nnn nnnn)

- IN7 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change 90 n” (1011 0000 0101 1010 0nnn nnnn)

## ___ wersja B ________________

„Sterownik GM” - kontroler zgodny z General Midi oraz wczesnymi rozszerzeniami standardu.

- P10 - wciśnięcie generuje komunikat „Program Change 0” (wybór programu zerowego, 1100 0000 0000 0000)

- P11 - wciśnięcie generuje komunikat „Program Change 1” (wybór programu pierwszego, 1100 0000 0000 0001)

- P12 - wciśnięcie generuje komunikat „Program Change 2” (wybór programu drugiego, 1100 0000 0000 0010)

- P13 - wciśnięcie generuje komunikat „Program Change 3” (wybór programu trzeciego, 1100 0000 0000 0011)

- P14 - wciśnięcie generuje komunikat „Program Change 4” (wybór programu czwartego, 1100 0000 0000 0100)

- P15 - wciśnięcie generuje komunikat „Program Change 5” (wybór programu piątego, 1100 0000 0000 0101)

- P16 - wciśnięcie generuje komunikat „Program Change 6” (wybór programu szóstego, 1100 0000 0000 0110)

- P17 - wciśnięcie generuje komunikat „Program Change 7” (wybór programu siódmego, 1100 0000 0000 0111)

- P20 - wciśnięcie generuje komunikat „Control Change - Sustain On” (wciśnięcie pedału sustain, 1011 0000 0100 0000 0111 1111)
- Puszczenie generuje komunikat „Control Change - Sustain Off” (puszczenie pedału sustain, 1011 0000 0100 0000 0000 0000)

- P21 - wciśnięcie nieparzyste generuje komunikat „Control Change - Portamento On” (włączenie efektu portamento, 1011 0000 0100 0001 0111 1111)
- Wciśnięcie parzyste generuje komunikat „Control Change - Portamento Off” (wyłączenie efektu portamento, 1011 0000 0100 0001 0000 0000)

- P32 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0000 0nnn), gdzie n cyklicznie zwiększa się od 0 do 7. Po wartości 7 n przyjmuje ponownie wartość 0 i cykl się powtarza. Na zaburzenie kolejności odliczania ma wpływ wcześniejsze użycie przycisków: P33, P10, P11, P12, P13, P14, P15, P16, P17.

- P33 - wciśnięcie nieparzyste generuje komunikat „Program Change 1” (wybór programu pierwszego, 1100 0000 0000 0001)
- Wciśnięcie parzyste generuje komunikat „Program Change 0” (wybór programu zerowego, 1100 0000 0000 0000)

- P34 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zwiększa się od 0 do 127. Po wartości 127 n przyjmuje ponownie wartość 0 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P35 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zmniejsza się od 127 do 0. Po wartości 0 n przyjmuje ponownie wartość 127 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P36 - wciśnięcie generuje komunikat „Control Change - Data Increment” (zwiększ daną, 1011 0000 0110 0000 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- P37 - wciśnięcie generuje komunikat „Control Change - Data Decrement” (zmniejsz daną, 1011 0000 0110 0001 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Portamento Time n” (długość portamento, 1011 0000 0000 0101 0nnn nnnn)

- IN1 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Breath n” (zadęcie, 1011 0000 0000 0010 0nnn nnnn)

- IN2 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Modulation n” (modulacja, 1011 0000 0000 0001 0nnn nnnn)

- IN3 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Expression n” (ekspresja, 1011 0000 0000 1011 0nnn nnnn)

- IN4 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Pan n” (panorama, 1011 0000 0000 1010 0nnn nnnn)

- IN5 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Volume n” (głośność, 1011 0000 0000 0111 0nnn nnnn)

- IN6 - zmiana położenia suwaka potencjometru generuje komunikat „Channel Pressure (Aftertouch) n” (dociśnięcie klawiatury, 1101 0000 0nnn nnnn)

- IN7 - zmiana położenia suwaka potencjometru generuje komunikat „Pitch Bender n*128” (odchylenie wysokości dźwięku, 1110 0000 0000 0000 0nnn nnnn). Komunikat jest wysyłany z rozdzielczością siedmiobitową. Mniej znaczące bity wysyłane są zawsze jako zera. Należy pamiętać, iż zerowe odchylenie wysokości dźwięku nastąpi dokładnie w środkowym położeniu suwaka potencjometru. Należy zapewnić takie mechaniczne rozwiązania, by położenie środkowe było jednoznaczne i stabilne.

## ___ wersja C ________________

„Sterownik XG” - kontroler zgodny ze standardem XG oraz GM2.

- P10 - wciśnięcie generuje komunikat „Program Change 0” (wybór programu zerowego, 1100 0000 0000 0000)

- P11 - wciśnięcie generuje komunikat „Program Change 1” (wybór programu pierwszego, 1100 0000 0000 0001)

- P12 - wciśnięcie generuje komunikat „Program Change 2” (wybór programu drugiego, 1100 0000 0000 0010)

- P13 - wciśnięcie generuje komunikat „Program Change 3” (wybór programu trzeciego, 1100 0000 0000 0011)

- P14 - wciśnięcie generuje komunikat „Program Change 4” (wybór programu czwartego, 1100 0000 0000 0100)

- P15 - wciśnięcie generuje komunikat „Program Change 5” (wybór programu piątego, 1100 0000 0000 0101)

- P16 - wciśnięcie generuje komunikat „Program Change 6” (wybór programu szóstego, 1100 0000 0000 0110)

- P17 - wciśnięcie generuje komunikat „Program Change 7” (wybór programu siódmego, 1100 0000 0000 0111)

- P20 - wciśnięcie generuje komunikat „Control Change - Sustain On” (wciśnięcie pedału sustain, 1011 0000 0100 0000 0111 1111)
- Puszczenie generuje komunikat „Control Change - Sustain Off” (puszczenie pedału sustain, 1011 0000 0100 0000 0000 0000)

- P21 - wciśnięcie generuje komunikat „Control Change - Soft On” (wciśnięcie pedału soft, 1011 0000 0100 0011 0111 1111)
- Puszczenie generuje komunikat „Control Change - Soft Off” (puszczenie pedału soft, 1011 0000 0100 0011 0000 0000)

- P32 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0000 0nnn), gdzie n cyklicznie zwiększa się od 0 do 7. Po wartości 7 n przyjmuje ponownie wartość 0 i cykl się powtarza. Na zaburzenie kolejności odliczania ma wpływ wcześniejsze użycie przycisków: P33, P10, P11, P12, P13, P14, P15, P16, P17.

- P33 - wciśnięcie nieparzyste generuje komunikat „Program Change 1” (wybór programu pierwszego, 1100 0000 0000 0001)
- Wciśnięcie parzyste generuje komunikat „Program Change 0” (wybór programu zerowego, 1100 0000 0000 0000)

- P34 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zwiększa się od 0 do 127. Po wartości 127 n przyjmuje ponownie wartość 0 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P35 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zmniejsza się od 127 do 0. Po wartości 0 n przyjmuje ponownie wartość 127 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P36 - wciśnięcie generuje komunikat „Control Change - Data Increment” (zwiększ daną, 1011 0000 0110 0000 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- P37 - wciśnięcie generuje komunikat „Control Change - Data Decrement” (zmniejsz daną, 1011 0000 0110 0001 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - NRPN - HPF Cutoff n” (filtr górnoprzepustowy, 1011 0000 0110 0011 0000 0001 1011 0000 0110 0010 0010 0100 1011 0000 0000 0110 0nnn nnnn). Nie wszystkie moduły brzmieniowe w standardzie XG reagują na ten komunikat, nie jest on zgodny ze standardem GM2.

- IN1 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Timbre (Harmonic, Q) n” (rezonans, 1011 0000 0100 0111 0nnn nnnn)

- IN2 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Brightness (Cutoff) n” (filtr dolnoprzepustowy, 1011 0000 0100 1010 0nnn nnnn)

- IN3 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Modulation n” (modulacja, 1011 0000 0000 0001 0nnn nnnn)

- IN4 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Release n” (wybrzmiewanie, 1011 0000 0100 1000 0nnn nnnn)

- IN5 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Attack n” (atak, narastanie, 1011 0000 0100 1001 0nnn nnnn)

- IN6 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Effect 3 (Chorus) n” (efekt 3, chorus, 1011 0000 0101 1101 0nnn nnnn)

- IN7 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change - Effect 1 (Reverb) n” (efekt 1, pogłos, 1011 0000 0101 1011 0nnn nnnn)

## ___ wersja D ________________

„64 kontrolery” - sterownik umożliwiający kontrolę do 64 parametrów za pomocą ośmiu potencjometrów, z których każdy może posiadać osiem funkcji. Kontroler taki szczególnie przydatny będzie do programowania brzmień i efektów w aplikacjach umożliwiających swobodny wybór wartości sterujących. Dla przykładu każdą z grup ośmiu potencjometrów można logicznie przyporządkować do bloków syntezatora - generatora obwiedni odstrojenia, filtra, wzmocnienia, generatora wolnych przebiegów, bloków efektowych itp.

- P10 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 0-7” (1011 0000 0000 0mmm 0nnn nnnn)

- P11 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 8-15” (1011 0000 0000 1mmm 0nnn nnnn)

- P12 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 16-23” (1011 0000 0001 0mmm 0nnn nnnn)

- P13 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 24-31” (1011 0000 0001 1mmm 0nnn nnnn)

- P14 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 64-71” (1011 0000 0100 0mmm 0nnn nnnn)

- P15 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 72-79” (1011 0000 0100 1mmm 0nnn nnnn)

- P16 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 80-87” (1011 0000 0101 0mmm 0nnn nnnn)

- P17 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change 88-95” (1011 0000 0101 1mmm 0nnn nnnn)

- P20 - wciśnięcie generuje komunikat „Control Change - Sustain On” (wciśnięcie pedału sustain, 1011 0000 0100 0000 0111 1111)
- Puszczenie generuje komunikat „Control Change - Sustain Off” (puszczenie pedału sustain, 1011 0000 0100 0000 0000 0000)

- P21 - wciśnięcie generuje komunikat „Control Change - Soft On” (wciśnięcie pedału soft, 1011 0000 0100 0011 0111 1111)
- Puszczenie generuje komunikat „Control Change - Soft Off” (puszczenie pedału soft, 1011 0000 0100 0011 0000 0000)

- P32 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0000 0nnn), gdzie n cyklicznie zwiększa się od 0 do 7. Po wartości 7 n przyjmuje ponownie wartość 0 i cykl się powtarza. Na zaburzenie kolejności odliczania ma wpływ wcześniejsze użycie przycisku P33.

- P33 - wciśnięcie nieparzyste generuje komunikat „Program Change 1” (wybór programu pierwszego, 1100 0000 0000 0001)
- Wciśnięcie parzyste generuje komunikat „Program Change 0” (wybór programu zerowego, 1100 0000 0000 0000)

- P34 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zwiększa się od 0 do 127. Po wartości 127 n przyjmuje ponownie wartość 0 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P35 - wciśnięcie generuje komunikat „Program Change n” (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zmniejsza się od 127 do 0. Po wartości 0 n przyjmuje ponownie wartość 127 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P36 - wciśnięcie generuje komunikat „Control Change - Data Increment” (zwiększ daną, 1011 0000 0110 0000 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- P37 - wciśnięcie generuje komunikat „Control Change - Data Decrement” (zmniejsz daną, 1011 0000 0110 0001 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+2 n” (1011 0000 0mmm m010 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN1 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+1 n” (1011 0000 0mmm m001 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN2 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+0 n” (1011 0000 0mmm m000 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN3 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+5 n” (1011 0000 0mmm m101 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN4 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+4 n” (1011 0000 0mmm m100 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN5 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+3 n” (1011 0000 0mmm m011 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN6 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+6 n” (1011 0000 0mmm m110 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN7 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m+7 n” (1011 0000 0mmm m111 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

Po włączeniu zasilania potencjometry wysyłają komunikaty „Control Change 0-7”.

## ___ wersja E ________________

„Ośmiokanałowy mikser midi” - sterownik umożliwiający kontrolę do ośmiu parametrów na ośmiu kanałach midi (1-7 oraz 10) za pomocą ośmiu potencjometrów. Przełączniki P10 - P17 umożliwiają wybór aktualnej funkcji dla całej ósemki. Pozostałe przełączniki, w przeciwieństwie do wcześniejszych wersji, pracują na kanale midi, który aktywowany jest ostatnio użytym potencjometrem. Kontroler taki szczególnie przydatny będzie do miksowania ośmiościeżkowego materiału muzycznego.

- P10 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Volume n” (głośność, 1011 kkkk 0000 0111 0nnn nnnn)

- P11 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Pan n” (panorama, 1011 kkkk 0000 1010 0nnn nnnn)

- P12 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Balance n” (balans, 1011 kkkk 0000 1000 0nnn nnnn)

- P13 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Effect 2 (Tremolo) n” (efekt 2, tremolo, 1011 kkkk 0101 1100 0nnn nnnn)

- P14 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Effect 5 (Phaser) n” (efekt 5, phaser, 1011 kkkk 0101 1111 0nnn nnnn)

- P15 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Effect 4 (Variation) n” (efekt 4, variation, 1011 kkkk 0101 1110 0nnn nnnn)

- P16 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Effect 3 (Chorus) n” (efekt 3, chorus, 1011 kkkk 0101 1101 0nnn nnnn)

- P17 - wciśnięcie sprawia, że potencjometry będą generować komunikaty „Control Change - Effect 1 (Reverb) n” (efekt 1, pogłos, 1011 kkkk 0101 1011 0nnn nnnn)

- P20 - wciśnięcie generuje komunikat „Control Change - Sustain On” na kanale, na którym pracował ostatnio wybrany potencjometr (wciśnięcie pedału sustain, 1011 0000 0100 0000 0111 1111)
- Puszczenie generuje komunikat „Control Change - Sustain Off” na kanale, na którym pracował ostatnio wybrany potencjometr (puszczenie pedału sustain, 1011 0000 0100 0000 0000 0000)

- P21 - wciśnięcie generuje komunikat „Control Change - Soft On” na kanale, na którym pracował ostatnio wybrany potencjometr (wciśnięcie pedału soft, 1011 0000 0100 0011 0111 1111)
- Puszczenie generuje komunikat „Control Change - Soft Off” na kanale, na którym pracował ostatnio wybrany potencjometr (puszczenie pedału soft, 1011 0000 0100 0011 0000 0000)

- P32 - wciśnięcie generuje komunikat „Program Change n” na kanale, na którym pracował ostatnio wybrany potencjometr (wybór programu n, 1100 0000 0000 0nnn), gdzie n cyklicznie zwiększa się od 0 do 7. Po wartości 7 n przyjmuje ponownie wartość 0 i cykl się powtarza. Na zaburzenie kolejności odliczania ma wpływ wcześniejsze użycie przycisku P33.

- P33 - wciśnięcie nieparzyste generuje komunikat „Program Change 1” na kanale, na którym pracował ostatnio wybrany potencjometr (wybór programu pierwszego, 1100 0000 0000 0001)
- Wciśnięcie parzyste generuje komunikat „Program Change 0” na kanale, na którym pracował ostatnio wybrany potencjometr (wybór programu zerowego, 1100 0000 0000 0000)

- P34 - wciśnięcie generuje komunikat „Program Change n” na kanale, na którym pracował ostatnio wybrany potencjometr (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zwiększa się od 0 do 127. Po wartości 127 n przyjmuje ponownie wartość 0 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P35 - wciśnięcie generuje komunikat „Program Change n” na kanale, na którym pracował ostatnio wybrany potencjometr (wybór programu n, 1100 0000 0nnn nnnn), gdzie n cyklicznie zmniejsza się od 127 do 0. Po wartości 0 n przyjmuje ponownie wartość 127 i cykl się powtarza. Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów zgodnie z opisaną regułą.

- P36 - wciśnięcie generuje komunikat „Control Change - Data Increment” na kanale, na którym pracował ostatnio wybrany potencjometr (zwiększ daną, 1011 0000 0110 0000 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- P37 - wciśnięcie generuje komunikat „Control Change - Data Decrement” na kanale, na którym pracował ostatnio wybrany potencjometr (zmniejsz daną, 1011 0000 0110 0001 0000 0000). Jeśli klawisz pozostanie przez chwilę wciśnięty nastąpi generacja serii komunikatów.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 1 (1011 0000 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 2 (1011 0001 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 3 (1011 0010 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 4 (1011 0011 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 5 (1011 0100 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 6 (1011 0101 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 7 (1011 0110 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

- IN0 - zmiana położenia suwaka potencjometru generuje komunikat „Control Change m n” na kanale 10 (1011 1001 0mmm mmmm 0nnn nnnn), gdzie „m” określa ostatni wciśnięty przełącznik P10 - P17.

Po włączeniu zasilania potencjometry wysyłają komunikaty „Control Change - Volume”.

## ___ wersja F ________________

„Sterownik Korga M1” - kontroler przeznaczony do modyfikacji brzmień Korga M1 optymalizowany do pracy na żywo. Sterownik umożliwia kontrolę sześciu parametrów toru syntezy, do pięciu parametrów pierwszego efektu i dwa parametry drugiego efektu. Układ współpracuje z instrumentem za pomocą komunikatów sysex, wymaga pracy jednooscylatorowej i szeregowo połączonych efektów. Na zdjęciu widzimy przykład gotowego urządzenia.

Poniżej widzimy zdjęcie płyty czołowej sterownika. Na zielono zaznaczono opisy elementów, które wyjaśnione są pod zdjęciem.

- P32 - wciśnięcie przełącza sekwencyjnie funkcje potencjometrów P0-P5 pomiędzy elementami toru syntezy (świeci się dioda niebieska), a elementami efektów (świeci się dioda żółta).

- P12 - wciśnięcie ustawia efekt 1 Phaser 1. Potencjometr P5 reguluje opóźnienie, P2 sprzężenie zwrotne, P1 głębokość modulacji, P0 szybkość modulacji.

- P13 - wciśnięcie ustawia efekt 1 Flanger. Potencjometr P5 reguluje opóźnienie, P2 sprzężenie zwrotne, P1 głębokość modulacji, P0 szybkość modulacji.

- P14 - wciśnięcie ustawia efekt 1 Chorus 1. Potencjometr P5 reguluje opóźnienie, P1 głębokość modulacji, P0 szybkość modulacji.

- P15 - wciśnięcie ustawia efekt 1 Rotary SP. Potencjometr P1 reguluje głębokość modulacji, P0 szybkość modulacji.

- P11 - wciśnięcie ustawia efekt 1 Hall. Potencjometr P5 reguluje czas pogłosu, P4 opóźnienie pierwszych odbić, P2 ilość wczesnych odbić, P1 rozpraszanie wysokich tonów.

- P10 - wciśnięcie ustawia efekt 1 Cross Delay. Potencjometr P5 reguluje czas opóźnienia kanału lewego, P4 czas opóźnienia kanału prawego, P1 ilość powtórzeń.

- P36 - wciśnięcie ustawia efekt 2 Phaser 2. Potencjometr P3 reguluje szybkość modulacji.

- P37 - wciśnięcie ustawia efekt 2 Flanger. Potencjometr P3 reguluje szybkość modulacji.

- P20 - wciśnięcie ustawia efekt 2 Chorus 1. Potencjometr P3 reguluje szybkość modulacji.

- P21 - wciśnięcie ustawia efekt 2 Tremolo 1. Potencjometr P3 reguluje szybkość modulacji.

- P17 - wciśnięcie ustawia efekt 2 Hall. Potencjometr P3 reguluje czas pogłosu.

- P16 - wciśnięcie ustawia efekt 2 Large Room. Potencjometr P3 reguluje czas pogłosu.

Każdorazowy wybór efektu sygnalizowany jest mrugnięciem diod i przełączeniem urządzenia na sterowanie torem efektów (świeci się się dioda żółta).

- P33 - wciśnięcie przełącza sekwencyjnie funkcje potencjometrów P1 i P0, gdy urządzenie steruje torem syntezy (świeci się niebieska dioda). Przy nieparzystym wciśnięciu przełącznika modulacja będzie dotyczyła oscylatora (pojedyncze mrugnięcie diodami), przy parzystym filtra (podwójne mrugnięcie diodami).

Gdy urządzenie steruje torem syntezy potencjometry przyjmują następujące funkcje:

- P2 - reguluje częstotliwość odcięcia filtra.

- P1 - reguluje głębokość modulacji oscylatora lub filtra (funkcje przełącza przycisk P33).

- P0 - reguluje szybkość modulacji oscylatora lub filtra (funkcje przełącza przycisk P33).

- P5 - reguluje czas narastania brzmienia.

- P4 - reguluje czas wybrzmiewania brzmienia.

- P3 - wybiera próbkę z pamięci rom.

Potencjometry P6 i P7 posiadają tylko jedną funkcję:

- P6 - reguluje stosunek efektu pierwszego do pozostałego sygnału.

- P7 - reguluje stosunek efektu drugiego do pozostałego sygnału.

Wysyłanie komunikatu midi wskutek zmiany położenia potencjometrów jest sygnalizowane krótkim mrugnięciem diod. Układ jest aktywny po wybraniu funkcji „Edit Prog” w instrumencie.

Diody świecące, które widzimy należy podłączyć katodami do wyprowadzeń P34 (synth) i P35 (effect) poprzez rezystory 220Ω do dodatniego bieguna zasilania. Oczywiście kolor diod jest dowolny.

## ___ robimy zakupy ________________

Poniżej znajduje się lista elementów oznaczonych zgodnie ze znajdującym się wyżej schematem:

- R1, R2, R3 - 220Ω, wartość R3 można zwiększyć w przypadku zastosowania diod świecących o wysokiej efektywności, co pozwoli na zmniejszenie poboru prądu przy zasilaniu bateryjnym.
- P0 - P7 - potencjometry 10kΩ (2,2kΩ - 22kΩ), liniowe.
- C1, C2 - 33pF.
- C3, C5 - 4,7μF, napięcie pracy 6,3V lub wyższe. Zaleca się, by wartość C5 przy zasilaniu bateryjnym wynosiła 100μF.
- C4, C6 - 100nF.
- X1 - kwarc 6MHz.
- D1 - dowolna dioda świecąca.
- IC1 - jeden z układów, do wyboru: AT89S51, AT89S52, AT89S53, AT89S8252.
- IC2 - układ ADC0808, ADC0809 lub kompatybilny.
- Gniazdo DIN5 female do podłączenia kabla midi.
- 50cm trójżyłowej oraz dziesięciożyłowej linki.
- Przełączniki i elementy obudowy - wedle własnych potrzeb i możliwości.

Do wykonania kabla programującego potrzebne będą:

- Wtyk DB25 male.
- 30cm pięciożyłowej linki.
- Podstawka pod ośmionóżkowy układ scalony oraz krokodylek (jeśli zdecydujemy się na rozwiązanie podłączania do komputera jak na zdjęciach poniżej).

Elementy potrzebne do zbudowania zasilacza opisane są poniżej.

## ___ budujemy ________________

Po zgromadzeniu elementów możemy przystąpić do budowy urządzenia. Potrzebna będzie sprawna lutownica dowolnego typu o mocy nie większej niż 75W oraz cyna do lutowania w postaci drutu o grubości 0,7 - 1mm. W przypadku tego układu zaleca się stosownie płytki drukowanej. Ostatecznie można układ zmontować jak na zdjęciu, bez użycia płytki. Nie polecam używania podstawek pod układy scalone ze względu na ich zawodność i niewielki sens stosowania w tym projekcie. Jeśli jednak ktoś ma opory przed lutowaniem nóżek układów scalonych niechaj sobie nabędzie podstawki tak zwane precyzyjne, wysokiej jakości. Poniżej znajdują się zdjęcia układu prototypowego, na których można się wzorować przy lutowaniu.

Jak widzimy większość elementów znajduje się na spodzie układu scalonego. Kwarc należy przykleić do górnej strony układu kroplą gorącego kleju. Pozostałe elementy trzymają się na nóżkach układu. Należy zadbać o to, by podłączenie kondensatora C3 do dziewiątej nóżki układu umożliwiło późniejsze założenie na tę nóżkę podstawki programatora (jak na zdjęciu poniżej). Układ przetwornika montujemy na górze mikroprocesora, „do góry nogami”, jak na zdjęciu. Wszystkie połączenia pomiędzy układami należy wykonać krótkimi kawałkami cynowanych drutów, uprzednio wygiąwszy je, jak na zdjęciu. Końcówkę 9 (CS) układu IC2 można podłączyć z końcówką 11 (VCC) tego układu, co uprości montaż. Oczywiście w tym wypadku końcówka 23 (P22) układu IC1 pozostanie niepodłączona. Lutowanie należy przeprowadzić sprawnie i krótko, uprzednio skróciwszy odpowiednio wszystkie wyprowadzenia elementów. Zaleca się zastosowanie tak zwanych koszulek termokurczliwych na wszystkich końcówkach kabli (na zdjęciu ich nie ma, ponieważ przysłoniłyby część elementów). Koszulkę taką przycina się na długość 1 - 2cm, zakłada na kabel, by po jego przylutowaniu przesunąć na lut i delikatnie ogrzać np. nad zapalniczką. Koszulka zaciśnie się i połączenie będzie odporne na zwarcia. Poniżej znajduje się schematyczny widok gniazda DIN5 female (midi out) od strony lutowania przewodów. Czerwonym kolorem oznaczono styki, do których należy przylutować przewody wedle schematu powyżej.

Poniżej widzimy sposób montażu układu na płytce drukowanej.

Stąd możemy pobrać obraz płytki w formacie pcb z programu Autotrax oraz Gerber. Na podstawie tego pliku możemy zlecić wykonanie płytki odpowiedniej firmie. Gdybyśmy jednak chcieli płytkę wykonać sami tutaj znajduje się rysunek ścieżek w rozdzielczości 600 dpi, natomiast tutaj znajduje się rysunek rozmieszczenia elementów. Płytka została zaprojektowana do serii „Muzykantów”, dlatego zawiera dodatkowe złącza, których obecnie nie będziemy wykorzystywać. Płytka zawiera także elementy zabezpieczeń i zasilacza. I tak:

- C6 - 100μF, napięcie pracy 16V.
- C7 - 100nF.
- D2 - D7 - dowolna dioda na prąd 300mA.
- IC3 - układ stabilizatora 78L05.

Diody D2 i D3 to diody zabezpieczające złącze midi i nie ma potrzeby ich stosowania przy krótkich połączeniach pomiędzy instrumentami. Pozostałe elementy należą do zasilacza i ich stosowanie zależy od wyboru wariantu zasilania, które przedstawione są poniżej. Na płytce widać złącze do podłączenia kabla programującego. W miejsce to należy wlutować tak zwane złącze szpilkowe, jak na zdjęciu.

## ___ zasilamy ________________

Jeśli już nasze urządzenie wygląda jak na zdjęciach powyżej należy mu dostarczyć napięcie zasilające. Producenci układów określają przedział tego napięcia na 4,5 - 5,5V. W praktyce ów przedział jest nieco szerszy, układ pracuje poprawnie od 3,7 do 6V. Nie wolno przekroczyć napięcia 6,5V, gdyż może to spowodować uszkodzenie układów. Jest wiele sposobów zasilania kontrolera i każdy może wybrać najwygodniejszy dla siebie. Diody na schematach prezentowanych poniżej to dowolne prostownicze diody jednoamperowe. Jeśli zdecydujemy się na wykonanie układu na proponowanej płytce sprawę zasilacza będziemy mieć rozwiązaną. Do łącz opisanych jako „AC”należy doprowadzić napięcie zmienne lub stałe o wartości 9-15V i wydajności prądowej 25mA. Można też sprawę zasilania rozwiązać inaczej.

Zasilanie za pomocą trzech baterii AA, AAA bądź baterii płaskiej.

To najprostszy sposób zasilania układu. Niestety, niezbyt ekonomiczny, ponieważ układ przestanie działać, gdy baterie nie będą jeszcze zupełnie wyczerpane. Dioda zabezpiecza układ przed odwrotnym podłączeniem baterii, wyłącznik odcina zasilanie. Zaleca się zwiększenie pojemności kondensatora C5 do co najmniej 100μF.

Zasilanie za pomocą czterech akumulatorków AA lub AAA.

Układ różni się względem powyższego dodatkowym, czwartym ogniwem, co zostało wymuszone nieco niższym napięciem nominalnym akumulatorów. Dioda zabezpiecza układ przed odwrotnym podłączeniem akumulatorów równocześnie obniżając nieco napięcie do bezpiecznego poziomu, gdy akumulatory są w pełni naładowane. Wyłącznik odcina zasilanie.

Zasilanie za pomocą baterii lub akumulatora dziewięciowoltowego 6F22 lub 6F25.

Ten sposób zasilania umożliwi miniaturyzację urządzenia. Niestety układ będzie działał najkrócej ze względu na niewielką ilość energii w takiej baterii oraz dodatkowy pobór prądu przez stabilizator, którym jest popularny układ 78L05. Kondensatory powinny znajdować się blisko stabilizatora, połączenie stabilizatora z mikroprocesorem powinno być możliwie krótkie (kilka centymetrów). Dioda zabezpiecza układ przed odwrotnym podłączeniem baterii, wyłącznik odcina zasilanie.

Zasilanie za pomocą stabilizowanego zasilacza 4,5 - 5,5V.

Jeśli dysponujemy stabilizowanym zasilaczem sieciowym o napięciu 4,5 - 5,5V możemy go użyć w sposób jak na schemacie. Należy zwrócić uwagę, by napięcie było stabilizowane, a nie tylko prostowane. Wydajność zasilacza nie ma znaczenia (wystarczy 25 mA). Dioda zabezpiecza układ przed odwrotnym podłączeniem zasilacza.

Zasilanie za pomocą dowolnego zasilacza o napięciu 9 - 15V.

W ten sposób możemy wykorzystać dowolny zasilacz stabilizowany, prądu stałego niestabilizowanego czy prądu zmiennego o zakresach napięć 9 - 15V. Stabilizator to popularny układ 78L05. Kondensatory powinny znajdować się blisko stabilizatora, połączenie stabilizatora z mikroprocesorem powinno być możliwie krótkie (kilka centymetrów). Ten sposób zasilania został zaimplementowany na płytce drukowanej.

## ___ programujemy ________________

Na czas programowania układu musimy zadbać o to, by napięcie zasilania było zbliżone do 5V. Jeśli stosujemy zasilanie bateryjne czy też akumulatorowe, postarajmy się, by baterie były świeże, a akumulatory naładowane. Proces programowania może nieco odstraszać, jest to jednak proces bardzo prosty, ponieważ nie potrzeba żadnych specjalistycznych narzędzi poza nieskomplikowanym kablem, którego schemat zaznaczono wyżej na niebiesko, a który widzimy poniżej:

Poniżej znajduje się schematyczny widok wtyku DB25 male (pasującego do portu parallel) od strony lutowania przewodów. Czerwonym kolorem oznaczono styki, do których należy przylutować przewody wedle niebieskiej części schematu powyżej.

Kabel zaopatrzony jest w podstawkę, którą należy założyć na układ jak na poniższym zdjęciu:

Krokodylkiem należy chwycić przewód masowy (ujemny biegun zasilania). Pomyłki nie spowodują uszkodzeń więc nie ma się czego obawiać. Zamiast stosowania podstawki i krokodylka możemy na chwilę kable przylutować. W przypadku stosowania płytki drukowanej lepiej będzie zamiast podstawki użyć odpowiedniego gniazda na złącza szpilkowe, na którym także znajduje się wyprowadzenie masy. Teraz należy sobie pobrać następujące pliki:

Tutaj należy podać adres mailowy, na który zostanie przesłany programator naszego mikroprocesora. Można go pobrać także stąd.

Poniżej znajduje się lista programów, z których wybieramy ten, którym chcemy zaprogramować nasz sterownik.

Wersja A

Wersja B

Wersja C

Wersja D

Wersja E

Wersja F

Po ściągnięciu pliki: „aec_isp.exe” oraz „program.hex” kopiujemy je do dowolnego katalogu. Następnie podłączamy wtyk DB25 male do gniazda parallel komputera PC (zwanego też LPT, ECP, printer port, port równoległy) i załączamy zasilanie. Uruchamiamy program „aec_isp.exe”. Ukazuje się nam poniższe okienko:

Wybieramy opcję „Setup”.

Ustawiamy parametry jak powyżej oczywiście wybierając typ mikroprocesora, który posiadamy. Zapisujemy ustawienia opcją „Save setup”.

Wybieramy opcję „Load Hex file to Flash buffer”.

Wpisujemy nazwę „program.hex”.

Taki ekran oznacza, że plik został znaleziony, jest poprawny i załadował się. Wciskamy cokolwiek.

Wybieramy opcję „Program”. Programowanie jest procesem całkowicie bezpiecznym i może zostać przerwane w dowolnym momencie bez jakichkolwiek konsekwencji.

Czekamy kilkanaście sekund na taki ekran, który oznacza, że mikroprocesor został poprawnie zaprogramowany. Naciskamy cokolwiek, a następnie opcję „Quit”. Gdyby jednak programowanie się nie udało zapraszam niżej, do części poświęconej kłopotom.

## ___ używamy ________________

Sterownik jest zaprogramowany. Odłączamy podstawkę programatora. Możemy teraz próbnie podłączyć nasze urządzenie midi. Przy okazji pamiętajmy, że wyjście midi out zawsze podłączamy do wejścia midi in. Zwieranie końcówek przełączników do wyprowadzenia 10 (COM) oraz kręcenie gałkami potencjometrów powinno wysyłać komunikaty midi, które podłączone urządzenie powinno interpretować zgodnie z przeznaczeniem. Pozostaje nam teraz wybór funkcji i wykonanie obudowy. Należy pamiętać, że niewykorzystane wyprowadzenia przełączników pozostawia się niepodłączone, natomiast niewykorzystane wejścia ślizgaczy potencjometrów należy koniecznie podłączyć do masy.

## ___ modyfikujemy ________________

### Współpraca z komputerem PC przez game port.

Istnieje bardzo prosty sposób przystosowania sterownika do współpracy z komputerem PC zaopatrzonym w game port. Przy okazji rozwiąże się także problem źródła zasilania. Wystarczy wykonać tylko trzy połączenia: 15 nóżka wtyku DB15 male (pasującego do game portu) bezpośrednio z wyprowadzeniem P31 (TX) mikroprocesora, 5 nóżka z ujemnym wyprowadzeniem kondensatora C5 (masa), a nóżka 8 z dodatnim wyprowadzeniem kondensatora C5 (zasilanie). Oczywiście jakiekolwiek dodatkowe zasilanie sterownika należy zlikwidować. Połączenie najlepiej wykonać dwużyłowym kablem ekranowanym, przy czym ekran (oplot kabla) będzie łączył masę z nóżką 5 wtyku DB15 male. Długość kabla nie powinna przekraczać 2 metrów. Pamiętać należy, że ten typ połączenia nie jest zbyt odporny na zakłócenia. Gdyby nie było potrzeby równoczesnego korzystania z wyjścia midi out można usunąć rezystory R1, R2 oraz samo gniazdo midi out. Poniżej znajduje się schematyczny widok wtyku DB15 male od strony lutowania przewodów. Czerwonym kolorem oznaczono styki, do których należy przylutować przewody wedle opisu powyżej.

### Współpraca z komputerem PC przez serial port.

Istnieje nieskomplikowany sposób przystosowania sterownika do pracy z komputerami PC pozbawionymi interfejsów muzycznych. Do komunikacji wykorzystamy serial port (znany też jako COM, RS232, port szeregowy). Port ten w komputerze PC zwykle jest niewykorzystany. Rozwiązanie takie umożliwia także współpracę, gdy pozostałe porty midi są już zajęte. Konieczne będzie wykonanie układu dopasowującego, który widzimy na schemacie poniżej:

Układ scalony to popularny konwerter MAX232. Wartość kondensatorów może zawierać się w szerokim przedziale od 1μF do 10 μF. Ważne, by ich napięcie pracy wynosiło przynajmniej 16V i by ich pojemności były równe. Możemy także zastosować układ MAX232A, wtedy kondensatory powinny mieć wartość 100nF. Układ jest na tyle prosty, że nie ma potrzeby stosowania płytki drukowanej. Ważne, by nie pomylić biegunowości kondensatorów, na schemacie wbrew temu, co się wydaje nie ma błędów. 10 nóżkę układu MAX232 łączymy bezpośrednio z wyprowadzeniem P31 (TX) mikroprocesora, 15 nóżkę z ujemnym wyprowadzeniem kondensatora C5 (masa), a nóżkę 16 z dodatnim wyprowadzeniem kondensatora C5 (zasilanie). Połączenia te powinny być możliwie krótkie (kilka centymetrów). Następnie należy połączyć 7 wyprowadzenie układu MAX232 z 2 nóżką wtyku DB9 female (pasującego do serial portu), a wyprowadzenie 15 (masę) z nóżką 5. W samym wtyku należy jeszcze zewrzeć ze sobą nóżki 7 i 8. Poniżej znajduje się schematyczny widok wtyku DB9 female od strony lutowania przewodów. Czerwonym kolorem oznaczono styki, do których należy przylutować przewody wedle opisu powyżej oraz te, które należy ze sobą zewrzeć.

To jeszcze nie koniec. Należy wymienić kwarc na taki, który pracuje z częstotliwością 7,3728Mhz. Uniemożliwi to ewentualną pracę z interfejsem midi. Jeśli chcielibyśmy mieć urządzenie uniwersalne należy zamontować dwa kwarce i przełączać je w zależności od sposobu podłączenia sterownika. Przełącznik musi być miniaturowy i położony bardzo blisko kwarców oraz wyprowadzeń X1 i X2. Gdy jednak zdecydujemy się wyłącznie na pracę przez serial port możemy usunąć rezystory R1, R2 oraz samo gniazdo midi out. Możemy także pokusić się o zasilanie sterownika wprost z komputera PC. Serial port nie oferuje napięcia zasilającego o zadowalających parametrach, istnieją jednak co najmniej dwa inne łącza, które możemy wykorzystać. Pierwsze to USB. Wystarczy podłączyć 1 złącze wtyku USB z dodatnim wyprowadzeniem kondensatora C5, jak na opisie poniżej (widok wtyku od strony lutowania przewodów):

Można także wykorzystać jeden z portów PS2 (port myszy i klawiatury), jeśli któryś jest wolny. W tym celu dodatnie wyprowadzenie kondensatora C5 łączymy z wyprowadzeniem 4 wtyku Mini DIN6 male, który wkładamy do dowolnego portu PS2, jak na opisie poniżej (widok wtyku od strony lutowania przewodów):

Oczywiście w obu wypadkach jakiekolwiek dodatkowe zasilanie sterownika należy zlikwidować. Połączenie z serial portem najlepiej wykonać kablem ekranowanym, przy czym ekran (oplot kabla) będzie łączył wyprowadzenie 15 układu MAX232 (masę) z nóżką 5 wtyku DB9 female. Nie należy podłączać dodatkowych przewodów masowych do portów PS2 czy USB. Długość kabla nie powinna przekraczać 2 metrów. Pamiętać należy, że ten typ połączenia nie jest zbyt odporny na zakłócenia.

Na końcu czeka nas instalacja sterowników emulujących interfejs midi na łączu serial. Sterowniki te udostępniają bezpłatnie takie firmy jak Roland, Yamaha, Korg, Kawai i Alesis. Możemy je pobrać ze stron firmowych, można także stąd pobrać sterownik zaprojektowany przez Rolanda. Po ściągnięciu i rozpakowaniu wykonujemy następujące kroki (opis dla systemu Windows XP):

- 1. W „Panelu sterowania” klikamy „Dodaj sprzęt”.
- 2. Klikamy „Dalej”.
- 3. Zaznaczamy „Tak, urządzenie zostało już podłączone”, klikamy „Dalej”.
- 4. Zaznaczamy ostatnią pozycję na liście „Dodaj nowe urządzenie sprzętowe”, klikamy „Dalej”.
- 5. Zaznaczamy „Zainstaluj sprzęt, który wybiorę ręcznie z listy (zaawansowane)”, klikamy „Dalej”.
- 6. Zaznaczamy „Pokaż wszystkie urządzenia”, klikamy „Dalej”.
- 7. Klikamy „Z dysku”, wskazujemy ścieżkę do rozpakowanych sterowników.
- 8. Zaznaczamy „Roland Serial Midi Driver for Windows NT”, dwukrotnie klikamy „Dalej”.
- 9. Na pojawiający się komunikat o braku testów zgodności z systemem odpowiadamy „Mimo to kontynuuj”.
- 10. Pojawiający się panel „Roland Serial Midi Driver Settings” zatwierdzamy „OK” z wartościami domyślnymi.
- 11. Klikamy „Zakończ”, a następnie zgadzamy się na zresetowanie komputera.

Po resecie w aplikacji, którą chcemy sterować należy wybrać port midi o nazwie „Roland Serial Midi In”.

Gdyby w komputerze PC nie było serial portu, to należy skorzystać z przejściówki USB - serial port, zbudowanej najczęściej w postaci niewielkiej wtyczki montowanej w gnieździe USB. Należy pamiętać, by przed instalacją sterownika serial - midi zainstalować sterownik obsługujący przejściówkę USB - serial.

### Współpraca z urządzeniami wyposażonymi w złącze TO HOST.

Niektóre urządzenia wyposażone w wejścia midi posiadają także wejścia TO HOST. W szczególnych przypadkach wygodnie będzie użyć tego wejścia do sterowania urządzeniem. Cały opis przystosowania sterownika do współpracy z portem TO HOST jest zawarty w rozdziale wyżej. Jedyną różnicą jest wtyk. Zamiast złącza DB9 female użyjemy wtyku Mini DIN8 male. Łączymy 7 wyprowadzenie układu MAX232 z 3 nóżką wtyku Mini DIN8 male, a wyprowadzenie 15 (masę) z nóżkami 4 (środkową) oraz 8. W samym wtyku należy jeszcze zewrzeć ze sobą nóżki 1 i 2. Poniżej znajduje się schematyczny widok wtyku Mini DIN8 male od strony lutowania przewodów. Czerwonym kolorem oznaczono styki, do których należy przylutować przewody wedle opisu powyżej oraz te, które należy ze sobą zewrzeć.

Czasem urządzenia umożliwiają wybór szybkości pracy portu TO HOST pomiędzy 31250bps i 38400bps. Dla niższej szybkości należy użyć kwarcu 6MHz, dla wyższej 7,3728Mhz. Także i w tym wypadku kabel powinien być ekranowany, przy czym ekran (oplot kabla) będzie łączył masę z nóżkami 4 i 8 wtyku Mini DIN8 male. Długość kabla nie powinna przekraczać 2 metrów.

## ___ mamy kłopoty z uruchomieniem sterownika ________________

Budowa sterownika jest wyjątkowo prosta, jednakże kłopoty z uruchomieniem układu mogą się zdarzyć. Należy zadbać o to, by części były sprawne. Przed montażem pasywne komponenty należy sprawdzić za pomocą choćby najprostszego multimetru. Lutowanie należy przeprowadzić dokładnie i starannie nie przepalając przy tym lutów zbyt długim procesem podgrzewania. Aby zyskać pewność co do poprawności montażu i części naszego sterownika proponuję zrobienie prostej sondy jak na schemacie poniżej:

Diody świecące mogą świecić w dowolnym kolorze. Ze względu na niewielki prąd sondy należy wybrać diody o większej efektywności.

Gdy już przygotujemy sobie sondę możemy przejść do następujących testów:

Jedną z końcówek sondy podłączamy do wyprowadzenia 30 (ALE) mikroprocesora, drugą naprzemiennie do zasilania i masy. Układ sterownika będzie zmontowany poprawnie, jeśli za każdym razem jedna z diod będzie się świecić. Jeśli tak nie będzie należy przejść do następnych testów.

Jedną z końcówek sondy podłączamy do masy, drugą przykładamy do wyprowadzenia 9 (RST) mikroprocesora. Kilkukrotnie podłączamy i odłączamy zasilanie sterownika. Za każdym razem, gdy napięcie zostanie podłączone, jedna z diod powinna krótko, lecz wyraźnie błysnąć. Brak błyśnięcia oznacza problemy z kondensatorem C3, uszkodzenie mikroprocesora bądź nieprawidłowy montaż.

Podłączamy na chwilę wyprowadzenie 31 (EA) mikroprocesora do masy. Jedną z końcówek sondy podłączamy do zasilania, drugą przykładamy do kolejnych wyprowadzeń portów P2 i P0. Jedna z diod powinna się świecić, przy czym na części portu P2 powinniśmy widzieć wyraźne miganie, najwolniejsze (o częstotliwości około 7Hz) na wyprowadzeniu 28 (P27). Następnie przykładamy sondę do kolejnych wyprowadzeń portów P1 i P3. W żadnym wypadku diody nie powinny się świecić. Inne reakcje sondy oznaczają problemy z kwarcem X1, kondensatorami C1 i C2, uszkodzenie mikroprocesora bądź nieprawidłowy montaż.

W przypadku problemów z generacją komunikatów za pomocą potencjometrów należy przeprowadzić następujące testy:

Jedną z końcówek sondy podłączamy do wyprowadzenia 9 (CS) układu przetwornika, drugą naprzemiennie do zasilania i masy. Jedna z diod powinna świecić tylko po podłączeniu sondy do masy. Inne reakcje świadczą o niesprawnym mikroprocesorze bądź nieprawidłowym montażu.

Jedną z końcówek sondy podłączamy do wyprowadzenia 6 (WR) lub 22 (ALE) układu przetwornika, drugą naprzemiennie do zasilania i masy. W każdym przypadku jedna z diod powinna świecić, przy czym po dołączeniu sondy do masy znacznie słabiej. Inne reakcje świadczą o niesprawnym mikroprocesorze bądź nieprawidłowym montażu.

Jedną z końcówek sondy podłączamy kolejno do wyprowadzeń 25 (A), 24 (B) i 23 (C), drugą naprzemiennie do zasilania i masy. W każdym przypadku jedna z diod powinna świecić. Inne reakcje świadczą o niesprawnym mikroprocesorze bądź nieprawidłowym montażu.

Jedną z końcówek sondy podłączamy do wyprowadzenia 10 (CLKIN) układu przetwornika, drugą naprzemiennie do zasilania i masy. W każdym przypadku jedna z diod powinna świecić. Inne reakcje świadczą o nieprawidłowym montażu.

Jedną z końcówek sondy podłączamy do wyprowadzenia 7 (INTR) układu przetwornika, drugą naprzemiennie do zasilania i masy. W każdym przypadku jedna z diod powinna świecić, przy czym po dołączeniu sondy do zasilania znacznie słabiej. Inne reakcje świadczą o niesprawnym układzie przetwornika bądź nieprawidłowym montażu.

## ___ mamy kłopoty z zaprogramowaniem mikroprocesora ________________

Najczęstszą przyczyną problemów z zaprogramowaniem mikroprocesora jest nieprawidłowo funkcjonujący kabel połączeniowy pomiędzy komputerem PC, a mikroprocesorem. Kabel ten nie może być zbyt długi, musi być dokładnie wykonany, a połączenia (zwłaszcza od strony mikroprocesora) muszą być pewne. W razie problemów z podstawką stanowiącą końcówkę kabla możemy ów kabel przylutować na chwilę bezpośrednio do odpowiednich nóżek mikroprocesora. Istnieje możliwość, że port parallel w komputerze nie będzie chciał poprawnie współpracować z mikroprocesorem. Pozostanie nam wtedy szukać innego komputera do zaprogramowania układu.

Poniżej znajdują się komunikaty błędów aplikacji programującej z wyjaśnieniem przyczyn tych błędów.

Plik zawierający program mikrokontrolera jest uszkodzony. Prawdopodobnie został przekłamany podczas ściągania ze strony, należy go pobrać ponownie.

Całkowity brak komunikacji komputera PC z mikroprocesorem. Prawdopodobnie podstawka na końcu kabla programującego jest niedokładnie założona, połączenia są pomylone, zwarte lub przerwane, mikroprocesor lub port parallel w komputerze PC jest uszkodzony, napięcie zasilania układu jest zbyt małe, układ jest nieprawidłowo zbudowany.

Połączenie komputera PC z układem jest niepewne lub zbyt długie.

Połączenie komputera PC z układem jest niepewne lub zbyt długie, układ ma przekroczoną ilość gwarantowanych zapisów do pamięci (układ może być zapisywany około tysiąca razy).

## ___ mamy kłopoty ze stabilną pracą sterownika ________________

Sterownik midi pracuje często w środowisku o dużym poziomie zakłóceń elektrycznych. Może to wpłynąć na prawidłowe jego działanie, co w niektórych przypadkach (np. podczas koncertu) byłoby niedopuszczalne. Zawsze odpowiednio wcześniej należy dokładnie sprawdzić, jak urządzenie zachowuje się w danych warunkach. Istnieją sposoby na ograniczenie ryzyka kłopotów. W sytuacjach, gdy niezawodność układu jest sprawą priorytetową proponuję skorzystać z poniższych porad.

Jakość wykonania.

Każdy wie, że od jakości wykonania urządzenia zależy jego niezawodność, ale w praktyce różnie to bywa. Montaż musi być pewny i czysty. Niedopuszczalne są tymczasowe rozwiązania, które rozpadną się przy pierwszych wstrząsach. Układ jest na tyle prosty, że nie wymaga płytki drukowanej, wymaga jednak obudowy i odpowiedniego mocowania całości. Z pewnością jednak na wzrost niezawodności będzie miał wpływ zastosowania montażu na płytce drukowanej. Przełączniki powinny działać pewnie, potencjometry powinny być wysokiej jakości. Układ jest odporny na niezbyt precyzyjne działanie styków przełączników, nie jest to jednak odporność duża ze względu na pożądaną szybkość pracy sterownika.

Zasilanie.

Niezawodnym sposobem zasilania nie jest zewnętrzny zasilacz sieciowy, a bateria pewnych akumulatorów lub ogniw jednorazowych. W warunkach polowych każdy dodatkowy zasilacz to ryzyko jego przypadkowego wyłączenia i dodatkowy, przeszkadzający kabel. Poza tym wyeliminowanie zasilacza wyeliminuje także całkowicie zakłócenia przenoszone drogą sieciową. Gdyby jednak użytkownik sterownika zdecydował się na zasilanie sieciowe proponuję zwiększyć pojemność kondensatora C5 nawet do tysiąca μF. Zabezpieczy to układ przed chwilowymi zanikami napięcia. Nadto warto na wejściu zasilania założyć typowy dławik przeciwzakłóceniowy o wartości kilkaset μH.

Ekranowanie.

Ekranowanie to otoczenie układu przewodzącą osłoną, którą podłącza się do masy (ujemnego bieguna zasilania) tylko w jednym punkcie, w pobliżu kondensatora C5. W szczególności najlepszym rozwiązaniem jest metalowa obudowa, w której kryłby się sam układ jak i przełączniki. Potencjometry zaleca się podłączać kablem ekranowanym, przy czym, jeśli nie planuje się zastosowania metalowej obudowy całości, ekran powinien być połączony z obudową potencjometrów. Kable łączące potencjometry z przetwornikiem powinny być możliwie krótkie. Dzięki ekranowaniu zwiększa się odporność na zakłócenia elektryczne pochodzenia zewnętrznego, które mogłyby np. wywołać spontaniczne wysyłanie komunikatów.

Kabel midi.

Teoretycznie drugie (środkowe) wyprowadzenie gniazda midi out powinno być połączone do masy. Gniazda midi in natomiast absolutnie nie powinny mieć kontaktu z masą urządzenia nadawczego. Czasem jednak tak nie jest, czasem też kabel midi ma zwarcia oplotu do obudowy wtyczki, która jest połączona z masą urządzenia. Przy dłuższych kablach zaleca się jednak połączyć drugie wyprowadzenie gniazda midi out z masą w okolicy kondensatora C5 pod następującymi warunkami: drugie wyprowadzenie gniazda midi in w urządzeniu podłączanym nie ma kontaktu z masą tego urządzenia oraz metalowa obudowa wtyczek kabla midi nie jest połączona z oplotem (przewodem, który jest połączony z wyprowadzeniami drugimi we wtyczkach). Dobrym pomysłem przy długich kablach będzie założenie pomiędzy rezystorami R1 i R2, a wyprowadzeniami 5 i 4 gniazda midi out dławików o indukcyjności około 150μH. Można jeszcze pomiędzy owe wyprowadzenia, a masę założyć kondensatory o pojemności 220pF, a pomiędzy same wyprowadzenia diodę prostowniczą skierowaną anodą do wyprowadzenia 5.

Zmniejszanie rezystancji obwodów.

Następnym zabiegiem podobnym w skutkach do ekranowania jest umieszczenie pomiędzy każdym wejściem procesora, do którego można podłączyć przełącznik, a zasilaniem rezystora o wartości kilka kΩ. W praktyce stosuje się zgrabne zespoły rezystorów po osiem sztuk w jednej obudowie o rozstawie równym odległości pomiędzy końcówkami mikroprocesora, co upraszcza montaż. Dobrym uzupełnieniem będzie wprowadzenie pomiędzy końcówkę 9 (RST), a masę rezystora 10kΩ oraz diody prostowniczej skierowanej anodą do masy. Wybór potencjometru o mniejszej rezystancji także będzie miał korzystny wpływ na stabilność pracy, zwiększy jednak nieco pobór prądu.

Dziwne komunikaty.

Odbieranie nietypowych komunikatów midi może być spowodowane nieprawidłową częstotliwością zegara układu lub zbyt niskim napięciem zasilania. Drugie zjawisko wyeliminuje wymiana baterii, na pierwsze wpływ ma kwarc X1 oraz kondensatory C1 i C2. Może sie okazać, że konieczna jest wymiana kwarcu na taki, który nie sprawia kłopotów. Czasem wystarczy zwiększyć pojemności kondensatorów do około 40pF.

Przerywane komunikaty z potencjometrów.

Potencjometr to urządzenie niezbyt trwałe. Jeśli będzie często używane nastąpi jego szybkie zużycie objawiające się przerwami w pracy i skokowymi zmianami wartości. W niektórych przypadkach celowe będzie zastąpienie potencjometru układem optycznym złożonym ze źródła światła, ruchomej przysłony i fotorezystora w układzie dzielnika napięcia.

## ___ dodatki ________________

### Parametry elektryczne sterownika.

- Zakres napięć zasilania sterownika: 3,7 - 6V.
- Maksymalne dopuszczalne napięcie zasilania: 6,5V. Wyższe napięcie może spowodować uszkodzenie mikroprocesora lub przetwornika.
- Pobór prądu w funkcji napięcia zasilania dla następujących warunków: wszystkie przełączniki zwolnione, sterownik obciążony urządzeniem midi, procesor 89S52, przetwornik ADC0809.

- 1. Dioda świecąca odłączona.
- 2. Dioda świecąca podłączona.

Istnieje możliwość użycia kompatybilnych mikroprocesorów, o ile kod programu będzie mieścił się w ich pamięci, a obciążalność wyjść będzie nie mniejsza niż w mikroprocesorach wymienionych w spisie elementów.

Tutaj znajduje się karta implementacyjna sterownika.

#### Pragnę przeprosić z góry za niemożliwość indywidualnej pomocy przy ewentualnych kłopotach związanych z budową sterownika, po prostu nie mam na to czasu. Chętnie natomiast poznam wszelkie sugestie, które być może uwzględnię w następnych projektach. Budując sterownik należy być świadomym tego, że odpowiedzialność za jakiekolwiek szkody związane z jego używaniem spoczywa na użytkowniku sterownika.

#### Wszelkie prawa do zamieszczonych na tej stronie materiałów, rozwiązań oraz do projektu strony, jeśli nie zaznaczono inaczej, należą do autora - Adama Śmiałka. Jakiekolwiek komercyjne ich wykorzystanie wymaga bezwzględnie wcześniejszego kontaktu ze mną na adres: jankomuzykant@wp.pl.

#### All Rights Reserved.