fareyleni — retourne la longueur d'une suite de Farey.
On peut utiliser cet opcode de concert avec GENfarey. Il calcule la longueur de la suite de Farey Fn. Cette longueur est donnée par : |Fn| = 1 + SOMME sur n phi(m) où phi(m) est l'indicatrice d'Euler, qui donne le nombre d'entiers ≤ m premiers avec m.
Quelques valeurs de la longueur de Fn en fonction de n :
n | Fn |
---|---|
1 | 2 |
2 | 3 |
3 | 5 |
4 | 7 |
5 | 11 |
6 | 13 |
7 | 19 |
8 | 23 |
9 | 29 |
10 | 33 |
11 | 43 |
12 | 47 |
13 | 59 |
14 | 65 |
15 | 73 |
16 | 81 |
17 | 97 |
18 | 103 |
19 | 121 |
20 | 129 |
La longueur de la suite de Farey identifiée est retournée.
ifn -- Entier identifiant la suite.
Voici un exemple de l'opcode fareyleni. Il utilise le fichier fareyleni.csd.
Exemple 293. Exemple de l'opcode fareyleni.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc for RT audio input as well ; For Non-realtime ouput leave only the line below: ; -o fareyleni.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; initialise integer n for Farey Sequence F_8 gifarn init 8 ; calculate length of F_8, it should return 23 for |F_8| gires fareyleni gifarn ; convert to negative number for the GEN routine because ; the table length won't be a power of 2 ; (The length of a Farey Sequence of n > 1 is always an odd number) gilen init gires * -1 ; create F_8 with GENfarey, the negative table number prevents ; unnecessary normalisation (F_8 IS already normalised) ; n mode: gifarey ftgen 100, 0, gilen, "farey", gifarn, 4 ; if mode=4 then 1 is added to each element of F_n. ; Useful for creating just tuning tables that can be read by the cps2pch opcode. instr 1 ; the very last element of F_n is not needed in the case of tuning tables ires = gires - 1 ; read out and print to file kndx init 0 if (kndx < ires) then kelem tab kndx, gifarey fprintks "farey8_tuning.txt", "%2.6f\\n", kelem kndx = kndx+1 endif endin instr 2 ip cps2pch p4, -100 asig poscil .5, ip, 1 aenv linseg 0, 0.1, 1, p3-0.2, 1, 0.1, 0 outs asig * aenv, asig * aenv endin </CsInstruments> <CsScore> f1 0 8192 10 1 ;sine wave i1 0 .1 i2 1 .5 8.00 i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + . > i2 + 1 8.22 e </CsScore> </CsoundSynthesizer>