User talk:Contribution

From Xenharmonic Wiki
Jump to navigation Jump to search

When I suggested to switch to JavaScript

on Talk:31-limit, I did not primarily think on doing it right within the Wiki. I even think that user-specific JS isn't enabled here ...
Is there any place where this could be tried out first without fighting against wiki limitations of some sort?
Best regards --Xenwolf (talk) 15:06, 13 May 2020 (UTC)

Hello, I have a Wordpress website under construction but I don't know JavaScript. Best regards.

I see, I am also a newcomer in this respect, but it seems to be the current hottest language. If I get an idea what your point is, I could try to implemenent it somewhere. As I understand it so far, there is a big 1 in the middle and then a Cartesian coordinate system around it with prime factors not exceeding 31 above or below the fraction line, right? --Xenwolf (talk) 18:45, 14 May 2020 (UTC)


Yes, the rules are :


1) 1/1 is the center of symmetry between reciprocals.

2) The positive abscissa is the Pythagorean scale. The negative abscissa is deducted by rule 1.

3) The positive ordinate is the 5-31 quasi-primes scale, presented as follow:

a ; a*a ;

b ; a*b ; a-1*b ; b*b ;

c ; a*c ; a-1*c ; b*c ; b-1*c ; c*c ;

d ; a*d ; a-1*d ; b*d ; b-1*d ; c*d ; c-1*d ; d*d ; etc...

The negative ordinate is deducted by rule 1.

4) 5-limit allows also a*a*a and its symmetrical reciprocal


Below is a piece of Python code doing it (better solutions may be possible):

primes=[2,3,5,7,11,13,17,19,23,29,31]
   
# reciprocal of a given monzo
def reciprocal(monzo):
   for p in range(0,len(monzo)):
       monzo[p]*=-1
   return(monzo)
   
# ABSCISSA MONZOS LIST
x_axis=[]
for a in range(0,26+1):
   # pythagorean interval 
   monzo=[0]*len(primes)
   monzo[1]+=a
   
   # insert it at the end of the list  
   x_axis.append(monzo)
   
   # insert its reciprocal at the beginning of the list, so that 1/1 is the center of symmetry between reciprocals
   x_axis.insert(0,reciprocal(monzo.copy()))
   
# ORDINATE MONZOS LIST
y_axis=[]
   
# insert 1/1
monzo=[0]*len(primes)
y_axis.insert(0,monzo)
   
# first prime
for a in range(2,len(primes)):   
   # pure harmonic series
   monzo=[0]*len(primes)
   monzo[a]+=1
   
   # insert the pure harmonic at the beginning of the list
   y_axis.insert(0,monzo) 
   
   # insert its subharmonic version at the end of the list, so that 1/1 is the center of symmetry between reciprocals
   y_axis.append(reciprocal(monzo.copy()))    
   
   # second prime   
   for b in range(2,a+1):
       
       # combine the pure harmonic with another prime, both by putting it in the numerator or in the denominator
       for c in range(1,-1-1,-2):
           monzo=[0]*len(primes)
           monzo[a]+=1
           
           # when c=1, the second prime is put in the numerator ; when c=-1, the second prime is put in the denominator
           monzo[b]+=c
           
           # before inserting, eliminate the cases where the first and the second prime are reciprocal
           if(monzo!=[0]*len(primes)):
               
               # insert the combination at the beginning 
               y_axis.insert(0,monzo)
               
               # insert its reciprocal at the end, so that 1/1 is the center of symmetry between reciprocals
               y_axis.append(reciprocal(monzo.copy()))
               
               # insert 125/64 exception and its reciprocal
               if(monzo==[0,0,2,0,0,0,0,0,0,0,0]):
                   monzo[2]+=1
                   y_axis.insert(0,monzo)
                   y_axis.append(reciprocal(monzo.copy()))

# CARTESIAN COORDINATE PLANE OF MONZOS
table=[]
for y in range(0,len(y_axis)):
   row=[]
   for x in range(0,len(x_axis)):
       monzo=[]
       for a in range(0,len(primes)):
           # combine the abscissa monzo and the ordinate monzo
           monzo.append(x_axis[x][a]+y_axis[y][a])
       row.append(monzo)
   table.append(row)

##### SHOW RESULT #####
print(table)

Would be curious to see your implementation :)

Subpage helper

Hi Contribution,
You might be interested in a wiki function that creates an inline list of subpages: {{Special:PrefixIndex/{{FULLPAGENAME}}/}} (could be helpful on your user page).
Best regards --Xenwolf (talk) 14:43, 11 June 2020 (UTC)

Factor limit suggestion

Hi Contribution,
Your factor limit idea looks quite interesting to me. Just a few thoughts: 1-factor-limit seems to include the prime harmonic series and its inverse (and what about 0-factor-limit being 1)?.
Maybe also the (obviously abandoned) prime interval attempt could be worth reading (some open questions there).
Best regards --Xenwolf (talk) 08:25, 12 June 2020 (UTC)

Moving pages around

Hi Contribution,
I've seen you move wiki pages to strange places after you deleted their content. Maybe it's your way to try to get a page "deleted" somehow.
I built a tool to say "please delete this page" to one of the operators. A short description is on Help:Help, I hope that helps.
Best regards --Xenwolf (talk) 18:30, 20 June 2020 (UTC)

A BIG Thanks

... for all the work you did adding all the Helmholtz-Ellis notation symbols! Especially that you did it in SVG, make them an ideal base for derivates and images using them. Thanks again. --Xenwolf (talk) 08:31, 4 October 2020 (UTC)

Reduce comma tables on EDO pages

Please have a look at Xenharmonic Wiki: Things to do #Comma tables in EDO_pages. Thanks --Xenwolf (talk) 09:10, 11 January 2021 (UTC)

Huge Tables

I think that the tables you are adding are a usability nightmare. Do you really think they are good for the wiki? --Xenwolf (talk) 17:48, 13 April 2021 (UTC)

I agree with Xenwolf honestly, especially in light of some of the things currently being discussed on the Xenharmonic Alliance Discord Server. --Aura (talk) 20:48, 13 April 2021 (UTC)

equal contrary motion

Hi contribution,
I think it would ease to understand this voice leading concept it there was some article of at least section (reachable via redirect). Do you think you could explain (and illustrate) it a bit further?
Thanks in advance. --Xenwolf (talk) 21:00, 3 October 2022 (UTC)

According to Wikipedia: Contrapuntal motion, another name for equal contrary motion is "strict contrary motion". I don't think it is necessary to redefine basic voice leading concepts here on the Xen Wiki, since it is possible to link to Wikipedia whenever such a definition might be judged necessary. I think adding pictures would help more than adding definitions.
That said, I would see no problem if there were pages about examples of voice leading specific to some tunings, when there is too much content to keep it reasonably on the tuning's main page. --Fredg999 (talk) 02:28, 4 October 2022 (UTC)
Thanks for your opinion, Fredg999, so a page about (xenharmonic) counterpoint could help here (with strict contrary motion redirecting to it). --Xenwolf (talk) 06:33, 4 October 2022 (UTC)


Hello,

What kind of intervals does the concept of strict contrary motion refer to? Degrees of a scale (for example 1 degree of 12 tones), or size (for example 100 cents)? Could all contrary motion of the same amount of degrees in an irregular temperament still be called strict?

Template: Infobox ZPI

The template you created calls an inexistent module. If this template is work in progress, please add [[Category:Draft templates]] and don't use it in other pages until its basic functionality is complete. Thank you in advance. FloraC (talk) 13:19, 28 March 2024 (UTC)

Recent edits to EDx pages

Hello! May I know where you get your numbers from? For instance, you have written in the Ed11/9 page that:

19ed11/9, 21ed11/9 and 40ed11/9 are to the division of 11/9 what 17ed5/4, 19ed5/4, and 36ed5/4 are to the division of 5/4... <long text omitted>

May we know how you arrive at these values? I feel that without any context or explanation people are going to have a hard time understanding why you are editing these pages. Thank you! 2^67-1 05:50, 28 August 2024 (UTC)

Hi. For each pair of superparticular ratios [math]{s1}/{s2}[/math]​ and [math]{s2}/{s3}[/math], there exists a ratio [math]{a}/{b}[/math] such that [math]{s1}/{s2}[/math]​ and [math]{s2}/{s3}[/math]​ are [math]{a}/{b}[/math] complementary; it is observed that [math]a−b=1[/math] or [math]a−b=2[/math].
In other words, for each ratio [math]a/b[/math] where [math]a−b=1[/math] or [math]a−b=2[/math], there exists a pair of superparticular ratios [math]{s1}/{s2}[/math]​ and [math]{s2}/{s3}[/math] that are [math]{a}/{b}[/math] complementary.
Bellow is a Python code that show for equal divisions of [math]a/b[/math] the cent error in the mapping of superparticular ratios [math]{s1}/{s2}[/math]​ and [math]{s2}/{s3}[/math] that are [math]a/b[/math] complementary.
When running the tests sequentially for equal divisions of 2/1, 5/3, 3/2, 7/5, 4/3, 9/7, 5/4, 11/9, 6/5, and so on, we observe a converging sequence and pattern for low errors: 5, 7, 12; then 7, 9, 16; then 9, 11, 20; then 11, 13, 24; then 13, 15, 28; then 15, 17, 32; then 17, 19, 36; then 19, 21, 40; then 21, 23, 44; etc. --Contribution (talk) 11:08, 28 August 2024 (UTC)
# Enter the values for the X ratio of EDX. Ensure the numerator and denominator differ by 1 or 2.
numerator, denominator = 3, 2

# Program
from math import log

def calculate_complementary_pair(numerator, denominator):
    """
    Calculates the superparticular complementary pair based on the difference
    between the numerator and denominator.
    """
    diff = numerator - denominator
    
    if diff == 1:
        # Case where numerator and denominator differ by 1
        numerator_2 = numerator * 2
        denominator_2 = numerator + denominator
        numerator_3 = numerator + denominator
        denominator_3 = denominator * 2
    elif diff == 2:
        # Case where numerator and denominator differ by 2
        numerator_2 = numerator
        denominator_2 = int((numerator + denominator) / 2)
        numerator_3 = int((numerator + denominator) / 2)
        denominator_3 = denominator
    else:
        raise ValueError("Invalid input: numerator and denominator must differ by 1 or 2.")
    
    return (numerator_2, denominator_2), (numerator_3, denominator_3)

def calculate_log_ratio(ratio):
    """
    Calculates the logarithmic value of a ratio in cents.
    """
    return 1200 * log(ratio) / log(2)

def print_mappings(ratio_log, superparticular_log, numerator, denominator):
    """
    Prints the mapping of ratios and their differences in logarithmic cents.
    """
    for ed in range(1, 101):
        mapping = int(superparticular_log / (ratio_log / ed) + 0.5)  # Rounds to the nearest integer
        error = mapping * (ratio_log / ed) - superparticular_log
        print(f"scale: {ed}ed{numerator}/{denominator}, error: {error:.5f}")

# Calculate the superparticular complementary pairs
(pair_1, pair_2) = calculate_complementary_pair(numerator, denominator)

print(f"Successive superparticular complementary pair of {numerator}/{denominator}: {pair_1[0]}/{pair_1[1]} and {pair_2[0]}/{pair_2[1]}")

# Calculate ratios
ratio = numerator / denominator
superparticular_complementary_ratio = pair_1[0] / pair_1[1]

# Calculate the logarithmic values for the ratios in cents
ratio_log_cents = calculate_log_ratio(ratio)
superparticular_complementary_log_cents = calculate_log_ratio(superparticular_complementary_ratio)

# Output the mappings
print_mappings(ratio_log_cents, superparticular_complementary_log_cents, numerator, denominator)