Hello à tous
J'ai jamais été très fort en math , j'ai besoin pour un patch de convertir la valeur d'un [ctlin] (allant donc de 0 à 128)
en une valeur allant de -0.99 à +0.99.
Je jongle avec les opérateurs arithmétiques et expr mais en vain.
Si vous avez la solution , ça m'aiderait bien
Merci !
Hors ligne
yes merci Rep , j'ai trouvé entre temps d'une autre manière.
(amplitude des valeurs de -0.99 à + 0.99 = 1.98)
donc
ctlin * 1.98/128 - 0.99
comme on peut pas diviser de 0
ctlin * *0,01546875 - 0.99
Le hic c'est que je vais de -0.99 à 0.975
edit : C'est pareil avec le expr ($f1 / 64.646464) - 0.99
Je vais aussi de -0.99 à 0.975
Bizarre ça , si quelqu'un à une explication
Merci encore !
Edit : je suis vraiment un gros blin , un potard midi ça va de 0 à 127 et non de 0 à 128 ...
Problême résolu. Par contre je suis pas contre une petite traduction du ($f1) et m'expliquer pourquoi tu as un 64.646464 et non un 64 ?
Hors ligne
et pourquoi ne pas utiliser l'objet "scale"?
Hors ligne
Moi je ferai comme ca :
$f1 est entre 0 et 127
$f1/127.0 est entre 0 et 1
2.0*$f1/127.0 est entre 0 et 2
2.0*$f1/127.0 -1.0 est entre -1 et 1
0.99*(2.0*$f1/127.0 -1.0) est entre -0.99 et 0.99
(et donc 0.99*(2.0*$f1/127.0 -1.0) = $f1 / 64.1414 -0.99 )
Hors ligne
> et pourquoi ne pas utiliser l'objet "scale.
Je ne connaissais pas cet objet, je regarderais merci.
Ok merci Staross , très clair , maintenant je comprends pourquoi le 64,1414.
Hors ligne
Il y a aussi ce genre de choses pour des mises en correspondance non linéaires ...
<pre><code>
----------begin_max5_patcher----------
620.3ocuVssaiBCD8YxWgEOSQXy88s86npJx.NIdEXGYbzlsU8eesM3TSKjv
VkMHAXFr8blybXFdaimeE+Lo2G7Cvy.Ou2134YLoM3M9rmeG9bcKt2LM+NRe
OdOwOX3cRxYowdcKAKrVYm5nrVhzrDznwcbljg6Hlo+SAE25Lc9Ioc9vQqGw
x5CT19sBRsb.hnLTXRdFrLK..gQgHXBpHO.jfBiB.HXXD3kwUSaL9gW8qmJi
sNZvKx+bjLre99WluFc8zWMu.lDFos99lM5KAqjZTgQEYdN.9OxAnk4.XQlN
XgQE5aowlHOd9HGEsXjSYR+.feEls+tRB6Z4pPw51CU6q4sbwfSizX8iKtoK
of1WiaMdNJrztbs7ZxFTjGkVTDL6H28aV1+SfoHScjGL6H285djzRMIMTpQn
VlesjVb9hIME4h+Ok1NwpkTN6pp2ogaxMCW0Wmg4Eo4HnZblwTYhSPWwEMDw
5DHNDTJxhRghFF4lmTplR85JKurlk4O64TdrkxHSPSr4HX1Qtf6HW84zzUhT
bfAOecj6Ja3cXJyPxHspXLgJ3uRXaUorsXo5SipSRaUZaLa2.bSiw68NLnkK
BF2Tv3yfW9FJi9VZyMpps552i5h7hA0Qh4VwBY4jUT0lKnDlDaTtZW+cpZS9
sxceoelDr6tTI+1rgaiLTx0pLjldiJCqohfYNFo9m56aPn19TxpmeRTaciMw
.bTvjdIkcIE77GcdblzAZSCw7dqDuiNQ2tfz7thIM88HwT5ZvD5whIzJvjtA
zCDS5eO6tySnbXXo8OEiyByz8gRzsgRCScMMA7pGdeyeAvptD5O
-----------end_max5_patcher-----------
</code></pre>
Hors ligne
ou très mathématiquement :
fval = ival / 128 * (.99 - (-.99)) - 0.99
avec : ival la valeur d'entrée, et fval la valeur finale rescalée
soit :
fval = ival / 128 * .99 * 2 - 0.99
Hors ligne
Citation "Le hic c'est que je vais de -0.99 à 0.975 smile"
Ah ca c'est parce que tu divises par 128, or ta val max est 127 !!!!!!!!
Il faut donc la formule suivante :
fval = ival / 127 * 1.98 - 0.99
Si ival = 127 (donc le max) :
127 / 128 * 1.98 - 0.99 = 0.97
mais
127 / 127 * 1.98 - 0.99 = 0.99
formule générale :
fval = ival / (lim sup - lim inf) * (new lim sup - new lim inf) + new lim inf
edit : cite ( Edit : je suis vraiment un gros blin , un potard midi ça va de 0 à 127 et non de 0 à 128 ...
Problême résolu. )
ah dsl j'avais pas vu
Dernière modification par Enry (2010-12-08 19:13:39)
Hors ligne
helios a écrit:
et pourquoi ne pas utiliser l'objet "scale"?
Oui, en effet, bien vu helios !
Et je dirais même plus :
Tout ça pour ça ?
P.-S. : il y a un argument supplémentaire avec l'objet scale pour faire du non linéaire.
Dernière modification par pschiiitt (2010-12-09 14:51:43)
Hors ligne
> Ah ca c'est parce que tu divises par 128, or ta val max est 127 !!!!!!!!
Oui oui , j'ai souligné cette erreur plus haut 0 comptant évidement pour une valeur
La question que je me pose maintenant c'est en terme de consommation de ressources quand on à le choix entre plusieurs objets ayant la même fonction. J'imagine (peut être à tort) que plus un objet à d'inlet et d'outlet plus il est gourmand (du coup je privilégierais expr et la bête multiplication). Si vous avez des infos sur ce point , je suis
preneur.
> Tout ça pour ça ?
Ouep c'est utile si tu veux controler le coefficient de feedback d'un comb filter avec un controlleur midi.
Merci pour tout ces tips !
Hors ligne
Merci VB , j'ai entre temps lu pas mal de topic consacrés au "CPU usage" sur le forum de cycling74. La méthode préconisée c'est "mets en plein et compare ..."
Y'a aussi un topic intéréssant sur les énormes différences de consommations d'objets crées en Javascript par rapport à ce que ça aurait donné en Java ou en C.
Sinon autre point intéréssant , c'est que le Cpu usage que l'on voit dans le DSP status ne prend en compte que les ressources utilisées par l'audio et non par l'affichage.
Enfin pas mal d'infos , en tappant les mots clés "Cpu Usage" sur le forum de cycling
Hors ligne
Pages: 1