< Back to IRCAM Forum

Index de liste

Bonjour,

J’ai deux listes ; de notes et d’amplitudes,

mais je voudrais enlever les amplitudes trop petites.

Je filtre ces amplitudes avec “list-filtre” mais je ne connait pas l’index des valeurs enlevés.

:frowning:

Quel objet peut reconnaitre l’index pour enlever aussi les midicents correspondantes?

de.tiff (71.3 KB)

Hello Ruben,

C’est un problème intéressant et qui revient souvent de la part des utilisateurs. Une bonne solution consiste, non pas à connaitre les index mais plutôt à traiter (filtrer) les deux listes ensemble dès le départ. Il faut associer les hauteurs et les amplitudes dans un premier temps, par exemple avec un MAT-TRANS, de sorte à obtenir une liste ((midic1 vel1) (midic2 vel2) …).

Au lieu de LIST-FILTER, qui parcourt la liste en profondeur, il sera alors plus facile d’utiliser la fonction Lisp REMOVE-IF (ou REMOVE-IF-NOT) en utilisant le keyword “:KEY” qui permet de “cibler” l’objet du test : ici le 2e élément de chaque item (soit la fonction SECOND ou CADR).

Avec un deuxième MAT-TRANS, on sépare à nouveau les éléments pour retrouver nos listes de midics et velocities.

Jean

 

Merci Jean, ça fonctionne très bien,

mais, comment on fait avec plusieurs listes ?

4L.tiff (38.1 KB)

de la même manière: la méthode précédente marche quelle que soit le nombre de liste au départ (mat-trans se charge de tout)

[en revanche sur le patch attaché la boite ‘<’ n’est pas mise comme il faut en mode lambda!]

ok, j’ai tout compris.

En effet il faut éliminer une valeur de la liste d’attaques qui commence à 0.

merci Jean.

filter-amp-et-all.tiff (74.1 KB)