Jak správně implementovat Program Change

Vše co se týka MIDI (mimo keyboardů)
Uživatelský avatar
MDudas
Příspěvky: 2653
Registrován: 12 črc 2011 22:55

Re: Jak správně implementovat Program Change

Příspěvek od MDudas » 30 črc 2017 21:51

Vsetko hovoris pekne, logicky a spravne. Lenze potom su tu este ti ... Japonci a ich odlisna logika. :)
Napr... ked po BS hned dalsia sprava nie je PC, tak ju moze odignorovat ako chybu, lebo daky japonsky system dizajner sa rozhodol, ze "dobre vychovana" masina ich vzdy posiela spolu. (mame v robote japonske masiny ineho typu - viem, o com hovorim :oops: )

OK, ale to je teoria a Pavlii ma pravdu - ked norma neni jasna, tak to musi byt blbuvzdorne.
Bohuzial uz balim a odchadzam na dovo, takze to dalsi tyzden na Kurze-wajle neotestujem. Sorry PMC.

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 » 31 črc 2017 19:15

Pytkin píše:pavli : Mne preslo rukami veeelmi vela navodov , ale taketo informacie sa tam nikdy nepisali .. Ak nejaky nastroj ignoruje poslanu banku (aj ked davno) , tak to podla mna neni v poriadku .. a zaujimalo by ma , aky cas pred PC musi byt ta banka poslana , aby ju este akceptoval ..
Já jsem v jedné odborné diskusi četl, že BS se má pamatovat do příchodu prvního PC a pak se má zresetovat. To má svou logiku právě pro midi soubory, aby změna nástroje na jednom místě souboru nevyvolala nečekané změny nástrojů jinde v souboru. Ale diskuse není závazná a zdroj této ínformace nebyl uveden. Nevydává asociace třeba nějaká errata nebo doporučení k nejasným částem midi specifikace?

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 » 31 črc 2017 19:50

A třeba tady http://www.personal.kent.edu/~sbirch/Mu ... ssages.htm se zas píše "The messages Bank Select MSB, Bank Select LSB, Program Change must be sent as a sequence, with minimal delay between them".

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 31 črc 2017 20:39

PMC : No to uz ako sa k tomu postavia jednotlivy vyrobci , to uz nikto neovlivni ..

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 31 črc 2017 20:41

PMC : A co vlastne riesis ? Preco sa tymto tak detailne zaoberas ? Robis daku aplikaciu alebo dake midi fajly ? alebo o co ide ?

Ja sa zaoberam s MIDI asi 30 rokov ale to co ty tu riesis , s tym som nikdy nemal problemy ..

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 » 01 srp 2017 05:48

Dělám software, který upravuje popř. streamuje midi soubory, a který mj. může dávkově vyměnit nástroj(e). A nevím jak to správně implementovat, abych ty midi nerozbil, tj nepřestaly na některých nástrojích fungovat. Jako první mě napadlo, všem samotným PC předřadit defaultní BS, ale pokud by nějaký midi spoléhal na to, že BS stačí uvést jen jednou, tak ho rozbiju. Navíc pokud nemusí BS předcházet těsně, tak ho musím hledat ve všech eventech. Ale třeba korg ve svém editoru změní nástroj jen na jednom místě, těch dalších si nevšímá, takže toto řešení, byť se mi jeví jako nejspolehlivěji, správné asi není. Pokud BS naopak musí předcházet těsně, jinak se ignoruje, pak ten midi rozbiji, když ho přenesu k dalším PC. Tak je to takové nejisté. Také jsem se dočetl, že u kontrolerů je možno měnit jen MSB nebo LSB. Nevím jak to je v případě BS, ale vím, že u některých nástrojů jsou banky organizovány tak, že jedno z toho je vždy nula a dotyčný byte se ignoruje a neposílá.

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

Re: Jak správně implementovat Program Change

Příspěvek od dendy » 01 srp 2017 08:34

podla mna proste treba nabachat do toho MIDI (ak so to dobre pochopil robis nieco co generuje MIDI subor) pred kazdy PC to BS .. a hotovo .. tak nemusis riesit ako to interpretuje nastroj ktory to bude prehravat, a ci riesi BS 200 ms alebo 3 sekundy pred PC .. proste ty to tam ulozis tak ze BS a hned za tym PC VZDY a hotovo.. mas to na 100% nepriestrelne a bude to fungovat vzdy a vsade ..

> Jako první mě napadlo, všem samotným PC předřadit defaultní BS

nie.. praveze proste natvrdo s kazdym PC este posles naposledy poslane BS (znovu) .. trochu viac dat sice, ale to je zanedbatelne a mas na 100% zarucene ze kazda PC sa bude tykat tej spravnej banky (bude to davat zmysel z pohladu logiky uzivatela, ktory zrejme predpoklada ze banku ktoru naposledy nastavil tak ta plati)

ps.: viem ze v prvom poste na 1 strane som pisal nieco ine ale viac som sa nad tym zamyslel programatorsky, a takto to dava vacsi zmysel ...
Pytkin píše:Ja sa zaoberam s MIDI asi 30 rokov ale to co ty tu riesis , s tym som nikdy nemal problemy ..
bo to riesis ako uzivatel, pracujes s nastrojmi ktore tu zi maju viac-menej proste vyriesene, on to riesi ako programator, cize ako to spravne urobit aby to uzivatelia ako ty mohli riesit 30 rokov bez problemov :mrgreen:

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 » 01 srp 2017 11:13

PMC píše:...Pokud BS naopak musí předcházet těsně, jinak se ignoruje, pak ten midi rozbiji, když ho přenesu k dalším PC....
Nerozumím - proč by se to tímto krokem mělo "rozbít"?

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 » 01 srp 2017 12:35

dendy píše:nie.. praveze proste natvrdo s kazdym PC este posles naposledy poslane BS (znovu) .. trochu viac dat sice, ale to je zanedbatelne a mas na 100% zarucene ze kazda PC sa bude tykat tej spravnej banky (bude to davat zmysel z pohladu logiky uzivatela, ktory zrejme predpoklada ze banku ktoru naposledy nastavil tak ta plati)
No, takhle to ale rozbiju, protoze den dalsi PC mohl hrat puvodne nastroj z jine banky, takze kdyz uz, tak bych mel takhle rozkopirovat ten puvodni BS, ktery predpokladam bude defaultni, tj. v puvodnim midu budou jen PC. Ale mas pravdu, ze ne vzdy to tak musi byt. Takova implementace bude ale spravna jen za predpokladu, ze se BS ma pamatovat, coz neni jednoznacne. Ale pochopil jsem diky diskusi, ze jednoznacne to asi zodpovedet nelze. Pochybnosti o spravnosti ve me paj vzbuzuje to, ze editor v keyboardu se takto nechova. A vic noveho k tomu uz tato diskuse asi neprinese. Dekuji vsem zucastnenym.

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

Re: Jak správně implementovat Program Change

Příspěvek od dendy » 01 srp 2017 13:17

ono dolezite je ze su 2 uhly pohladu

- pohlad nastroja ktory hra midi - aku banku pouzit ked dostane PC - tam je proste idealne s kazdym PC mu poslat aj tu banku nech to neostane v nejakej neurcitej polohe zavisiacej od konkretnej implementacie daneho nastroja

- pohlad pouzivatela -a ten ocakvava ze kazde PC sa vztahuje na banku ktoru naposledy nastasvil - aj ked to bolo trebars pred 3 hodinami :)

posielanie BS vzdy s PC riesi jednoznacne oba problemy, nastroj vie co ma hrat a a ty budes vzdy posielat posledny BS ktory uzivatel spravil aby to bolo konzistentne s jeho logikou - ze proste hrat ma to co si nastavil az pokym nenastavi daco ine ..

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 02 srp 2017 00:04

Dendy : Ano .. ale ked sa ma zahrat iny zvuk , lebo nebola poslana banka , a mala by sa pouzit defaultna , tak potom ked tam popridava BS , tak to rozbije .. Neviem .. Ja som si vzdy myslel ze zvuky sa vyberaju z posledne poslanej banky .. Ale nikdy som detailne neskumal ako sa rozne nastroje chovaju .. Mozno to je definovane v dakej GM(2) norme .. V kazdom pripade si myslim ze jeden nastroj to moze mat tak , a druhy inak .. takze tie midi fajly budu hrat inak ..

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

Re: Jak správně implementovat Program Change

Příspěvek od dendy » 02 srp 2017 09:02

> ale ked sa ma zahrat iny zvuk , lebo nebola poslana banka , a mala by sa pouzit defaultna , tak potom ked tam popridava BS , tak to rozbije

ajo to mas pravdu.. zapeklita situacia :) este ze nemusim nic take programovat :)

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 09:29

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.


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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 02 srp 2017 11:06

pavlii : hej to je midi norma .. ale on ked chce byt co najviac kompatibilny , tak musi prihliadat na specificke nastroje ..

PMC : mna inak napada .. Ked robis software , tak by som to spravil takto .. Defaultne by som posielal Banky a PC ako su .. a do preferencii by som dal moznost zakliknut mod , aby pri kazdom PC , posielal aj posledne poslanu banku .. cize ak na zaciatku bude nejaka banka , tak on ju prida do kazdeho PC ktore pojde behom songu .. resp. samozrejme nejaku inu banku , ak sa v priebehu songu zmenila ..

Odpovědět