Skálavariációk IX.
Kezdő és haladó skálavariációk szétválasztása
és algoritmizálása
Bevezetés
Itt az idő, hogy a rengeteg ritmizálás mellett algoritmizáljunk is!
A skálavariációs katalógus és vele persze a további, logikusan felépített módszertani szempontok elképesztő nagyságúvá és reményeim szerint hatékonyságúvá tették a Pénzes-féle Gitáriskola szólótechnikai megoldásait. Ebben a fejezetcsomagban folytatódik a katalogizálás, még pedig a kezdő és haladó skálavariációk szétválasztásával, amelyeket a felállított szempontok szerint algoritmizálunk is (azaz hozzájuk futtatható programokat írunk). Kevesen látják át egyszerre ezt a 2 szakterületet: nevezetesen a programozást és bizonyos szólótechnikai szempontokat, ezek voltaképpen az ujjrendek, a technikai skálaszerkezetek, valamint a skálavariációk nehézségi foka közti bonyolult összefüggések halmaza.
Jelen ötletbörzém kezdetén én sem voltam biztos benne, hogy a skálavariációk különböző ujjrendi megoldásai egyáltalán algoritmizálhatók-e (azaz programozás-technikailag sikerül-e szétválasztani egymástól a kezdő és haladó szintű skálavariációkat).
Csak fokozatosan
jöttem rá arra, hogy bár az általam kidolgozott szólótechnikai módszertan
rendkívül magas szintű, de még nem optimális, azaz lehetséges rajta kissé
csiszolgatni. Első körben tehát azt tisztázzuk, hogy mitől lesz egy
skálavariáció kezdő vagy haladó és ezen megállapítások lesznek a
kiindulópontjai a konkrét algoritmizálásnak (szaknyelven fogalmazva az
implementációnak).
1.
Ujjrendi szempontból a 7 alapskála a
kiindulópont.
2.
Kezdő skálavariációk egyetlen fontos tulajdonsága, hogy bennük nem változik
meg az ujjrend. Az ilyen egyszerű, a skálából egyenesen következő ujjrendeket
a magam részéről lineáris ujjrendeknek hívom. Azaz a skálavariációt úgy
tehetjük bele bármelyik alapskálába, hogy az ujjrendet nem kell
megváltoztatnunk.
3.
A haladó skálavariációk több fontos tulajdonsággal rendelkeznek:
-
ha a skálavariáció kezdőhangja magasabban van a záróhangnál, például 1000. Az ilyen skálavariációt saját rendszeren belül csökkenő skálavariációnak nevezem. Java-kódja: if (i > k), ahol i a kezdőhangot reprezentáló szám, k pedig a záróhang számreprezentációja.
-
Ha a skálavariáció minimum 3 szintű, azaz 3 egymás utáni hangmagasság található benne, például 012. Java-kódja: if (scaleVariaton.contains("2")).
4.
A skálavariációk pontos listázása és megszámlálásuk szempontjából figyelmen
kívül kell hagyni az azonos jellegű skálavariációkat. Például egy
3 hangos – 3 hangmagasságú
skálavariáció-listában többek közt a következő skálavariációk fognak
megjelenni:
-
000
-
111
-
222
Látható, hogy az 111 és 222 lényegében azonos a 000 skálavariációval, csak magasabb hangról indulnak, így szólótechnikailag nincs értelme őket katalogizálni.
Ugyanez érvényes
bonyolultabb skálavariációk esetében is, például 0110 és 1221, ahol az
utóbbinak szintén nincs értelme, mert csak az előző mintaismétlése magasabb
hangról. A megoldás az összes olyan skálavariáció kizárása, amelyik nem
tartalmazza az első, tehát az alaphangmagasságot (ez mindig a 0). Java-kódja:
if (scaleVariaton.contains("0")).
Szólótechnikai szempontból, kezdő és haladó skálavariációk szétválasztásához a
következő skálavariáció-csoportok kerültek kidolgozásra:
Ugyanakkor vegyük észre, hogy például "4 hang 2 hangmagasságon" csoport részhalmaza "4 hang 3 hangmagasságon" csoportnak!
Általánosítva: azonos hangszám esetén a
kisebb hangmagasságú csoport mindig részhalmaza a nagyobb hangmagasságú
csoportnak.
Ebből következően felesleges listát készítenünk az alacsonyabb szintű
részhalmazokról.
A téma iránt mélyebben érdeklődők kedvéért a működtető Java-kódokat is publikálom, még pedig kétféle funkcionalitással:
-
az algoritmus ömlesztve írja ki a végeredményt,
-
az algoritmus a skálavariációkat szétválasztva írja ki.
A Java-kódok szakértői számára jelzem, hogy a kódok megfelelő futtatási környezet beállítása után azonnal futtathatók.