Jak správně implementovat Program Change

Vše co se týka MIDI (mimo keyboardů)
Uživatelský avatar
pavlii
Moderátor
Příspěvky: 3010
Registrován: 05 čer 2002 19:23

Re: Jak správně implementovat Program Change

Příspěvek od pavlii » 02 srp 2017 11:12

No to hej, ale já jsem jen chtěl malinko osvětlit místo, kdy tady zaznělo, že to není jasně popsané. Já to chápu tak, že to jasně popsané je. Nicméně pokud nástroj MIDI normu nedodržuje (tohle už by se v jeho specifikaci najít mělo), tak je to samozřejmě peklo a případné řešení tu už zaznělo. Pokud MIDI normu dodržuje (a tohle je obecná část - tady bych řekl, že by to být dodržované fakt mělo), není BS kontrolerů třeba (pokud se stále pohybuje v rámci jednoho banku).

P.

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 02 srp 2017 16:40

pavlii píše:Tak jste mě donutili si to přečíst. Stačí fakt jen dávat pozor 8)

- kombinace BS+PC musí následovat ve vzájemném sledu, jinak může dojít k nesprávné interpretaci (tj. chápu výklad normy tak, že nelze vyslat jen BS MSB/LSB aniž by následovala zpráva PC; bz PC nebude další chování korektní).
- pokud byla změněna banka na jinou než defaultní, jakékoli další PC zprávy pracují pouze s touto bankou (tj. platí to, co tu píše od začátku Pytkin - poslední korektně zvolená banka zvuků zůstává platná až do další změny).

Kdo nevěří ať tam běží - strana 13 MIDI detailní specifikace.

P.
Uz jsem se k tomu nechtel vyjadrovat, ale neda mi to. Copak ty sam nevidis v tech dvou tvrzenich rozpor? A naopak norma sama uvadi (ja konkretne koukam do posledni GM2, verze 1.2, jestli se pamatuji), ze vyslani samotneho BS bez PC nesmi nic ovlivnit, takze tam korektni chovani je standardizovano, byt je to tedy jen doporuceno, nikoliv vyzadovano. Krom toho upozornuji, ze na to stale koukas jako na realtime midi stream z pohledu nastroje, kdy nelze zmenit minulost, koukas jen dopredu. Nekoukas na to z pohledu zpetne modifikace zaznamu, kdy z pohledu nasledujicich eventu menis minulost a jak tu zmenu korektne provest, pokud zmenou jednoho eventu nechces nechtene zmenit eventy nasledujici.

Uživatelský avatar
pavlii
Moderátor
Příspěvky: 3010
Registrován: 05 čer 2002 19:23

Re: Jak správně implementovat Program Change

Příspěvek od pavlii » 02 srp 2017 20:46

Hele - tohle už mi přijde malinko overkill. A ne, rozpor v tom žádný nevidím. Prostě je v normě napsáno, že pouhé přepnutí banku, aniž bys z něj hned volil zvuk, není doporučeno. Já v tom dokonce ani nespatřuju logiku (přepnout na nástroji banku zvuků a nedělat s tím nic je divný). Každopádně pokud GM2 specifikace nijak nerozporuje přepínání banků v GM2 kompatibilních nástrojích, aniž by se hned volil nějaký zvuk, tak je to každopádně stejně chování, které tu už zaznělo: přepne se banka zvukú a až do nejbižší kombinace BS kontrolerů se zvuky vybírají z ní. Nic těžkého IMHO.
A jak jinak bych na to měl koukat než na realtime stream? Vždyť tu ani o nic jiného nejde. Už se nějak ztrácím v tom, o co tady vlastně jde.

Myslím, že odpověď na otázku tohoto vlákna tu už několikrát zazněla a víc se už asi nevytěží 8)

P.

Uživatelský avatar
Pytkin
Moderátor
Příspěvky: 21267
Registrován: 23 kvě 2002 16:23

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 02 srp 2017 23:42

pavlii : Tu ale zaznela informacia , ze GM2 norme je definovane , ze ak nepride BS , tak sa vybera z banky 0 .. resp. z defaultnej .. cize posles banku 100 , pc 100 hra dany zvuk .. za tym posles PC 1 , tak nehra PC1 z banky 100 ale z banky 0 .. Co sa mne zda ako divne chovanie .. Ale ak to GM2 tak standardizuje , tak to treba akceptovat ..

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 00:55

Vzdyt jsem uvedl, jak na to mas koukat. Jako na zaznam, kde menis minulost. Kde chtenou zmenou jednoho eventu muzes nechtene zmenit neomezeny pocet eventu nasledujicích. Ty resis otazku, jak existujici midi interpretovat, nikoliv jak spravne zmenit zaznam.

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 01:34

Pytkin píše:pavlii : Tu ale zaznela informacia , ze GM2 norme je definovane , ze ak nepride BS , tak sa vybera z banky 0 .. resp. z defaultnej .. cize posles banku 100 , pc 100 hra dany zvuk .. za tym posles PC 1 , tak nehra PC1 z banky 100 ale z banky 0 .. Co sa mne zda ako divne chovanie .. Ale ak to GM2 tak standardizuje , tak to treba akceptovat ..
Ne, takto uplne ne. V GM2 je je definovana defaultni banka 79H/00H pro kanaly 1-9 a 11-16 a 78H/00H pro kanal 10. Ty pouzijes, kdyz neuvedes BS. Ale dobu platnosti BS tato norma neresi.

Uživatelský avatar
Pytkin
Moderátor
Příspěvky: 21267
Registrován: 23 kvě 2002 16:23

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 03 srp 2017 02:23

PMC : Ved to je divne... Ze musi byt predsa zadefinovane , ako dalekoho moze byt ten BS od PC ..

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 05:38

Ono je to cele neprehledne, ty normy navazuji na sebe, ke kazde jsou dodatky. Nektere se odkazuji na specifikaci midi z roku 1999 a pozdejsi, ale ja na strankach asociace nasel jen z roku 1996. Krom toho existuji jeste nejake dokumenty, ktere delaji tanecky kolem firemních norem GS a XG a vzajemne kompatibility. GM2 se odvolav na GM1 a ta se zase definuje jako upresneni obecne midi normy, takze tady asi bude platit ustanoveni z obecne midi normy, byt rozsirene o defaultni banku z GM2, kde se uvadi co napsal pavlii:

The transmitter must transmit the MSB and LSB as a pair, and the Program Change must be sent immediately after the Bank Select pair. If their is any delay between these messages and they are passed through a merging device (which may insert another message) the message may be interpreted incorrectly.

Pricemz sw upravujici midi se da asi povazovat za merging device a norma upozornuje na problem, pokud PC nenasleduje okamzite. K moznosti existence zarizeni, ktere modifikuje midi zpravy se pak norma nevyjadruje nijak. Ta sama norma soucasne uvadi, ze:

After switching to another bank, any Program Change messages transmitted singularly will select other program in that bank.

Zde tedy uz norma neresi ani pouziti merging device, prestoze jde v principu o ten samy problem. Z toho me vyplyva, ze norma si tu pripousti/umíznuje problem, ktery sama neresi. Jestli existuje nejaka norma pro merging device, nebo jeste lepe modify device, aby ta zarizeni pracovala jednotne netusim, oficialne asi ne a neoficialne jsem take nic nenasel.

Mne z toho vyplyva, ze nejlepsi implementace modifikace asi bude pamatovat si nikoliv poslední/nový BS (tj. ten ktery jsem nastavil) ale puvodni BS a tento vlozit pred kazdou samotnou PC zpravu, dokud nenarazim na nejaky dalsi puvodni BS. Byt se tak midi editor/sequencer Korgu pri zmene nastroje nechova.

Uživatelský avatar
pavlii
Moderátor
Příspěvky: 3010
Registrován: 05 čer 2002 19:23

Re: Jak správně implementovat Program Change

Příspěvek od pavlii » 03 srp 2017 08:10

To mi přijde jako nesmysl. Pořád tu nevidím rozpor a ani problém; pokud je už přepnuto na nějakou banku zvuků, nemůže "merging device" problém udělat, protože v datech jsou jen PC zprávy. Problém s tím zařízením "mezi" může nastat právě jen při sekvenci BS+PC ve smyslu, že se mezi tyto zprávy vloží (v rámci toho mezizařízení) nějaká jiná. Jinak tím "okamžitě" se myslí prostě těsně po (tady je potřeba nechat nějaký čas na zpracování BS zpráv, to je u každého zařízení jiné) - hlavně nesmí být nic mezi.

Vůbec nechápu ten poslední odstavec. Asi bychom se měli vrátit o pár stránek zpět a začít znova tím, o co vlastně jde. Jestli o vytváření nových MIDI sekvencí, tak - pokud nevezmu v potaz to, co říká MIDI norma, jak jsem psal - je třeba "otrocky" dodržovat BS+PC kombinace ve všech místech, kde se mění zvuk. Pokud je v tom zamontovaná i úprava již existujících MIDI sekvencí, tak tam jde o to, JAKÝ zvuk má v daném místě hrát. Když bych se odpíchl opět od MIDI normy, tak by se nemuselo doplňovat nic. Když bych to vzal z druhé strany, tak to asi nemá řešení, protože nikdo neví, jaký zvuk měl v daném případě hrát. Já osobně bych dodržoval normu - zase tak vágně to napsané není a jsem dost přesvědčen, že to takhle i všude funguje (aneb není třeba BS doplňovat).

P.

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 08:35

Promiň, ale znovu to vysvětlovat nebudu, jen bych se opakoval. Neřeším interpretaci, ale modifikaci, norma zpusob modifikace nestanovuje a připouští problémy v interpretaci při modifikaci. Cílem je nerozbít midi při úpravě, tedy aby uživateli nezačli z jeho pohledu náhodně a nečekaně a možná i nepozorovaně znít jinde jiné nástroje než v místě úpravy. Nástroj, který by to dělal, by považoval za vadný, byť je to zdánlivě v souladu s normou, a nedotkl by se ho ani klackem.

Uživatelský avatar
pavlii
Moderátor
Příspěvky: 3010
Registrován: 05 čer 2002 19:23

Re: Jak správně implementovat Program Change

Příspěvek od pavlii » 03 srp 2017 09:35

No však - vytváření nebo modifikace - jedno jest. Jde jen o volbu, jak se k tomu postavit. Osobně bych se opřel o normu a nic nikam nedoplňoval (BS před PC). Pouze pokud by se někde vyskytly samostatné BS kontrolery, tak bych je přesunul (bude-li nutno) k nejbližšímu PC kontroleru, aby mezi nimi žádné MIDI eventy nebyly. Tohle by mělo beze zbytku pokrýt správné chování.

P.

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 12:26

Není to jedno, modifikace může mít vedlejší účinky a ty je nutno ošetřit.

Uživatelský avatar
Pytkin
Moderátor
Příspěvky: 21267
Registrován: 23 kvě 2002 16:23

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 03 srp 2017 14:15

PMC píše:Mne z toho vyplyva, ze nejlepsi implementace modifikace asi bude pamatovat si nikoliv poslední/nový BS (tj. ten ktery jsem nastavil) ale puvodni BS a tento vlozit pred kazdou samotnou PC zpravu, dokud nenarazim na nejaky dalsi puvodni BS. Byt se tak midi editor/sequencer Korgu pri zmene nastroje nechova.
Neviem ci som to pochopil spravne .. Ale podla mna by si mal pamatat posledny BS a ten vkladat pred PC (ak uz to ma robit) ..

PMC
Příspěvky: 75
Registrován: 28 bře 2017 18:03

Re: Jak správně implementovat Program Change

Příspěvek od PMC » 03 srp 2017 14:27

Poslední BS je zavádějící pojem, který může mít různý výklad. Já bych je nazval radši původní a nový BS a abych zabránil změně chování následujících osamocených PC, tak k nim musím zkopírovat původní BS. Je to ochrana proti nežádoucí změně banky následujících PC.

Uživatelský avatar
pavlii
Moderátor
Příspěvky: 3010
Registrován: 05 čer 2002 19:23

Re: Jak správně implementovat Program Change

Příspěvek od pavlii » 03 srp 2017 14:40

Poslední BS je naprosto přesný pojem - je třeba postupovat v datovém toku postupně (=od začátku streamu).

P.

Odpovědět