< Back to IRCAM Forum

Zn+ & Zn- modulo 12 : bug?

Bonjour,

Autant Dn* modulo 12 fonctionne impeccablement, autant Dn+ et Dn- posent problème, y compris quand on essaye le calcul par défaut. On se heurte immédiatement à un message d’erreur. Est-ce un bug ou faut-il entrer le calcul de façon différente de la multiplication ?
Sinon, petite question concernant la différence entre les opérateurs OM ±/* et les lisp similaires. Si j’ai bien compris, avec OM+ on peut additionner une liste (1 2 3 4 5) chose qu’on ne peut pas faire avec Lisp +. Mais dès lors, quel est l’intérêt de ces opérateurs par rapport à ceux d’OM ?
Merci d’avance.
Didier

Bugsmultmodulo12.jpg

Bonjour Didier,

Pour mod+, rajoutez un “optional input” en sélectionnant mod+ et en appuyant sur ‘>’ (pour plus d’infos sur les raccourcis clavier, tapez H dans le patch).
Cet “optional input” permet de choisir le modulo, non définit par défaut.
Pour la différence entre les primitives Lisp et les opérateurs OM, effectivement les opérateurs OM peuvent opérer sur des listes.
Vous pouvez donc préférer les opérateurs OM aux primitives Lisp, qui sont toutes présentes par défaut dans OM.

Dimitri.

Bonjour Dimitri,

Merci pour cette réponse rapide. Je viens d’essayer et alors que j’utilise régulièrement l’“optional input”, je n’avais pas pensé à cette possibilité dans la mesure où le mod* calcule tel quel. En tout cas, ça fonctionne et ça va me faciliter des opérations modulo 12 (ou autres) en combinant notamment les outils de la bibliothèque Combine et MathTools. Merci aussi pour la précision sur les opérateurs OM et les primitives Lisp. Il y a-t-il d’ailleurs une liste de ces primitives ?
Bien à vous.
Didier

Le mod* calcule tel quel car il a une valeur par défaut (12) pour le modulo.
Pour la liste exhaustive des primitives, possible mais pas à ma connaissance. En attendant que quelqu’un vous redirige si une telle liste existe, vous pouvez vous documenter sur le CommonLisp ici, par exemple : http://cl-cookbook.sourceforge.net/index.html

Bonne journée à vous,

Dimitri.

On peut utiliser dans OM l’ensemble des primitives Common Lisp (à quelques exceptions près, comme les formes “spéciales” type setf, etc.)
La “liste exhaustive” correspondrait donc effectivement à la référence du langage Common Lisp, accessible depuis le lien ci-dessus (qui donne aussi d’autres pointeurs intéressants) ou bien sur Common Lisp HyperSpec (http://www.lispworks.com/documentation/HyperSpec/Front/index.htm).

Nous avons essayé de mettre certaines de ces fonctions Lisp que nous avons jugé utiles dans les menus OM (package kernel / Lisp) mais il est possible d’en ajouter si besoin…

Merci à vous deux pour vos compléments de réponses et vos liens. Je vais regarder ça. Je suis en train de préparer un tutoriel sur OM pour des utilisateurs de deux ou trois forums que je fréquente et qui semblent être intéressés par OM (autour de la Musique Contemporaine et Audiokeys voire compositeurs.org).