tablefilter
Prev | Opcodes et opérateurs de l'orchestre | Next

## tablefilter

tablefilter — 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

    knumpassed tablefilter kouttable, kintatble, kmode, kparam

## Exécution

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

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

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

kmode -- 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.

kparam -- 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 tablefilter. Il utilise le fichier tablefilter.csd.

Example 899. Exemple de l'opcode tablefilter.

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.

Prev | Up | Next
tablecopy | Home | tablefilteri