Hwedwortehun (13)

Le 31 de octobre, e le 5–6, 9–

Ad hoc

Un idea que io habeva le matino del 16 de octobre 2023, justo eveliate: in vice de partir de un gamma musical fixe, a applicar a cata nota de un pecia musical, on poterea anque considerar solo le notas que sona al mesme tempore, e pro illos calcular le intervallos optimal, assi que le rationes del frequentias se lassa exprimer in numeros basse.

Sic le scala musical, le gamma de notas, non esserea predeterminate, ma decidite ad hoc, e, si requirite, esserea variabile durante le pecia. Iste idea es apte pro musica polyphonic, sed (mi idea del 31me de octobre) si on usa certe curte intervallos de tempore, e.g. un secunda o un mesura, e considera le notas de un melodia intra iste durata, le mesme ma­niera de determinar le intervallos pote esser applicate etiam a musica monophonic.

Mi sonio, ja iste matino de 16te, esseva de scriber un programma que poterea automatica­mente applicar un tal algorithmo a files Midi existente, e crear un nove version del Midi, in un intonation optimalisate. Bends existente serea interpretate pro detectar anque quar­tos de tonos (semibemolles e semidieses), e bends (deviationes desde le altores del tonos equi­distante) serea modificate o addite, pro realisar le nove intonation.

Forsan un tal intonation es plus similar al maniera de sonar intuitive de violinistas hungare e ruman, Romas e alteres, e de membros de quartettos ad arco?

Exploration

Pro recognoscer possibilitates, ancora sin manipular Midi, le vespera del 17 de octobre 2023 io comenciava scriber un programma preliminar, que intertanto ha devenite isto.

Pro trovar rationes a candidar, le algorithmo ‘fraction continuate’ poterea esser utile, sed in su loco io ha consultate mi lista ja disponibile, e colligite le rationes plausibile in un source file (file de fonte) pro uso commun: rhmusicfuncs.c, con nomines pro referer in le header file rhmusicfuncs.h.

Le programma, con le nomine adhoc-intvals-cmdline, accepta, in le linea de com­mando o in lineas de stdin, numeros inter 0 e 14.5, que refere a tonos chromatic de un scala o accordo. Le programma cerca, con un algorithmo recursive simile al qual usate in pilaintv.c describite in episodio 08, le rationes optimal pro obtener un consonantia harmoniose.

Alcun exemplos:

adhoc-intvals-cmdline -v 0 3 7 12
  10          12               15                   20
  1:1         6:5              3:2                  2:1
    0         316              702                 1200

Isto es un accordo minor standard. Le rationes del frequentias es 10:12:15:20, 6:5 etc. es le ration de cata grado del scala o accordo, e 316 etc. indica le altor del tonos in cents (1200 cents = 1 octava, 100 cents = 1 semitono). Sin le option -v le resultatos es minus verbose, e solo le rationes es monstrate:

  1:1         6:5              3:2                  2:1

Le numeros pote esser decimal, pro indicar quartos de tonos, in altere parolas: medie semitonos. Sic iste resultato pro un scala oriental:

adhoc-intvals-cmdline -v 0 2 3.5 5 7 9 10.5 12
  18      20    22     24       27     30     33    36
  1:1    10:9  11:9   4:3      3:2     5:3   11:6   2:1
    0     182   347   498      702     884   1049  1200

Error

Le vespera del 20 de octobre 2023 io esseva toto enthusiastic, proque mi programma sem­blava confirmar que le intonation optimal de facto muta al fin del cantion Mijn held zijn del gruppo nederlandese Van Dik Hout, que io tractava in 2020 hic. Sed post observation plus attente il deveniva clar que illo esseva causate per un error algorithmic, como io discoperiva le 22 de octobre.

Nam in le cantion occurre le accordos Gm (tonos: g-bes-d), Bes (bes-d-f), Dm (d-f-a), e alora Gm7 (g-bes-d-f). Assi le tono f muta de rolo de tertia minor in Dm, a septima minor in Gm7 (le accordo septima dominante). Le version del mi programma ancora erronee produceva pro iste accordos:

  10          12               15
  1:1         6:5              3:2
    0         316              702

              12               15            18
              6:5              3:2           9:5
              316              702          1018

                               27            32            40
                               3:2          16:9          20:9
                               702           996          1382

  10          12               15            18
  1:1         6:5              3:2           9:5
    0         316              702          1018

Nos pote vider que le programma trova pro de tertia minor del accordo Gm le ration 6:5, que face le rationes pro le accordo complete 10:12:15. Ma pro le accordo Dm, construite desde le septima del Gm, iste rationes NON esseva trovate. Proque non? Illo es estranie, proque le intervallos pro illo es presente in rhmusicfuncs.c.

Le explication es que le programma trovava le combination:
grado=0, RatSeq 30  3:2  702
grado=1, RatSeq 36  9:5 1018
grado=2, RatSeq 45  9:4 1404

que sembla pejor que
grado=0, RatSeq 27  3:2  702
grado=1, RatSeq 32 16:9  996
grado=2, RatSeq 40 20:9 1382

que pro isto esseva preferite.

Le error de programmation esseva que 30:36:45 pote e debe esser simplificate, per divider per 3, a 10:12:15, que alora gania de 27:32:40. Le algorithmo correcte pro derivar le nume­ros de ration optimal ex le rationes del grados de un accordo es:

  1. Calcula del denominatores del rationes del grados le lcm (en: least common multiple, ia: minime multiplo commun). In le exemplo: le lcm de 2, 5 e 4 es 20.
  2. Multiplica le numerator de cata grado per le lcm, e divide per le denominator.
  3. Calcula del numeratores del rationes del grados le gcd (en: greatest common divisor, ia: maxime divisor commun).
  4. Divide le resultatos del passo 2 per le gcd obtenite in passo 3. In le exemplo: le gcd de 3, 9 e 9 es 3.

Ante le correction, le passos 3 e 4 mancava. Le mesme error esseva anque presente in pilaintv.c, sed illac habeva quasi nulle effectos, proque le gcd del numeratores de un scala complete es quasi sempre 1. Ma si poc notas es usate, como in un accordo, le pro­babilitate de haber un gcd > 1 es plus grande.

Post le correction del programma, le resultato es:

  10          12               15
  1:1         6:5              3:2
    0         316              702

               4                5             6
              6:5              3:2           9:5
              316              702          1018

                               10            12            15
                               3:2           9:5           9:4
                               702           1018         1404

  10          12               15            18
  1:1         6:5              3:2           9:5
    0         316              702          1018

Nulle intervallo optimal muta in iste cantion “Mijn held zijn”.

Khachaturian

Num in le exemplo de Khachaturian (Хачатурян) le programma de facto trova altores e rationes differente pro le tonos ‘as’ e ‘gis’? Si, mesmo tres: 19:10, 17:9 e 15:8, con 1111, 1101 e 1088 cents. Isto sona un poco farraginose e agitate, ma non mal. Le ‘gis’ es basse como in le solution Aristoxenos/Zarlino, ma 19:10 (1111 cents) non es tan alte que 48:25 (1129), assi que le transition non es tan extreme: inter 48:25 e 15:8 il ha un intervallo de 128:125 o non minus que 41 cents.

In 2020 mi exemplos esseva facite con vetule software, ancora pro MSDOS e le Sound­blaster: equidistante, Pythagoras, Zarlino. Le resultatos es confirmate per un nove de­mon­stration, finite le 20 de octobre 2023, que io ha facite con le medios plus moderne Lilypond e Midi. Le directorio AdHocAsgis contine tote le files. Il ha le partition, con le claves traditional, e con toto normalisate al clave de violino, con ottava bassa ubi necesse. Il ha un file midi e un ogg, que contine sex variantes: equidistante, Pythagoras, Zarlino, Adhoc farraginose, Adhoc applanate, e Adhoc sin alteration, con 19:10 usate pro as e gis.

Ora seque plus detalios del tres variantes Adhoc, le numeros 4, 5 e 6 in le demonstration.

Farraginose

Io ha create input pro mi programma adhoc-intvals-cmdline in le file asgis-intvals, e le resultato es in le file asgis-intvals.out. Le tonos e positiones, a un chorda de guitarra o violino imaginari, es relative al tono ‘a’. Primo un accordo Am, con ‘c’ (tertia minor) a 6:5, ‘e’ (quinta) a 3:2, naturalmente, e le ancora plus obvie ‘a’ (octava) a 2:1. Nihil de special.

Pois le accordo Fm. Le tono ‘f’ es a 8:5, le quinta ‘c’ es a 6:5 (o a 12:5 se plus alte que le f, como es plus normal, ma le programma supporta solo 14 notos). Le programma placia le tertia minor ‘as’ non a 6:5 (316 cents) del ‘f’, ma 19:16 (298 cents), e arriva a un altor 19:10 (1111 cents) relative al ‘a’. Assi le numeros rational, 12:15:20 pro le accordo Am, ora es 12:16:19. Multo harmoniose, e isto es le scopo del programma: trovar intonationes con basse numeros rational.

Ora comencia le melodia que marca le transition del accordo Fm a AmM7 (A minor ma con un septima major, gis). Al ‘as’ remanente es addite un ‘g’. Le programma, como sempre, trova le intervallo con le numeros le plus basse que possibile: nam 17:16, ergo le nota ‘as’ es ora non a 19:10 (1111 cents), non a 15:8 (1088), sed a un tertie altor: 17:9 con 1101 cents. Isto causa le effecto farragionose e inquiete, que non sona agradabile, io trova. Nam le alteration non es necesse: le distantia inter ‘as’ e ‘g’ poterea esser tan ben 19:18 como 17:16. Con 19:18, le ‘as’ pote remaner a 19:10, como le previe e proxime nota, assi eliminante le inquietude. Le ‘g’ alora es a 9:5 (1018 cents) in vice de 16:9 (996).

Applanate

Le solution algorithmic es de non considerar solo le notas que sona insimul, ma definir un certe fenestra de tempore, non tro curte e non tro longe, e reguardar tote le notas in iste contexto. Pro isto io ha facite un variante de asgis-intvals, nam asgis-intvals-compr (con “compr” como comprimite), in le qual io ha combinate plus notas in un linea. In le resultato asgis-intvals-compr.out nos pote vider que le ‘as’ es ora sempre a 19:10, e le ‘gis’ a 15:8.

Isto sona plus tranquille, e melior. Le quinte variante in le demonstration, midi, ogg.

Sin alteration

In le ultime e sexte variante del demonstration, de ‘as’ e ‘gis’ ha le mesme altor, ma sin usar un intonation equidistante. Forsan iste intonation es similar al qual que le violinista Leonid Kogan (Леонид Коган) usava in 1965?

Comocunque, in iste variante in mi demonstration le ‘gis’ es anque a 19:10, e le distantia del ‘gis’ al quinta ‘e’ (3:2) es 19:15 (409 cents), in vice de 5:4 (386 cents).

Isto anque sona satis ben, in mi opinion.

Vicnia

Con data de completion le 26 octobre 2023 io ha anque applicate le methodo del intona­tion ad hoc al pecia Vicnia, que era previemente discutite in episodio 12. Le partitura es hic con le clave de alto, e hic con le clave de violino ottava bassa. Io ha notate le inter­vallos qui, e le resultato ex mi programma adhoc-intvals-cmdline es qui. Un variante con notas clarificante es qui.

Le resultato (midi, ogg) in mi opinion sona multo ben. On audi, o io audi al minus, le harmonia del frequentias con parve rationes, i.e. rationes que pote esser exprimite per numeros integre satis basse.

Iste intonation ha alcun del characteristicas que io describeva como desiderabile, ja le 8 de octobre quando io non habeva habite le idea del intonation ad hoc, que nam me veniva in mente al 16 de ille mense. Ma non tote le punctos es convincente, forsan proque le contramelodias del altere instrumentos non es equal a illo que io addeva pro mi demon­stration.

Ecce: