Limit number of decimals.
-
How can I limit a value popup to 2 decimals?
I have a frequency knob that sometimes outputs like 15 decimals. -
@RastaChess use
Math.round
Alternatively
Engine.doubleToString
-
inline function trim(value, decim) { return Math.round(value * Math.pow(10.0, decim)) / Math.pow(10.0, decim); }
-
@RastaChess said in Limit number of decimals.:
outputs like 15 decimals.
How did you manage that?
Standard frequency knob should be:
-
@d-healey said in Limit number of decimals.:
How did you manage that?
Float error I think. Seen it, too.
-
@aaronventure Must be some custom knob? Setting a knob to frequency mode shouldn't have such an issue.
-
@d-healey Not happening in frequency mode, true.
-
@d-healey :beaming_face_with_smiling_eyes: not quit sure, but It has something to do with custom popup value, the knob is being used to control an LFO freq, but when is in tempo sync, the popup value is scripted to show the note subdivision value. When not in sync mode it shows the freq. But then it throws those 15 dec every once in a while. Even in freq mode.
-
@RastaChess Post a simple snippet that demonstrates the situation.
-
@d-healey
here it is:HiseSnippet 1610.3oc2XEtSiaDD1FhomSaOUTueUoJ4F0eDTofMDBfNc5BDHmhJPhtji1SUpHi8FXEN65Zuldom3YnOD2KReD5iv8Hz9DzNqsi8lKqykCwcps4GH1c9lweyryrdF2Mf5fBCoAJp58G4iTT+DsdiHrKadoMlnz9.E06qcrcHCEXjr09i7sCCQtJppK9D9Fp5kTh+8mOdeaOahCJeKEkSoXGzQ3gXV9tca7cXOuV1tn93gBnq0nsCkzj5Qi.9rnlohusyU1WfNwlCaAME0kNzEynA8X1LTnhZo8oti5cI8WHI3OEGhO2CwWXozCLTx1sndtbFy+eklWh8b6N1uCUTT05lGEVLIJ7.siwt3r8yiFeVr.ibMDiGpKLI8VbB5YUD8jPIUAJUJgRKq0yI.6yxkv4yGq0l.GNCrgvtHURvprvqz0ZRADD1ZCsuB0J.VjoQ05llqZ.+YkGVtLD5CYFWaGXbTqNVFOxHNOXsKPriotQd1feUsBWTE.cN3i6bvY8d9IMOa+9m.JM9gAp0jNzmRfEUqHBZR0ACd1S2q+gEp5X.b0R9s95F5fAM3FznYmS5+zNGUVurNl3gIHiAQDGFlRLnDwGK25ATupNiM8pvy2KBsRY8WVtrtNdfQ0wan+Rvb55bmcsPDaOFK.edDCUs1pFV.ORjESKt7pUFhIUV0vTtHWWOTWZHlSJ.0VxPAEX98v+JpRQO.6WvEIWF0EkZWP3Mo9xWk6LE5KlyvWVaqh4Qs4ySsLeKtp4Zlyxi.Y5IdzM.n4Iyhqd5AcSaOuygqOpJMMfGqVe83zn3rurznoShFSsYl.wS+fft3ShSzS4.pthwidD3Lw3xyy3aZtxzmKliOWl.okbjaLMxMjibyoQtobjaMMxZxQVeZjaIG4NSirtbj6NMxskiLsZXBn6T.TIwocK.ZMIA+BNmrjDprJ3jxZaIXK3rxRRPvpfSqMhSVt4sl+UfKjU3kiN9djadHTUVTQW9cxxK3diRFNA42ZmUs0sS2m003z8N5YGZbP6dcOZumWV7FfXhzk5G42JsNr53Bxw2Q+xaaAW.hEEPLpXstUEIUY4h2nhjRKAw8qHofJWdsJRphDDKQ8sDjuSEIELBhkn91h9V8JRpMDkKw.6J.XSItuk4D.jXAKw.XcIg.qMl..XBdVld5dGaCMbDPiHtoGywRmmb6ji5TyjoLWW96DKW9FHGT3N8SnLTGR03znx2T13MEMXfTYo4ydn.oh4cyFLKEqRhFdNJH6EGo.gV7lruwklu9FcRJNE.RIsIXVGeT557FesjzkoRZ0Mzu4BoLDfxh6179ocateDiQIJX23AADNBTh8AwV8UJxF87vtnfXaTVabc9D5+5W4+WOV4YsOvlYy69MkX.Y8QALLOlnd.5ZXThjdg00N.EdEi5Gy7z6kfF4mWt+hbdSZLJewAMXnW.FZIMNTtGkYa84wmxs6u6IZ2eJytCBP+rBzEEHaopowsIabJWqutQHbzleYnh5Gos24zqQfFBvd8iUldZAXNkwcsKN7BehsTA7Gk3DC7oBH.EFINQ2aNQSohyLMkNvkz7t4jtKq0EybtTNeWPBe4Ixum4a57gep1gCFfbX4jsjVqeXlCCVZ9JpmepbuDp7EZOwidtsWd.DJd.VgRFP7KSEajI2HCf0Lll+Ol2o48m6o4UW7tZ73RuulX+CZ98mO0QS3cZE46vm.Q76MrbBk03WqEyyk3+m0amZ6i8od1Ab4sfq4hPDmQhWvyyQZmmh032Z781WiFPCFldqdlkNBcADND2oOBtIt2HhiX5XugTJ6RL4hIy7dPiinT+CI1PbvUzHcuzNj+xcnEyILCX19zjuxUSOpyUhBaeAgFfRZXPb+lQgL5vwNP7WmpGLYa7avT+Qs50VC9M3a3+c2lve1rycyZk6tOxzBycdJb9ajcjySW+W9aNRXbVR3+AX7LeW2h+O5ccuCT4ozHFTbCSEDfgFlzNIZXO3kINHfIDBxCdPZpKvqESVaxWGWPiHtwK9a3WpPK9Z0TgViE9A4YLz1IfdlSR2w7Bu6EuC32j3Orst1w70FVi6IVSybMSdag3ybb3g6uEhOx0YiagNadKzo1sPmstE5T+Vny12Bc1Yl5v6XXuH398jRQXitGlbytZ1qUTWT4e.D0OG6M
-
@aaronventure said in Limit number of decimals.:
inline function trim(value, decim)
{
return Math.round(value * Math.pow(10.0, decim)) / Math.pow(10.0, decim);
}this actually solved it..... Thank you so much!.
-
@RastaChess
Aha I see, yeah it's only in the custom popup. The
doubleToString
method that dabdab mentioned is what you want there.Also you can eliminate that ugly if statement and use
return Engine.getTempoName(value);
instead.However you don't need any of that :) You just need to set the knob mode correctly. You are passing numbers, but it should be a string,
TempoSync
,Frequency
, etc. Then it will just work.Also you should avoid using magic numbers like this
LFO1.setAttribute(4, 1);
. Use the built in constants instead. It will make it easier to read and understand your code.I've cleaned up the code a bit and removed the unneeded popup function
HiseSnippet 1299.3oc0Xs0aiSDEdbR7xlrKqnh9.BIjrxCnTQU1X11xkJzllj1UQzbQMgBHjnZh8jjQ0dFi83xFP6uA9KwOA9ov67.bFaG6IsoYyF0VIrTrzbtMey4LmKN884Vjf.tORq3vYdDj1S0GLiIl1bJlxPsagzdldGbff3aDSpwLObP.wFook+URBZEKfhd96W1.6fYVjLRHz4bpE4TpKUjQse8uk53bB1lLj5pH8d0aawYM4N7P.O40qg7vVWhmP5hkhkSGo8nisoBt+.AVPBPZEZvsmMXJ+WYwxeNMfNxgHWXhF.FJl7IbGaIhkTQMmRcr6O+bGfPZ58y7B4i8Baq2gZSSom4M9fHFFYZn5OzxsH7xu.7LUgWME3sDHoo.oBwPZK8AV9TOQFGIddhdaFDbFiA2tJThkEk6exo2jCRvDUcwWRNwGVjpQkCpUaWC30NGVpD35CDFWg8MN8jdlFeiQz8fpSHhNb6PGLbtpTVxpLHclvc505hA+X2lWzXXWPo4aFnVStqGmAKpTVUnEUGL3EmczviuUUmKfTsRO+4FEAaYHskQydcGdVuSKUrDk4PYDiwgLKAkyL3L0MTZWetSEq4FcWXmcBI6T52KUTdfpFPDGID9zQgBRkHJCIfrfCvZtrGFIZDRjhWorK2lTNgqwKMJmpQYiu1n7I9jeIjvrlUdIZRsscH84ATIXUrw9fllxXQwREoiMpjfxhKn+YX1DREHrYZB+pBhCRSbBHKWtp6uqwdfz0pVyDr7ajFechQRSj33ZhcbFAIhUVpacmCUb6c4BROVkHOao2Tx35rFOdo7RLkCweorkUI7WkhUXgtiH9pwUofPpyh4i52d9nZ4BqX+ihfbVaFUzyivtshHnDmJj6lKAUfnhnL2mkj41HTH3LD0NpnphqDEga0JonayFCbn1D+HaTRed7955+Q0QeW6VXAVVIIAX.X8H9BpzOn0hbETVNttRQ8VjfKEbuHjmbc.7UqK1ec19xpOKaQq5BxqAC8HconRGTpse55blxr6e5nZ2eN0tigjLjKVA.eZ8EStx3rc8.HbdtzO0m6EBG12S+nQ7qHHYhrrNZZBLxadbsssbajEDfNQ9PSHntoj1SzSyuQPqQuAzeawn2MqdC8MlWEUsYhrCZBCIbUqfKqRyfiwLUKem0gYcg3V58oBqoKGi4VBFkI.2CXLou76qe73wDKQF.KnexOb+zDVc6eb71+w5uxgOB6j4nfjK.Ij3lweRBaiT9FoBXthIm9q0cxIu0dxIs7qZRIyMbRoB2WSJUX8BRqFdq6c5O7FgofGvLuElsaqXXpKKxDgsjxMuU3zf5wcv9R9Y0hTZ.HuizN6JV8+n92iuhLl66lT0O0RmRl.t.UJYUBUHNvkyESorIKdya65mx4dGyvvY2VU99SwAxF9vbDp2pklcHO9KJZ5vstTkY6ILtOIdHBU5MCCDb24GfnuDX.T1MpCm1OoevdUgmwel78W0Dd8hd2MqeWJkYt5fdt09tID+MRC4xqnu62MefyljHN8R3+CP7J6okes5ocmi2Mu+1cCTNiGJfj6NX3yffApz6F5N.ZlXQ.jvXv2W.zzxIyEiWWStNJglvriV7uvSBSS4ZsDllyY9frGtXKe9EVwSOKS7dbDE3byh9SDJp2Qt1v75yLiPvnizKrrVzT2PwOeSU7Eaph6soJt+lp3Aaphewlp3W91UTNMwQgPef3TVDpS+ii6.nk19QKO5+.lUZQ5
-
@d-healey wow! :anguished_face:
want to do that for all my code? :beaming_face_with_smiling_eyes:
just kidding...
As you can see, I have tons to learn.
thank you so much!
I'll put this stuff in.
-
@d-healey on thing, I don't want the dotted values in the tempo sync mode. That is the main reason I had all those if statements in the popup function. Do you know of a way to not get those without all the "ugly" if statements?
-
@RastaChess That makes things more complicated, but it doesn't have to be ugly.
You can use an array of values that you do want, and the
return Engine.getTempoName(value);
function to display them. -
@d-healey Good idea. I'll give it shot.
thank you.