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]