Jak správně implementovat Program Change

Vše co se týka MIDI (mimo keyboardů)
PMC
Příspěvky: 209
Registrován: 28 bře 2017 18:03

Jak správně implementovat Program Change

Příspěvek od PMC »

Dobrý den. Tápu v tom, jak správně dle GM2 implementovat reakci na příkaz Program Change (PC) v souvislosti s kontrolerem Bank Select (BS).

Typicky jdou příkazy po sobě takto: BS.MSB BS.LSB PC, ale někdy jde PC samostatně bez BS.
Mám v takovém případě použít poslední nastavené BS (tj. musí se pamatovat poslední použité BS pro každý kanál) nebo mám použít defaultní BS dle kanálu (melodický/rytmický) tedy se v podstatě chovat podle GM1?

Děkuji.

Uživatelský avatar
dendy
Příspěvky: 14125
Registrován: 12 črc 2002 11:16

Re: Jak správně implementovat Program Change

Příspěvek od dendy »

dava mi viac zmysel druha moznost - cize pouzit default kanala... s tym pamatanim si posledne poslaneho BS to by bolo na dlhe lakte a podla mna by to sposobovalo skorej chaos

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin »

Ked posles nejaku zmenu banky a potom posielas len PC , tak sa stale hybes v tej banke .. az kym zase nedas zmenu banky , alebo GM reset ..

Uživatelský avatar
MDudas
Příspěvky: 3823
Registrován: 12 črc 2011 22:55

Re: Jak správně implementovat Program Change

Příspěvek od MDudas »

PMC píše:Mám v takovém případě použít poslední nastavené BS (tj. musí se pamatovat poslední použité BS pro každý kanál) ...
Ale ved MIDI su musi pamatat kazdy posledny prijaty kontroler. BS neni vynimka.
Neviem o tom, ze by BS a PC boli nejake "parove", t.j nech pouzijes ktorykolvek, ten druhy sa pouzije podla posledneho nastavenia.
Cize si tiez myslim ze to funguje, ako pise pytkin.

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

Re: Jak správně implementovat Program Change

Příspěvek od pavlii »

Přesně tak.

P.

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

Re: Jak správně implementovat Program Change

Příspěvek od PMC »

No, ja si nejsem jist, mam pocit, ze jsem kdysi nekde v nejake norme cetl, ze BS musi PC predchazet tesne, ale ted to nemohu dohledat. Ono to ma totiz neprijemne konsekvence.

Treba mam mid, ktery v jednom kanale strida nastroje pricemz nektere jsou zadany jako 0 0 PC a nektere jen PC. Ten mid jsem nahral do Pa600 a v sekvenceru zmenil prirazeni nastroje na zacatku kanalu a ulozil. Korg rozhodne neupravi nasledujici PC, ktere bylo bez 0 0, takze bych tim podle vas v podstate nahodne zmenil nasledujici PC. To je podle me dobry duvod, proc by BS mel predchazet tesne. Takze ted jeste je jedna vec, co rika norma, jak to interpretovat (protoze GM2 rika ze je zpetne kompatibilni s GM1 a take rika, jak se chovat, kdyz se pouziva jen PC, tj. def pouzivat BS 121 0 u melodickych kanalu a 120 0 u rytmickeho, ale neresi kombinaci obou zpusobu) a jak je to realne implementovane v nastrojich. Protoze Korg, myslim, bez jistoty, u dalsiho PC zmenu BS u predchoziho PC ignoruje, ale nepamatuji se uz, jestli tam mezi tim nebylo jeste nejake 0 0 PC.

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

Re: Jak správně implementovat Program Change

Příspěvek od PMC »

Také je možné, že se BS 'zresetuje' po prvním přijetí PC.

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin »

PMC : neviem .. nejak som sa v tych tvojich uvahach stratil .. ale proste to funguje ako piseme .. BS zmeni banku .. PC meni v posledne zmenenej banke zvuk .. zbytocne to cele dako komplikujes .. Ked si pozries komercne midi fajly , vzdy su na zaciatku na kazdom midi kanale poslane udaje o banke a zvuku ..

Uživatelský avatar
MDudas
Příspěvky: 3823
Registrován: 12 črc 2011 22:55

Re: Jak správně implementovat Program Change

Příspěvek od MDudas »

pytkin, ono je ale mozne, ze niektori vyrobcovia si MIDI vysvetluju po svojom... :?
PMC píše:To je podle me dobry duvod, proc by BS mel predchazet tesne....
Podla mna uz normu mali davno zmenit tak, aby Program Change mal jeden byte navyse. Teda aby Program Change vzdy zvolil banku aj program.

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

Re: Jak správně implementovat Program Change

Příspěvek od PMC »

Pytkin píše:PMC : neviem .. nejak som sa v tych tvojich uvahach stratil ..
Tak ja to zkusim napsat srozumitelneji.

1) Mam midi soubor, ktery na zacatku kanalu ma uvedeno treba 'PC 1' a nekde uprostred 'PC 60', oboji bez uvedeni BS (cisla volim nahodne).
2) Nahraju midi do keyboardu a necham prehrat. Hraje nastroj MSB 121 LSB 0 PC 1 a potom MSB 121 LSB 0 PC 60 v souladu s GM2 normou, ktera takove chovani stanovuje.
3) V sequencer editoru zmenim nastroj na zacatku kanalu na jiny, treba na nejaky Factory mimo GM sadu, treba MSB 121 LSB 3 PC 1.
4) Spustim prehravani, nejprve hraje nastroj MSB 121 LSB 3 PC 1 a potom ma hrat co?

a) MSB 121 LSB 3 PC 6 - tj. z duvodu pamatovani zmeny BS zmenou nastroje na zacatku kanalu jsem zmenil i nastroj v pulce kanalu, v podstate nahodny, mozna i neexistujici?
b) Nebo MSB 121 LSB 0 PC 60 - tj. ten puvodni, protoze tady ke zmene nastroje dojit nesmi?

V pripade b) pak k tomuto chovanáma dojit, protoze
x) BS musi tesne predchazet PC
y) PC resetuje BS
z) pri zmene PC musi sequencer editor kouknout co je dal a opravit vsechny nasledujici vyskyty PC (coz se v praxi nedeje a teoreticky pri nejakych real time zmenach streamovaneho midi k tomu nemusi mit ani pristup)

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

Re: Jak správně implementovat Program Change

Příspěvek od PMC »

MDudas píše:Program Change mal jeden byte navyse. Teda aby Program Change vzdy zvolil banku aj program.
To nelze, protoze by doslo ke ztrate kompatibility a nemoznosti spoluprace mezi nastroji. U midi se vyznam byte rozpoznava i podle pozice, ac data a prikazy se lisi i prvnim bitem, ale kdo to dnes kontroluje a i kdyby, jak by mel vedet, jak s prebytecnym bytem nalozit?. Proto se to resi kontrolerem na zmenu banky. Navic by ty byte musely byt dva, MSB a LSB.

Uživatelský avatar
MDudas
Příspěvky: 3823
Registrován: 12 črc 2011 22:55

Re: Jak správně implementovat Program Change

Příspěvek od MDudas »

To samozrejme viem.
A uz som pochopil jadro tvojej otazky. Spravanie masin v General Midi mode je pre mna mala zahada, takze sorry. :oops: :(

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

Re: Jak správně implementovat Program Change

Příspěvek od pavlii »

Tady vůbec nejde o GM, ale o MIDI normu. Konkrétně ale o variantu GM2, kde mohou být některé věci upřesněny. Dokážu si představit i to popsané chování, kdy PC bez předcházejících (těsně) BS zpráv vybírá nástroj z GM2 defaultní banky - bez ohledu na předchozí BS zprávu (myslím tím poslední v minulosti).
Tohle by ale mělo být v popisu GM2 standardu a výrobce nástroje by pak toto chování měl dodržet v implementaci. Pokud to v GM2 popsané není, může se to chovat skoro jakkoli; pokud se jedná o přípravu materiálu pro jeden konkrétní nástroj, tak celý dotaz trochu nechápu, protože pár pokusů řekne o chování zcela vše 8)

P.

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

Re: Jak správně implementovat Program Change

Příspěvek od PMC »

GM2 resi chovani BS a take uvadi, jak zachazet se souborem dle GM1 bez uvedeni BS (defaultni BS 120 nebo 121 dle kanalu), ale neresi, pokud jsem schopen posoudit, kombinaci obeho.

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

Re: Jak správně implementovat Program Change

Příspěvek od pavlii »

No tak jak píšu - jde-li o jeden nastroj, tak vyzkoušet a uvudíš. Má-li to být obecné, tak postupovat pro jistotu způsobem, který by správné chování zajistil bez ohledu na vágnost specifikace (=použít BS+PC).

P.

Odpovědět