Yritän ohjelmoida kirjaston, jonka avulla voidaan hyödyntää Peter Westergaardin tonaaliteorian käsitteitä.
Nykyinen ongelma, jonka yritän ratkaista, on määritellä annettavan aikavälin nimi. kaksi nuottia (mukaan lukien oktaavi, joten jotain B # 4 ja Cb5) JA diatoninen kokoelma (jonka voit vain ajatella tärkeimmäksi avaimeksi, jos et tunne tonaaliteoriaa.
Tonaaliteoria toteaa että kahden nuotin välisen aikavälin nimi perustuu aikavälin muodostavien isojen ja pienempien sekuntien lukumäärään. Tässä on määritelmä jokaiselle oktaaviin asti olevalle intervallille:
molli 3. - 1 molli 2., 1 iso 2.
pää 3. - 0 alaosaa 2., 2. pää 2. p>
vähentynyt 4. - 2 alaikäistä 2., 1. isoa 2.
täydellinen 4. - 1 alempi 2., 2. pää 2.
lisätty 4. - 0 alaik. 2., 3. 2.
vähentynyt 5. - 2 alaikäistä 2., 2. isoa 2. sarjaa
täydellinen 5. - 1 alaikäinen 2., 3. isoa 2. sarv.
lisätty 5. - 0 alaik. 2., 4.
molli 6. - 2 alaikäistä 2., 3. isoa 2. sarjaa
pää. 6. - 1 alaosa 2., 4. suur. 2.
vähentynyt 7. - 3. alaosa 2., 3. pää 2.nds
täydennetty 6. - 0 alaosaa 2.nds, 5 suurta 2.nd.
alaikäistä 7. - 2 alaikäistä 2.nd., 4 suurta 2.nd.
pääa 7. - 1 alaosaa 2., 5. major 2nds
täydellinen oktaavi - 2 minor 2nds, 5 major 2nds
epätäydellinen oktaavi - 1 minor 2nds, 6 major 2nds
tai 3 minor 2nds, 4 major 2nds
Anna minun ensin varmistaa, että oletukseni ovat oikeita. Oletan, että et voi aina määrittää aikavälin tarkkaa nimeä tuntematta avainta / diatonista kokoelmaa, jossa nuotit ovat. Ota esimerkiksi väli C - E. Jos olemme C-duurin (diatoninen) avaimessa kokoelma alkaa C), menisit C-> D-> E, joka on 2 suurta 2nd - pää kolmas. Mutta jos olet D-duurin avaimessa, aloitat nuotilla, joka ei ole asteikolla. En ole varma intervallin nimeämisprosessista, kun otetaan huomioon tämä tilanne (tämä on osa kysymystä), mutta voit mennä C-> C # -> D-> E, joka olisi 2 ala- ja toinen päällikköä ja yksi toinen toinen - vähentynyt 4. sija. Ottaen huomioon, että oletan, ettet voi vain sanoa, että C: stä E: hen on merkittävä kolmas riippumatta kontekstista, jossa muistiinpanot esiintyvät.
Muut olettamukseni ovat, että 2 nds: n laskeminen on pätevä tapa määrittää aikaväli nimi.
Tässä mielessä kysymykseni on seuraava: Kuinka määrität, kuinka monta isoa ja alaista 2nd on aikavälillä, annettu pääavain (tavoitteenaan nimetä aikaväli)?
Luulisin, että jos intervallimuistiinpanot ovat asteikolla, kävelet vain asteikon läpi ja lasket intervallit.
Mutta en tiedä miten käsitellä tapausta, kun intervallimuistiinpanot eivät ole asteikolla. Tässä olen yrittänyt tehdä tämän ratkaistakseni:
Voit ajatella mitä tahansa avaimen ulkopuolista nuottia olevan poikkeama avaimen päällä olevan nuotin ylä- tai alapuolella. Voit määrittää, onko se ylä- tai alapuolella, käyttämällä nuotin nimeä. Tarkastellaan esimerkiksi D-duurissa avainkoodia C. Ainoa kerta, kun C-kirjain esiintyy pääasteikossa, on C #. Joten ajattelemme, että C on puoli askelta alle C #: n. Vastaavasti ajattelemme, että D # on puoli askelta D: n yläpuolella kyseisessä avaimessa.
Ottaen huomioon, että kun annat aikavälin ja avaimen, määritä kuinka intervallimuistiinpanot poikkeavat avaimen muistiinpanoista. Alemman nuotin osalta, jos poikkeama on yli (kuten D # edellisessä esimerkissä), kun lasket laskua, käytä 2. päästäksesi lähimpään näppäimen muistiinpanoon (D # -esimerkissä tämä olisi puoliportainen päästäksesi E: hen). Laske sitten normaalisti. Jos alemman nuotin poikkeama on alapuolella (kuten esimerkissämme C), lasketaan normaalisti, mutta aloitetaan sen nuotista, joka on alapuolella (joten C #). Jos siellä oli pieniä 2nds, poista yksi ja lisää toinen toinen. Jos niitä ei ollut, lisää alaikäinen 2. lukumäärään.
En todellakaan ole varma kuinka käsitellä "ylä nuotin poikkeamia", mutta tässä vaiheessa voit ainakin nähdä mitä yritin. Sen perusteella, kuinka hakkeroitu ja monimutkainen se näyttää, uskon, että on epätodennäköistä, että se on oikein, joka tapauksessa, joten ei kannata jatkaa yrittää täsmentää sitä.
Onko siis jollakin menetelmää, joka todella toimii määrittää sekuntien määrä aikavälillä, kun annetaan pääavain? Tai siinä tapauksessa vain menetelmä aikavälin nimen määrittämiseksi, annettu pääavain? Oletan, että on olemassa menetelmä, mutta en ole löytänyt hyvää resurssia Googlen kautta.
MUOKKAA: Löysin joitain potentiaalisia resursseja tähän, aion tarkastella niitä. Vaikuttaa siltä, että oletukseni voivat olla väärät: http://www.eartrainingmastery.com/en/blog-and-music-theory/blog-en/299-enharmonically-equivalent-intervals-augmented-second-or-minor -kolmas