< Back to IRCAM Forum

Filter pitch in Chord-Seq (on request)

Hi,

On request from OpenMusic Groupes Facebook here is some code:

filter-pitch-range method will filter a range of pitches in a CHORD-SEQ preserving all vel,dur chan and data.

Screenshot_2021-02-21_16-34-16

here is the code (put it in the init folder and restart OM):
filterchordseq.lisp (1.7 KB)

If useful and required, will be integrated in next release.

Best
K

1 Like

Thanks Karim! That’s a very useful function.

Graham

Hello,

Thank you it’s useful !

Once the .lisp file has been copied to the “init” folder and OM restarted, could you please tell me how do I call the function in a patch? Writing it down doesn’t call it and I don’t find it in library.

Best regards,

Lisa

Hi Lisa

make sure to type exactly: filter-pitch-range
This should definitively work.

Best
K

yes it works, Om version folder problem. Thank you !

Rebonjour Karim,

J’ai rĂ©alisĂ© mon propre patch de rĂ©fĂ©rence “filter-pitch-range” avec les librairies d’origine, exceptĂ© l’objet “positions” d’OMTristan. Cet objet donne toutes les positions d’un Ă©lĂ©ment dans une liste.

Existe-t-il un objet similaire dans les librairies de base ? Sinon pourriez-vous s’il vous plait me montrer quel patch avec les objets de base peut accomplir cette fonction ?

Je vous montre en fichier joint ma version de “filter-pitch-range” qui donne strictement les mĂȘmes rĂ©sultats, afin que vous puissiez s’il vous plait me donner un retour sur son Ă©laboration et Ă©ventuellement remarquer des raccourcis logiques qui le rendraient plus simple ou plus “joli”.

En vous remerciant par avance, bien cordialement

Lisa

filter-pitch-range (pr).omp (33.1 KB)

Je n’ai pas tres bien compris la question. C’est la meme chose en plus complique. Que cherchez vous a faire au juste?

Chere Lisa

Je crois que j’ai compris

Je vais ameliorer le filtre :slight_smile:
K

Bonjour Karim,

Je suis complĂštement autodidacte avec OM (comme beaucoup ici j’imagine). En plus de mes propres patchs liĂ©s Ă  mes idĂ©es compositionnelles, il m’arrive de tenter de rĂ©aliser par mes propres moyens les patchs d’objets dĂ©jĂ  existants afin de mieux comprendre le langage gĂ©nĂ©ral autour des listes. Cela me permet Ă©galement dans un second temps de dĂ©velopper ces outils : j’ai par exemple dĂ©clinĂ© filter-pitch-range dans une version oĂč l’on ne choisit pas un ambitus mais des notes prĂ©cises et auxquelles on peut appliquer une lambda fonction (transposition, approximation etc.) avant de les rĂ©injecter Ă  leur place dans l’objet initial.

Bien que je rĂ©ussisse souvent Ă  les faire fonctionner, je peux avoir parfois le sentiment d’avoir suivi un raisonnement logique quelque peu boursouflĂ©, mon but Ă©tant de crĂ©er les liens les plus directs et Ă©conomes qui soient. Je suis en effet soucieuse de la beautĂ© du geste en programmation.

Ce pourquoi je me suis permise de vous soumettre ma version dans l’espoir d’avoir un retour sur sa conception. Vous l’avez trouvĂ© trop compliquĂ© et confirmez dans ce cas mon intuition. Si vous avez le temps, je serais alors ravie de voir votre version avec les objets de base d’OM. Oui car, en plus d’essayer de patcher des objets dĂ©jĂ  existants, j’essaye d’utiliser les outils de bases qui opĂšrent directement sur les listes. Or dans mon patch je suis embĂȘtĂ©e de devoir utiliser l’objet “positions” de la librairie d’OM-Tristan qui doit dĂ©jĂ  ĂȘtre un patch Ă©laboré 

Merci et Ă  bientĂŽt !

Lisa

Chere Lisa,

Par complique je voulez evidement dire que l’on peut faire la meme chose mais en plus simple. Deja on a pas besoin de positions de la lib tristan.

Je t’envoie donc le code (a mettre dans init) qui fait un filtrage:

  • par range (comme le premier code)
  • par notes donnees (comme tu voulais)

Evidement on peut aussi faire par d’autres criteres, mais dans ce cas mieux vaut faire une autre fonction.

les modes sont:

  1. band
  2. selected

avec soit option pass ou reject.

pour avoir les entrees supplementaires c’est ‘k’ (car c’est des key)

le code:
filterchordseq1.lisp (2.4 KB)

bien a toi
K

1 Like

Bonjour Karim,

Merci beaucoup pour ces détails !

À bientît sur le forum,

Lisa

Continuing the discussion from Filter pitch in Chord-Seq (on request):
Bonjour Karim
J’ai tĂ©lĂ©chargĂ© flilterchordseq1.lisp - qui est certainement trĂšs utile - dans le dossier de mon workspace (c’est bien ce que tu appelles “init folder”?. Ensuite j’ai relancĂ© OM pour appeler “chord-filter” - rien!

Where can I find the “init folder”
?
My OM 6.18 app is located in the Application Folder, my libraries in the Home Folder.

Cher Markus,

Les fichiers lisp sont a mettre soit:

  • dans le dossier init se trouvant (pour mac) dans OMxxx.app (click droit) Show contents
  • ou dans le dossier user du workspace.

Dans le premier cas, il sera disponible pour tous les Workspaces
Dans le deuxieme, uniquement local, c-a-d dans le workspace en question.

Bien a toi
K

Merci Karim - amicalement Markus

Cher Karim

J’ai bricolĂ© mon propre patch pour filtrer une liste de hauteurs selon la tessiture d’un instrument donnĂ©.
Je voudrais en faire une fonction gĂ©nĂ©rique. Si je suis le tutoriel (tutorial_index) je devrais ouvrir le patch, aller sur file/new generic function/ 
 Or ce menu n’est pas accessible ni sur mon OM 6.18 ni sur mon OM 6.15. Je tourne sous Mojave

Cher Markus,

C’est normal. Le tutoriel en question fait reference a la version 5 de OpenMusic. Cette feature a ete depuis retiree de la version 6. Il est possible que votre filtre existe deja dans la derniere version de OM (il y en a 2: chord-band-filter et chord-filter). Si vous avez un autre genre de filtrage que vous voulez faire, peut-etre decrivez le, ou mieux envoyer un patch d’exemple (MWE).

Best
K

Bonjour, il vous faut faire cette manip depuis la fenĂȘtre “Packages” de OM, en ayant le prĂ©alablement ouver le package “user”.

Thanks Jean and Karim
I know that similar functions already exist, but I wanted to design my own function with “loop inside loop” as an OM exercise. There are certainly more elegant solutions - e.g. if there were a function om<>. Anyway it works perfectly.
Question: is it possible to retrieve the Lisp code from the patch?

Dear Markus,

some answers here:

  • om<> is like using (and (< x y1 ) (> x y2)) so yes somehow depending your needs. Again it is difficult to answer without any example
:slight_smile:

  • It is PARTIALLY possible, since version 6.18. Partially because for the time being, unfortunately if the patch contains, either: an omloop, another patch, or a lambda function, you will have a partial code. This is ok:

This is “obscure”:

the “g9317” represents the omloop. So you don’t have the complete code. Beside this, if you need to code it in CL, it would be different from the graphical code, to be efficient, you should re-write the code, omitting repetitive calls, etc.

For instance, in the first example the code generated is:

(list (progn (loop for i from 1 to 10 collect (om-random 0 10))) (arithm-ser 0 10 1))

but you don’t need the progn macro here you can code it simply like:

(list
(loop for i from 1 to 10 collect (om-random 0 10))
(arithm-ser 0 10 1))

So my advice: learn CommonLisp

Best
K

Encore Merci Karim

Voici le patch fonction et un exemple:
filter-range.omp (7.3 KB)
e.g.flûte_basse.omp (4.7 KB)