Max for Live - Extrémně osobní Ableton Live - Pokračujeme v tom, abychom měli lepší kontrolu nad výstupními daty
Přidáme tedy objekt [pack i i i], který zařadíme nad náš současný objekt [noteout]. Mezi [pack i i i] a [noteout] ale ještě zařadíme objekt [unpack i i i]. Tento objekt je logicky opakem objektu [pack]. Tedy zabalený seznam rozbalí a jeho jednotlivé elementy pošle do samostatných výstupů.
Vytvoříme ale také ještě objekt [print], o kterém jsem se zmínil v úvodu. Tento objekt se postará o to, že data vytiskne do konzole. Objekt [print] umístíme mezi objekty [pack i i i] a [unpack i i i]. Abychom vše měli úplně podle předpisu, vytvoříme si ještě jeden objekt, a sice [t l l]. Díky němu bude opět řídit tok dat a konkrétně dat typu „list“ (seznam), proto jsou parametry „l“, nikoliv „i“, jak jsme měli dříve.
A jak to teď celé zapojíme? Veškeré kabely ze vstupů objektu [noteout] přepojíme do vstupů [pack i i i] ve stejném pořadí. Tedy nejvíce pravý vstup [noteout] půjde do pravého vstupu [pack i i i] atd. Tím jsme vše, co jsme rovnou posílali na výstup, nejdříve uschovali v objektu [pack]. Z výstupu objektu [pack i i i] zapojíme kabel logicky do vstupu objektu [t l l] a z jeho pravého výstupu zapojíme kabel do vstupu objektu [unpack i i i] a z levého výstupu zapojíme kabel do objektu [print]. Tím řídíme tok dat. Tedy nejdříve půjdou data do [unpack] a z jeho třech výstupů do [noteout] a teprve potom půjdou data na tisk do konzole. Obecně se snažím dodržovat tuto logiku, že nejdříve data vysílám ven a teprve potom na kontrolní tisk. Přece jenom to, jestli data přijdou na tisk trošku později, už nehraje roli, nejdříve potřebuji, aby data proběhla na výstup a například zazněl nový tón.
Co jsme tedy získali? Z pohledu patche samotného by se dalo říci, že nic důležitého. Nicméně tento princip se velmi hodí v obecné rovině. Nejdříve shromáždím všechna data, která budu potřebovat, a teprve v okamžiku, když mám všechna data, tak je (řízeně) vyšlu ven. A pro jistotu si tato data pošlu i na kontrolní tisk, což se velmi hodí v okamžiku, kdy se v patchi objeví nějaká chyba a něco nefunguje tak, jak má. V konzoli pak mohu kontrolovat, jaká data přesně na výstup chodí, a mohu tak odhalit chybu.
Ještě si dovolím jednu poznámku k tisku do konzole: V případě větších patchů, kdy bychom toho do konzole pro kontrolu už mohli tisknout poměrně hodně, je třeba počítat s tím, že tento proces je relativně náročný (kromě jiného vyžaduje i nějakou součinnost s grafickým rozhraním, kde je potřeba vizuálně data prezentovat uživateli), a tedy vyžaduje poměrně hodně času. V extrémních případech, kdy nám jde o každou nanovteřinu, se může stát, že právě tisk do konzole bude celý patch zpožďovat a zdržovat a může se stát, že data, která mají běhat v „reálném čase“ (tedy v rámci zpoždění, které uživatel nepozná nebo nevnímá) prostě v “reálném čase” běhat přestanou a data se začnou opožďovat. Ale to bude ještě nějaký čas trvat, než se k takto složitějším patchům dostaneme.