Hwedwortehun (14)
Le 10, 12 e
Software
Verso le fin le 2023 io habeva tres programmas plus o minus functionante:
pilaintv
pro pilar intervallos musical, pro formar tote le scalas possibile, o solo alcun secun specificationes, e optionalmente anque accordos.adhoc-intvals-cmdline
, pro trovar solutiones ad hoc optimal, per examinar cata vice solo alcun notas desiderate. Isto esseva un preparation pro realisar le proxime programma del sonios:adhoc-midi
, pro manipular files Midi existente assi que le scalas e accordos ad hoc es implementate in illos, per variar le altor del tonos con bends.
Le programmas functionava le 15 de decembre 2023, ma in le essayos a vices ancora io audiva cosas estranie e inexplicabile. E io videva que inevitabilemente alcun resultatos contineva quintas e quartas del lupo. Iste dos factores faceva que, fatigate e disincantate, provisionalmente io abandonava le disveloppamento.
Ora in junio e julio 2025 io ha potite facer correctiones in le software, e io non audi plus le estranie cosas del passato (le 15 de julio: tamen, ancora, alteres), sin haber exactemente identificate le natura del problemas e lor causas.
E le programmas ha ora optiones del linea de commando: --awolf
pro acceptar quintas del lupo (pro non rumper le exemplos ja
describite, isto es le predefinition (the default)
in pilaintv
e adhoc-intvals-cmdline
), e
--rwolf
pro detectar e rejectar le quintas del lupo.
In le absentia de un option --awolf
o --rwolf
,
le programma adhoc-midi
rejecta le quintas e quartas
del lupo.
Quintas del lupo
Le 30 de junio 2025 io subito videva un maniera efficiente de detectar quintas del lupo. Efficientia es necesse proque il pote evenir que milliones de combinationes de intervallos es considerate. Computers moderne es multo rapide, sed adder un calculation intensive a un algorithmo que es executate un million de vices, es significante.
Le 3 de julio 2025 io videva un variante del algorithmo ancora plus simplice e elegante. Io lo describera in le proxime subcapitulo.
Ma que es überhaupt un quinta del lupo?
Le intervallo musical le plus harmoniose es le prima (duo vices le mesme tono, unisono), pois le octava, con le ration de frequentias 2:1, exprimite in le unitate cent, assi que un semitono ha 100, como 1200 cents. In ordine de harmonia seque le quinta (7 semitonos, 3:2, 702 cents) e le quarta (5 semitonos, 4:3, 498 cents).
Intervallos que es presso le quinta e quarta juste, ma satis devia, sona mal, e es appellate intervallos del lupo proque illes sembla ulular como un lupo. Le notion del quinta del lupo ab le Wikipedia pare plus complicate que io sapeva. Pro mi scopos, solo le intervallos 40:27 (680,4 cents) e 27:20 (519,6 cents) es relevante.
Algorithmo de detection
- Si un del numeros proportional del scala o accordo contine un factor 27, il existe un suspicion.
- Le question es ora si il ha numeros con le factores correspondente de 20 o 40, ma possibilemente un o plus octavas plus alte o plus basse. Pro isto nos divide le numero per 27, e multiplica le resultato con 5. Isto es le factor a cercar in altere numeros proportional.
- Si un numero proportional in le scala o accordo (que non sempre es in ordine ascendente) contine le factor previemente obtenite, le suspicion augmenta.
- Un intervallo del lupo es solo presente, si le resultato post division contine solo factores 2, ergo non factores, per exemplo, de 3 o 5. Isto es detectate per iterativemente divider per 2, tanto longe como possibile, e vider si le resultato tunc es 1, o plus. Solo si es 1, un intervallo del lupo esseva detectate.
Le implementation del algorithmo es in le function ScaleContainsWolf
in le file fonte
rhmusicfuncs.c
.
Exemplos
- Un numero 27 produce un factor a cercar de 1*5 = 5.
Alora 45 es un numero suspecte, nam divisibile per 5, ma
le resultato 9 contine factores 3, non solo 1 e 2, ergo
45 non causa un quinta del lupo: 45:27 = 5:3 = 884,4 cents.
30 anque non es problematic: 30/5 = 6, que contine un factor 3. 30:27 = 10:9 = 182,4 cents.
60/5 = 12 = 3*2*2. Le factor 3 vole dicer que il non ha un quinta del lupo: 60:27 = 20:9 = 1382,4 cents.
- Un numero 54 produce un factor a cercar de 2 * 5 = 10.
Alora 60 es suspecte, ma non un lupo: 60/10 = 6, que contine
un factor 3.
40 es anque suspecte, e es un lupo, proque 40/10 = 1.
- Con 81 le factor es 81/27 * 5 = 15. Le numero 60 ora causa un intervallo del lupo: 60/15 = 4, con solo factores 2. 81:60 = 27:20, 519,6 cents.
- 216, factor 40, nulle lupo con 120 o 200. Ma 160 si causa un intervallo del lupo: 160/40 = 4, 216:160 = 27:20.
- 513, factor 19*5 = 95. 570 non es un lupo (570:513 = 10:9), ma 380 es problematic: 570:380 = 27:20.
- 1134, factor 42*5 = 210. 1680/210 = 8, ergo: lupo.
1680:1134 = 40:27
Ma 1050 non es problematic, 1050/210 = 5.
- 1377, factor 51*5 = 255. 1020/255 = 4. Lupo trovate.
- Etc. etc.
Performance
In le passato, circa 1980 o 1990, divisiones e multiplicationes, como anque determinar le resto de un division, era multo plus lente que additiones e subtractiones. Ma in processors moderne, illos es quasi tanto rapide.
De facto, in tests, le differentia in tempore usate, inter con e sin controlo de lupos, non es detectabile.