Interfejs MIDI do organów Unitra Student 106

Sławomir Krysztowiak

2011-10-20

Odkąd sięgam pamięcią, po domu walały się organy Unitra Student 106 – najprostszy chyba model produkowany przez rodzimą Unitrę Eltrę, stworzony w celach typowo edukacyjnych. Ich klawiatura składa się z 41 klawiszy, po wciśnięciu których rozlega się niezbyt zachęcający dźwięk. Oprócz tego mamy 5 przełączników zmieniających barwę oraz dwa potencjometry: od głośności i efektu vibrato. Ten drugi najbezpieczniej ściągnąć do lewej strony i nigdy nie ruszać – wibracje sprawiają, że dźwięk z niezbyt zachęcającego przeistacza się w nie do wytrzymania.

Organy Unitra Student 106
Organy Unitra Student 106

Szczyt techniki to nigdy nie był, niemniej jednak w pierwszych latach podstawówki zacząłem na tym brzdąkać i nawet nieźle mi to szło. Później organy się zepsuły; niektóre klawisze zaczęły wydawać inny dźwięk niż powinny. Sprzęt powędrował do piwnicy z nadzieją, że "może kiedyś się odda do naprawy".

Pod koniec 2009 roku wpadłem na znacznie lepszy pomysł, niż zwykła naprawa. Zachciało mi się wyposażyć organy w wyjście MIDI. Co to jest, spytacie? Po szczegóły techniczne odsyłam do Wikipedii. Na chłopski rozum chodzi o to, aby podłączyć organy do komputera i aby przy wciśnięciu klawisza wysyłały one informację o tym, który to klawisz. Komputer, wyposażony w odpowiednie oprogramowanie, po otrzymaniu takiej informacji syntezuje dźwięk. Oczywiście, możliwości MIDI w ogólności są większe, ale taka była główna idea. Dzięki syntezatorom programowym, których istnieją tysiące, można uzyskać w zasadzie dowolne brzmienie, czy to pianina, organów Hammonda, czy cymbałów.

Tyle o idei. Jak ją zrealizować w praktyce? W prosty sposób. Po pierwsze, protokół MIDI to najzwyklejsza transmisja szeregowa, mikrokontroler ATMEGA8 za 5 złotych radzi sobie z nią wystarczająco dobrze, jak się go odpowiednio zaprogramuje. Po drugie, temat MIDI jest tak oklepany, że bardzo łatwo znaleźć biblioteki odwalające za programistę praktycznie całą robotę, tj. inicjowanie połączenia, konstrukcję i transmisję komunikatów. W mym projekcie użyłem biblioteki autorstwa Rafała Baranowskiego udostępnianej na licencji GPL. Pozostało jedynie polutować koło setki kawałków kabla, 41 diod i zaprogramować funkcję sprawdzającą stan wciśnięcia klawiszy i wywołującą biblioteczne metody wysyłające odpowiednie komunikaty.

Sprawdzenie, czy klawisz jest wciśnięty jest w ogólności prostym zadaniem. Ustawiamy dany pin kontrolera jako wejście z podciągnięciem do VCC. Wciśnięcie zwiera pin z masą. Jeśli pin jest w stanie wysokim, klawisz nie jest wciśnięty, a w przeciwnym wypadku jest. Jednak w naszej sytuacji pojawia się tutaj niewielkie wyzwanie. Mamy 41 klawiszy do obsłużenia, a wejść w kontrolerze możemy wykorzystać maksymalnie 23. Co z tym począć? Należy wykorzystać koncepcję keyboard matrix, zilustrowaną na poniższym schemacie:

Koncepcja keyboard matrix
Koncepcja keyboard matrix

Piny B1-B7 są skonfigurowane jako wejścia z podciągnięciem do VCC. Piny C1-C6 początkowo ustawiamy w stan wysoki. Następnie powtarzamy następujące działania: jeden z pinów C (dla ustalenia uwagi załóżmy, że jest to C1) ustawiamy w stan niski, po czym sprawdzamy stan wejść B1-B7. C1 z powrotem ustawiamy w stan wysoki. Procedurę powtarzamy kolejno dla C2, C3 itd. W ten sposób jesteśmy w stanie obsłużyć 42 klawisze używając jedynie 13 pinów Atmegi. Cały proces jest powtarzany tak szybko, że na pewno żaden człowiek nie wychwyci teoretycznych opóźnień. A po co diody? Zostawiam to do rozważenia ewentualnym czytelnikom.

Montaż jest na tyle prosty, że nie zamierzam go szczegółowo opisywać, podobnie jak nie zamierzam umieszczać schematu, bo takowy nigdy nie powstał. Cała konstrukcja bez problemu mieści się na skrawku płytki uniwersalnej, a prócz Atmegi zawiera jedynie elementy odpowiedzialne za jej zasilanie.

Kod źródłowy projektu znajduje się tutaj, choć zapewne nie przyda się nikomu w "czystej" formie – miałoby to sens jedynie wówczas, gdyby każdy lutował kabelki w identycznej konfiguracji co ja.

Na zakończenie, muzyczka zagrana na zmodernizowanych organach: The Enterteiner. Oraz kilka "rozbieranych" zdjęć z realizacji przedsięwzięcia:

ATMEGA 8, stabilizator i kawałek płytki drukowanej
ATMEGA 8, stabilizator i kawałek płytki drukowanej
Diody i plątanina kabli
Diody i plątanina kabli

Może zainteresuje Cię: