Strona 1 z 1
Sterowanie komunikatami Program Change
: środa 05 lip 2006, 22:26
autor: Jassio
Mam już cały projekt na kartce,"obcykany" protokół szeregowy, wybrany mikrokontroler do prostego sterownika wysyłającego (tylko!) komunikaty MIDI Program Change +/-. Założenie jest banalnie prostę: naciśniesz przycisk 1. (np. pedał): to na kanale 1. PC+; przycisk 2. to na kanale 1. PC- ... ale... dopiero teraz sprawdziłem, że komunikatów Program change +/- tak naprawdę nie ma!
2 bajty komunikatu Program Change to:
1100nnnn 0ppppppp [nnnn: numer kanału midi] [ ppppppp: program number (0-127)]
i nie ma tu miejsca na żaden rozkaz +/- przesyła się tylko konkretne wartosci i zmienia natychmiast patcha. Czy to oznacza, ze jestem ograniczony tylko do 128 programów i co więcej: sterownik musi też dostawać komunikaty midi aby wiedział w którym patchu sie teraz znajduje i na podstawie tej informacji dodawał lub odejmował numer programu.
A może się mylę? Istnieją komunikaty Program Change +/- ?
[addsig]
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 00:36
autor: JoachimK
Spojrz w karte implementacyjna MIDI sprzetu, ktory bedzie sterowany i sie dowiesz wiecej.
Dla przykladu zmiana banku zazwyczaj ma postac:
CC#0, value, CC#32, value (wyslane jeden po drugim) i zaraz po tym leci PCh, ale wcale nie powiedziane, ze wlasnie tak jest to rozwiazane w sprzecie, ktory bedziesz sterowac.
W typowych przypadkach komunikat PCh musi zawierac nr, przy czym znowu roznie jest to interpretowane przez rozne firmy (np. tryb Performance czy Single dla instrumentow Yamaha miesci sie miedzy 0-99, a Roland ma 1-127.
Zeby wykonac czynnosc PCh+/-, musisz raczej odwalac sie do sysexa danej maszyny.
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 05:19
autor: Jassio
Tylko że to miał być uniwersalny sterownik a nie do konkretnej maszyny...
[addsig]
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 12:08
autor: JoachimK
...Tylko że to miał być uniwersalny sterownik a nie do konkretnej maszyny...
**********************
Ale jak uniwersalny, skoro musialby sie opierac o niestandardowe komunikaty?
The MIDI Specification
Mozesz jeszcze wykorzystac komunikat CC DataEntry
HEX60 (DEC 96) wartosc 127 - wartosc +1
HEX61 (DEC 97) wartosc 127 - wartosc -1
i ustawic kursor instrumentu na polu zmieniajacym patch. Tyle ze to jest "suchy" komunikat, nie ma restrykcji co do kanalu itp. i nie bedziesz mial nad tym wymaganej kontroli.
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 12:20
autor: preceli
...Tyle ze to jest "suchy" komunikat, nie ma restrykcji co do kanalu itp. i nie bedziesz mial nad tym wymaganej kontroli....
Masz rację, ten komunikat bez wstepnych deklaracji popchnie do przodu lub tyłu to, co aktualnie jest w otwartym oknie edycji instrumentu.
Odnoszę wrażenie, że kolega Jassio jednak nie do końca zgłębił temat MIDI

.
[addsig]
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 12:36
autor: Jassio
Odnoszę wrażenie, że kolega Jassio jednak nie do końca zgłębił temat MIDI

.
...
**********************
Ale mi pojechałeś po ambicji
Tak czy inaczej - szkoda, że jednak tych komunikatów nie ma. To oznacza, że sterownik musi również odbierać numer patcha, wyświetlać go i dopiero inkrementować/dekrementować itp. Niby nic trudnego, ale trochę to komplikuje urządzenie.
Dzięki za informacje.
[addsig]
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 12:44
autor: JoachimK
To oznacza, że sterownik musi również odbierać numer patcha, wyświetlać go i dopiero inkrementować/dekrementować itp. Niby nic trudnego, ale trochę to komplikuje urządzenie.
**********************
hehe, zrobic urzadzenie na dowolnym uC wysylajace komende po RS to naprawde robota na kilkanascie minut i parenascie linijek programu.
Ale rozbudowa tego samego o odebranie komunikatu i zdekodowanie go to nie tylko dolozenie gniazda MIDI IN z optotransoptorem. To sie wbrew pozorom robi od razu 3x wiekszy projekt ;)
Re: Sterowanie komunikatami Program Change
: czwartek 06 lip 2006, 12:54
autor: preceli
...Ale mi pojechałeś po ambicji

...
Hej, to chyba dobrze
...Tak czy inaczej - szkoda, że jednak tych komunikatów nie ma. To oznacza, że sterownik musi również odbierać numer patcha...
Nie, jeśli mowa o sterowniku to raczej nadawać. A to oznacza przy tym, że aby być uniwersalnym musi mieć on możliwość dowolnych deklaracji w zakresie grup kontrolerów.
A tak w sumie - jak uważnie przejrzysz dział w którym zapodałeś swój temat, to spokojnie wyciągniesz wiele
konkretnych patentów dla swej konstrukcji.
[addsig]