IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lisp Discussion :

problème de code


Sujet :

Lisp

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 21
    Points : 12
    Points
    12
    Par défaut problème de code
    Bonjour. j'ai trouvé un code SAL et j'essaye de l'écrire en LISP. Le problème est le suivant ; il faut écrire qu'une variable a une quantité de modulation qui varie entre plus ou moins 20 pour cent. Le code SAL est: mod-rnd = mod-det * 0.2 *rand-ctrl(). Je serais reconnaissant à un modérateur de m'indiquer comment on peut écrire en LISP cela.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Bonjour. Est-ce que rand-ctrl est une fonction prédéfinie ? Qu'est-ce qu'elle renvoie ? Désolé, je ne sais point SAL.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par fdair07 Voir le message
    Bonjour. j'ai trouvé un code SAL et j'essaye de l'écrire en LISP. Le problème est le suivant ; il faut écrire qu'une variable a une quantité de modulation qui varie entre plus ou moins 20 pour cent. Le code SAL est: mod-rnd = mod-det * 0.2 *rand-ctrl(). Je serais reconnaissant à un modérateur de m'indiquer comment on peut écrire en LISP cela.
    Bonjour.

    Il faudrait savoir quel lisp tu utilises, afin de savoir quelles sont ses possibilités de 'random'.

    Par exemple, en Common Lisp (cf. 12.9. Random Numbers), la fonction 'random' admet un flottant.

    [Function]
    random number &optional state

    (random n) accepts a positive number n and returns a number of the same kind between zero (inclusive) and n (exclusive). The number n may be an integer or a floating-point number.
    Dans ce cas, la solution est très simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (setq mod-rnd (* mod-det 0.2 (1- (random 2.0))))
    Si la fonction 'random' n'admet que des entiers (comme en emacs-lisp, par exemple), on peut s'en tirer avec un peu d'arithmétique de 6ème niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (setq *mod-rnd-precision* 1000000)
    (setq mod-rnd (* mod-det 0.2 (1- (/ (/ (random *mod-rnd-precision*) 0.5) *mod-rnd-precision*))))

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Je remercie les modérateurs pour les réponses rapides.
    Je cherche à écrire en XLISP utilisé dans le logiciel Audacity. En définitive, c'est du Nyquist; on s'en sert pour générer de l'audio uniquement.
    mod-det n'est pas une fonction; dans le code c'est une variable qui semble imbriquée avec d'autres variables. Voilà un bout du code en SAL:
    mod-det = mod-index * step-to-hz(pitch),
    mod-rnd = mod-det * 0.2 * rand-ctrl(),
    mod-depth = mod-det + mod-rnd,

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par fdair07 Voir le message
    Je remercie les modérateurs pour les réponses rapides.
    Je ne suis pas modérateur, mais simple utilisateur du site, comme la plupart ici!

    mod-det n'est pas une fonction; dans le code c'est une variable
    C'est bien ce que j'avais compris.

    qui semble imbriquée avec d'autres variables.
    Je ne comprends pas très bien "imbriquée'.
    Veux-tu dire qu'elle fait partie d'un groupe de variables locales à une fonction?

    Je cherche à écrire en XLISP utilisé dans le logiciel Audacity. En définitive, c'est du Nyquist; on s'en sert pour générer de l'audio uniquement.

    D'après la doc, il semblerait que la fonction 'random' de Nyquist soit du 2ème type (argument entier). Donc la 2ème solution proposée devrait fonctionner (en remplaçant 'setq' par 'setf', si besoin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (setf *mod-rnd-precision* 1000000) ;; *mod-rnd-precision* peut être une variable globale
    (setf mod-rnd (* mod-det 0.2 (1- (/ (/ (random *mod-rnd-precision*) 0.5) *mod-rnd-precision*))))
    à tester...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci pour les commentaires.
    je ne suis pas compétent en LISP, aussi, si j'ai utilisé le terme "imbriquées" c'était pour indiquer que dans le code SAL qui m'intéresse on note à plusieurs reprise des noms de variables qui semblent être toutes dépendantes les unes des autres. Désolé pour mon erreur de vocabulaire si effectivement dans LISP le terme "imbriqué" à un sens très précis.
    Apparemment, il y a un problème avec la suite du code. J'ai transcris en LISP ainsi pour le code SAL [amp-mod = rand-ctrl () * 0.3 + 1] et j'ai donc écrit par similitude avec la variable mod-rnd :
    (setf amp-mod (*amp-mod 0.3 (1- (/ (/ (random *mod-rnd precision*) 0.5) (*mod-rnd-precision* ))))
    L'auteur du code SAL indique que ici, l'amplitude varie de + ou- 30 pour cent.
    Donc, il y a encore un problème car le Nyquist Prompt indique dans Audacity:"error: unbound variable - AMP-MOD if continued: try evaluating symbol again".
    Est-ce qu'il faut concevoir comme un tout le code SAL suivant:amp-mod = rand-ctrl() * 0.3 + 1
    return fm-det * amp-mod
    D'avance merci pour les commentaires.

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 17h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo