Max for Live - Extrémně osobní Ableton Live

Dnes se podíváme pouze na jeden jediný objekt. Do souvislosti, tedy do nějakého patche, zasadíme tento objekt později.

Konkrétně se jedná o objekt [dict], celým názvem dictionary, tedy knihovna. Kdo někdy alespoň trošku programoval, tomu bude tento objekt povědomý. Případně jej lze z jiných programovacích jazyků znát jako Hash.

Objekt je dobrý k tomu, že do něj můžeme ukládat a následně z něj získávat data. A to data v tzv. párech. Obvykle tedy máme nějaký klíč (Key) a k němu hodnotu (Value). Zápis v textové podobě (kterou můžeme vidět po dvojitém kliknutí na objekt [dict]) vypadá schematicky takto: { "Klíč 1": 1, "Klíč 2": "hodnota 2", "Klíč tři": ["a", "b", "c"] }. Zejména těm, kteří někdy viděli JavaScript, je tento zápis velmi povědomý.

Max for Live - Extrémně osobní Ableton Live
Max for Live - Extrémně osobní Ableton Live

Ano, jedná se o klasický objekt v JavaScriptu a ve svém důsledku vlastně i data v JSON. A nebudeme si nic nalhávat, ona to data v JSON jsou. A dokonce můžeme data v Max jako soubor JSON ukládat nebo z něj číst, a to právě s pomocí objektu [dict].

K čemu se to hodí? V praxi velmi často potřebujeme definovat, jaká hodnota má být na výstupu, jestliže na vstup přijde určitá hodnota. Vzpomeňme si na náš původní patch, který z jediného tónu vytváří akordy. V něm jsme měli objekt [sel 0 1 2 3 4 5 6 7 8 9 10 11] a pod ním jsme do objektu [message] s hodnotou 3 nebo 4 připojili, které tóny se mají transponovat o tři půltóny, a které o čtyři půltóny. A přitom jsme mohli vytvořit objekt [dict], který by toto definoval mnohem přehledněji (použijeme zároveň i přehlednější způsob zalamování textu):

{

"0": 4,

"1": 3,

"2": 3,

"3": 4,

"4": 3,

"5": 4,

"6": 3,

"7": 4,

"8": 4,

"9": 3,

"10": 3,

"11": 3

}

Můžeme si všimnout, že klíče jsou v tomto případě jen jednoduchou řadou čísel od 0 do 11. Tedy jedná se o tzv. pole (Array). Jak jsem již naznačil v prvním příkladu, i to můžeme v objektu [dict] použít: { "transpozice": [4, 3, 3, 4, 3, 4, 3, 4, 4, 3, 3, 3] }. A jak tedy příslušnou hodnotu nyní z objektu [dict] dostaneme? Do vstupu objektu [dict] připojíme následující objekt [message]: [get transpozice[0]]. Na druhém výstupu se pak objeví: transpozice[0] 4. Tedy jak klíč, tak jeho hodnota. Proč právě tato zpráva? Slovo „get“ říká „dej“, tedy objekt [dict] žádáme, aby nám dal nějakou hodnotu. A sice nám má dát hodnotu klíče transpozice, a konkrétně zde první hodnotu daného pole. A protože se pole číslují od 0, je v hranatých závorkách 0.

Max for Live - Extrémně osobní Ableton Live
Max for Live - Extrémně osobní Ableton Live

Prozatím jsme schopní z naší knihovny získat pouze jednu hodnotu. Pro náš patch ale potřebujeme získávat hodnoty dynamicky - podle toho, jaký tón zahraje, získáme jiný tón transpozice. A ne to se podíváme příště.

Psáno pro časopis Muzikus