Jak správně implementovat Program Change

Vše co se týka MIDI (mimo keyboardů)
Uživatelský avatar
Pytkin
Moderátor
Příspěvky: 21268
Registrován: 23 kvě 2002 16:23

Re: Jak správně implementovat Program Change

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

50 PC v jednom midikanale ? To musi byt dost divna hudba ..

pozri .. ak si skladam svoju muziku , tak si tam vkladam eventy ake potrebujem .. rozhodne by som nechcel aby mi tam daco soft menil .. Ak by som programoval nejaky soft na editaciu midifajlov a chcel by som spravit zjednodusenie pre usera , ked chce v danom momente zmenit zvuk , tak ano .. ked vlozi zvuk z inej banky , za nu by bolo vhodne dat tam tu co tam bola pred tym .. aby nasledujuce PC vyvovalali zvuky z povodnej banky .. Ja som ale spokojny s Nuendom a nepotrebujem vlastny soft .. Aj ked ako dieta som si naprogramoval taky jednoduchy midi sekvencer na ATARI 800 .. To boli pekne casi .. Dnes uz v assembleri asi nikto neprogramuje ..

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 20:25

pavlii píše: PMC: obavám se, že to není moc dobrý příklad. Aby nástroj střídal různé zvuky v jenom MIDI kanále....no budiž, není to nic proti ničemu.
Promin, ale presne o tomto pripadu se tu od sameho zacatku vede diskuse. Takze je to vyborny priklad k veci. Midi je omezeno na 16 kanalu, tj 15 nastronu a bici a stridani nastroju v jednom kanalu je treba u orchestralnich skladeb obvykle a caste.

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 20:28

Pytkin píše:
PMC píše:Pokud mas pocit, ze prenesenim puvodniho BS k dalsim samostatnym PC neco poskodim, tak uved prosim mechanismus toho poskozeni, protoze ja ho nevidim.
no ak existuju nastroje , ktore bez BS davaju defaultnu banku , tak pridanim BS sa spravi to ze bude hrat iny zvuk .. Ja fakt nevidim zmysel pridavania bank ..
Nebude, protoze to prida defaultni banku, misto implicitne tam bude explicitne.

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 20:36

Je to peklo. Navrhuju diskusi ukončit s tím, že před každý PC patří BS, pokud má hrát zvuk z jiné než naposledy (bráno od nejbližších BS kontrolerů od toho kterého PC do minulosti) zvolené banky.

P.

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 03 srp 2017 20:53

PMC píše:Nebude, protoze to prida defaultni banku, misto implicitne tam bude explicitne.
No ale co ked uzivatel nechcel default banku , ale chcel nejaku konkretnu ? to bude zle potom ..

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 20:55

Jo, to uz jsem se snazil, kdyz jsem pochopil, jak to je nutno implementovat. Myslim ze ted uz v tom mame jasno vsichni.

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 20:57

Pytkin píše:
PMC píše:Nebude, protoze to prida defaultni banku, misto implicitne tam bude explicitne.
No ale co ked uzivatel nechcel default banku , ale chcel nejaku konkretnu ? to bude zle potom ..
Pokud chce zmenu, musi zadat zmenu, myslenky to necte. Pouze to brani nevyzadanym zmenam a zachova to takovou banku, ktera tam byla, byt ne explicitne uvedena.

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

Re: Jak správně implementovat Program Change

Příspěvek od Pytkin » 03 srp 2017 21:04

Ja uz som v tom strateny .. Ale podstatne je , ak ty uz vies co potrebujes :D

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 » 04 srp 2017 08:02

Cilem je, aby ten midi soubor hral po uprave porad stejne s vyjimkou upravenych mist. Mne to prijde na pochopeni lehke.

Muzes se na to divat jako na normalizaci toho midu. Mohl bych ten mid pred upravou vzdycky vzit a vsude, pred kazde single PC explicitne dosadit implicitni SB. Zvukove tedy mid zustane beze zmen, porad budou hrat ty same nastroje jako pred upravou. Ale pak mohu bez obav menit jakykoliv nastroj, aniz bych se musel bat vedlejsich efektu zmeny BS.

Nebo jinak, z pohledu obycejneho uzivatele, ten se rozhodne v midi souboru zmenit nastroj. To je jeho cil. Proste si v seznamu nastroju vybere jiny. Ze pri zmene nastroje se meni i nejaka banka nemusi vubec tusit, pravdepodobne ani nevi, co ta banka je zac. Natoz ze zmena banky neni lokalni, a je platna az do dalsi zmeny banky. Tohle neni intuitivni. Je to dusledek nedostatecne dimenze puvodniho standardu midi, maleho rozsahu PC na 128 nastroju. BS se do midi zavedlo jen jako jakasi obezlicka, aby bylo mozno mit vice nastroju a zaroven zustala zachovana kompatibilita. Jinymi slovy je to zbytecne komplikovany opruz, ale musi to byt, technicky. Ale neni nutne tim zatezovat uzivatele. Ten si proste vybira ze seznamu nastroju a jak je to vyreseno technicky ho nezajima. Tady v tomto useku midi hraje nastroj, ktery se mu nelibi, klik na usek, zmenit nastroj, vybrat nastroj, ok. Hotovo. Kdyz meni nastroj pro nejaky usek, ocekava, ze zmeni nastroj jen v tomto useku, ne ze se mu nahodne zmeni i nastroje v nasledujicich usecich. To mu musi programator zajistit, jinak si uzivatel vyhodnoti chovani programu jako chybne.

BS je svou podstatou specialni controler, protoze jeho hodnota meni chovani jineho controleru. To neni typicke. V soucinosti s pamatovanim naposledy pouziteho BS to dela problemy. Imho je to spatnym navrhem GM2. Ja bych stanovil pravidlo, ze kazde pouziti PC resetuje pamet BS na defautlni banku, to jest platnost zadaneho BS je jen do prvniho vyskytu nasledujiciho PC. Pak by tento problem neexistoval.

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 » 04 srp 2017 08:32

No ono je to trochu dvojsečné. Je pravda, že uživatel o přesném výskytu nástroje v bance zvuků nemusí mít ani tucha, to je určitý důsledek GUI (protože fakt je ten, že 90% uživatelů to opravdu nezajímá). Pak by ale zřejmě měl být takovýto upravovací program navržen tím způsobem, že bude udržovat tu logiku (tj. aby provedená změna neovlivnila další PC změny v rámci toho MIDI kanálu). Je to trochu jako "chase" funkce v Cubase, akorát se nekouká zpět v datech, ale koukala by se dopředu (zdali nenarazí na event PC pro daný MIDI kanál). Prakticky jsi to napsal na konci druhého odstavce.
Neřekl bych, že BS mění chování jiného kontroleru - to ne. PC dělá pořád to samé; jenom se pohybuje v oblasti, kterou mu vymezí případné BS kontrolery. Opruz to je, ale to by opravdu v raných letech museli PC event definovat podobně jako Pitch Bend (co do velikosti).
Poslední odstavec: naopak, typicky si nástroj všechno pamatuje (hodnota libovolného kontroleru). I proto bývá v DAW implementována ta "chase" funkce, která zajistí, že i při přerušení přehrávání MIDI dat a následně zahájení přehrávání prostě odněkud provede analýzu předchozích kontrolerů a správně nastaví všude hodnoty tak, aby odpovídaly stavu v místě, odkud je zahájeno přehrávání (jinak by totiž byly nastaveny hodnoty z místa zastavení, případně by byly vyresetovány na defaultní hodnoty - to, když je v DAW nastaveno vyslání RAC zprávy při zastavení přehrávání například).

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 » 04 srp 2017 09:03

A přesně tak navrhuji implementaci, ošetřit nasledujici single PC, zadat mu původní banku explicitně, aby u něj nedošlo ke změně BS. Tj změnu předchozího BS/PC udělat lokální.

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 » 04 srp 2017 09:07

Opět bacha na terminologii - co je to "původní" 8) lepší by bylo "předchozí" (ve vztahu k místě změny). Ale jen můj pohled na slovíčka.

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 » 04 srp 2017 10:27

Původní je ten BS, který byl v místě změny nahrazen novým BS a tedy odstraněn. Nejde tedy o vztah k místu, ale ke změně. V editoru můžeš mít v potvrzovacím dialogu třeba pole označená jako původní a nový, obecně, třeba i při kopírování souboru. Myslím že je to tak srozumitelné. Předchozí a následující by bylo matoucí. A když navrhuješ tyto terminy, tak váhám, zda vlastně oba mluvíme o tom samém.

Termín předchozí a následující vnímám jako relativní označení pro prvky v nějaká posloupnosti vůči nějakému referenčnímu prvku. U programátorů je to standardní terminologie v libovolných posloupnostech (previous, next). Takže jestliže je referenčním prvkem změněný BS, tak předchozím je pro mě BS, který mu předchází v posloupnosti v midi streamu, nikoliv ten nahrazený BS, který jsem označil jako původní. Sice bych ho mohl označit i jako předchozí ve smyslu před změnou, ale pak už bych nevěděl jak označit předchozí v posloupnosti, abych neměl dva různé předchozí prvky.

Pitvám to tak proto, že si asi stále terminologicky úplně nerozumíme a pak asi máte představu, že chci dělat něco jiného, než se snažím říct.
Naposledy upravil(a) PMC dne 04 srp 2017 10:49, celkem upraveno 5 x.

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 » 04 srp 2017 10:28

Jo tak. Jj, pohoda.

P.

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

Re: Jak správně implementovat Program Change

Příspěvek od MDudas » 07 srp 2017 18:53

:palec+:
Odchytit posledny platny BS, vlozit novy BS+PC, noty, noty, noty, ... vlozit povodny "stary" predchadzajuci BS a skopirovat povodny nasledujuci PC (povodne bez BS).


PMC, ja sa priklanam k tomu, co si pisal - ked uz robis takuto syntakticku kontrolu kvoli vlozeniu jedneho BankSelect+PrgChg na "zredukovanom zazname" (t.j. bez BankSelect-ov), preco si potom nepovedat, ze zredukovany zaznam je nedostatocne blbuvzdorny a tym padom je vzdy "machine dependent". Alebo inak - ci ma zaznam pred kazdym PrgChg aj BankSelect alebo nie - vzdy bude korektne fungovat len na masine, kde bol vytvoreny...
Preco rovno nevkladat BankSelect vsade pred kazdy PrgChg? Podla miestnej vseobecnej zhody je takyto postup nedestruktivny a neprida do zaznamu viac, nez par bytov. Mne sa to javi OK.
PMC píše:Pitvám to tak proto, že si asi stále terminologicky úplně nerozumíme a pak asi máte představu, že chci dělat něco jiného, než se snažím říct.
Uz je to jasne. Bolo treba presnejsie napisat, co chces robit. :wink: Proste strihas zaznam a bojis sa, ze po pridani absolutneho odkazu sa relativne odkazy rozhasia. Ano, tak to je.

Odpovědět