tablefilteri

tablefilteri — Filtre une table source et écrit le résultat dans une table de destination.

Description

On peut utiliser cet opcode pour filtrer les valeurs de tables de fonction selon certains algorithmes. La sortie filtrée est écrite dans une table de destination et le nombre d'éléments qui ont passé le filtre est retourné.

Syntaxe

inumpassed tablefilteri iouttable, iintatble, imode, iparam

Initialisation

inumpassed -- le nombre d'éléments qui ont passé le filtre.

iouttable -- le numéro de la table contenant les valeurs qui sont passées.

iintatble -- le numéro de la table à filtrer.

imode -- mode du filtre :

  • 1 -- teste le poids des dénominateurs des fractions dans la table source. Ne passent que les valeurs de la source qui ont un poids moins lourd que celui du seuil.
  • 2 -- teste le poids des dénominateurs des fractions dans la table source. Ne passent que les valeurs de la source qui ont un poids supérieur ou égal à celui du seuil.

iparam -- entier, paramètre de seuil pour le filtre. Cela signifie que les dénominateurs dont le poids est plus lourd que celui de ce seuil ne passent pas à travers le filtre. Le poids d'un entier est calculé au moyen de la fonction de Clarence Barlow d'indigestibilité d'un nombre. Selon cette fonction, les grands nombres premiers contribuent à un accroissement du poids de tout nombre entier naturel qu'ils divisent. L'ordre des 16 premiers entiers selon leur indigestibilité est : 1, 2, 4, 3, 8, 6, 16, 12, 9, 5, 10, 15, 7, 14.

Exemples

Voici un exemple de l'opcode tablefilteri. Il utilise le fichier tablefilter.csd.

Exemple 1066. Exemple de l'opcode tablefilteri.

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>

</CsOptions>
<CsInstruments>

sr=44100
ksmps=10
nchnls=1

      gifarn init 8     ; initialise integer for Farey Sequence F_8
      gires fareyleni gifarn  ; calculate length of F_8, returns 23
      ; the table length won't be a power of 2
      ; (The length of a Farey Sequence with n > 1 is always odd)
      gilen init gires * -1

      gifarey ftgen 200, 0, gilen, "farey", gifarn, 0

      ; initialize destiniation table with 0s
      gifiltered ftgen 0, 0, gilen, 21, 1, 0

      ; initialize second destiniation table with 0s
      gifiltered2 ftgen 0, 0, gilen, 21, 1, 0

      ; table filtering opcode:   dest.         source,         mode,   threshold
      ginumpassed tablefilteri    gifiltered,   gifarey,        1,      6
      ; the threshold parameter indicates that denominators whose weights are heavier
      ; than 6 are not passing through the filter. The weight is calculated using
      ; Clarence Barlow's function of indigestibility of a number. According to this function,
      ; higher prime numbers contribute to an increased weight of any natural integer they divide.
      ; ginumpassed is the number of elements from the source table 'gifarey'
      ; that have passed the test and which have been copied to the destination table 'gifiltered'

      ; apply a different filter:
      ginumpassed2 tablefilteri   gifiltered2,  gifarey,        2,      5
      ; In mode=2 we again test the digestibility of the denominators of the
      ; fractions in the source table.
      ; The difference to mode=1 is that we now let pass only vaules from the
      ; source that are as heavy as the threshold or greater.


instr 4
      kndx init 0 ; read out elements of now filtered F_8 sequentially and print to file
      if (kndx < ginumpassed) then
         kelem tab kndx, gifiltered
         fprintks "fareyfilter_lp.txt", "%2.6f\\n", kelem
         kndx = kndx+1
      endif
endin

instr 5
      kndx init 0 ; read out elements and print to file
      if (kndx < ginumpassed2) then
         kelem tab kndx, gifiltered2
         fprintks "fareyfilter_hp.txt", "%2.6f\\n", kelem
         kndx = kndx+1
      endif
endin

</CsInstruments>
<CsScore>

i4      0     1
i5      0     1
e
</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Georg Boenn
Université de Glamorgan, UK

New dans la version 5.13 de Csound.