(nettipäiväkirja 18.03.2024) Tein pienen teorian siitä, miten musiikin teorian eri käsitteet toimivat tyyppeinä (ohjelmointimielessä). Jokainen solmu alla olevassa graafissa on musiikin teorian tyyppi, ja jokainen nuolen nimi on funktiotyyppi eli tyyppi niille funktioille, jotka kuvaavat määrittelyjoukkonsa (nuolen alkupää) arvoja tulosjoukkonsa (nuolen loppupää) arvoiksi. (Muuten, funktio on myös musiikin termi, mutta tässä tarkoitan sitä ohjelmointimielessä tai matemaattisessa mielessä.)
Silloin, kun kahden arvon yhdistelmässä on epäselvää, kumpi on funktio ja kumpi sille annettava syöte, merkitsen toisiinsa yhdistyvillä nuolilla, mitä on lopputuloksena. Esimerkiksi: voi tulkita yhtä hyvin, että sointulaatu on funktio, joka tuottaa sävelestä soinnun, tai että sävel on funktio, joka tuottaa sointulaadusta soinnun.
[]-funktio tarkoittaa, että useista tällaisista voi tehdä listan ja niiden listoja kutsutaan tällä nimellä.
Rytmiin liittyvät käsitteet jouduin enimmäkseen keksimään itse, en löytänyt kunnollisia vakiintuneita käsitteitä. Muissakin käsitteissä olen joutunut joskus valitsemaan monista eri merkityksistä yhden, jotta saan yksiselitteisen teorian.
digraph { { node [shape="circle" width="0" fixedsize="true" color="invis" label=""]; comb_1 comb_2 comb_3 comb_4 comb_5; } "perussävel" -> "sävellaji" [label="asteikko"]; "sävellaji" -> "sävellaji" [label="muunnos"]; "aste" -> "aste" [label="teho"]; "aste" -> "teema/aihe" [label="[]"]; "sävellaji" -> comb_1 [arrowhead="none"]; "oktaaviala" -> comb_1 [arrowhead="none"]; "aste" -> comb_1 [arrowhead="none"]; comb_1 -> "sävel"; "sävel" -> "sävel" [label="muunne"]; "sävel" -> "sävelkulku" [label="[]"]; "sävel" -> comb_2 [label="(pohjasävel)" arrowhead="none"]; "sointulaatu" -> "sointulaatu" [label="sointumuunnos\n(pidätys/lisäys/\nlaajennus/käännös)"]; "sointulaatu" -> comb_2 [arrowhead="none"]; comb_2 -> "sointu"; "sointu" -> "sävel" [label="asema"]; "sointu" -> "sointukaava" [label="[]"]; "sävel" -> "taajuus" [label="viritys"]; "taajuus" -> "taajuus" [label="intervalli"]; "taajuus" -> "ääni" [label="soitin" style="dotted"]; "iskuyksikkö" -> comb_3 [arrowhead="none"]; "korostus" -> comb_3 [arrowhead="none"]; comb_3 -> "isku"; "isku" -> "rytmikuvio" [label="[]"]; "rytmikuvio" -> "rytmi" [label="tahtilaji\n(toistoväli)"] "rytmikuvio" -> comb_4 [arrowhead="none"]; "syke" -> comb_4 [arrowhead="none"]; comb_4 -> "rytmitys"; "rytmitys" -> comb_5 [arrowhead="none"]; "sävelkulku" -> comb_5 [arrowhead="none"]; comb_5 -> "sävelmä"; }
Esimerkkejä kutakin tyyppiä asuttavista arvoista (osa "tietorakenteita", osa "funktioita"):