How to build SNEX Playground?
-
@ustk as far as I know when looking at it, I thought that x was the input signal and a was the saturation amount
-
@Casmat said in How to build SNEX Playground?:
Edit: so the gain factor is x?
f(x) means the it's the output, so a should be the gain
-
@ustk ohh yeah! Polynomials (or maybe not)!
-
@Casmat At first, does it look the way you want?
![Screenshot 2023-08-18 at 20.47.17.png](Imgur is temporarily over capacity. Please try again later.)
EDIT @Christoph-Hart @Dominik-Mayer Apparently there's still this Imgur over capacity issue that prevents us to see images...
-
@ustk why was there an float s in the arguments? And I should be declaring a as a variable, right? I put the code you gave
if (x < a) out = x; else if (x > a) out = a + (x - a) / (1.0 + Math.sqr((x - a) / (1.0 - a))); else if (x > 1) out = (a + 1.0) / 2.0;
In the get sample func?
Edit: didn’t see your post yet, the img seems broken
-
-
@Casmat if imgur is over capacity then there‘s nothing we can do except for stop uploading images :)
-
@Christoph-Hart Yeah I though it was somehow related to the forum... Or use another provider
-
-
@Casmat You definitely need to declare
a
At first, make it0.0
Then add a parameter to control it -
@ustk shouldn’t the a be from 0-1? And there were some comments under that music dsp post, do we have to do normalization or am I yapping away at nothing?
-
@Casmat and as for the image, isn’t that how the saturation should look like
-
@ustk hmm, seems like im missing part of the picture, im not really understanding the whole use of the soft saturation function vs other common saturation functions like a tanh function, have you got any resources that can help me learn more about saturation dsp or dsp in general a bit more? I feel like getting a better understanding would help me ease my way into Snex cause I have little clue what all this dsp does. Thanks for your help so far, opened my eyes to the vastness amount of info I’m missing and I’m pretty eager to learn more! After taking some time to research, it may be right to jump back at this, right?
-
@Casmat A good sounding distortion unit is much more than just the saturation function. It needs clever filtering, oversampling to remove aliasing, etc... Tanh is a good starting point, but you need to understand if you want more or less of the odd or even harmonics, or asymmetric distortion. And this is only the beginning, as a "true analog sounding" algorithm is much more... You might find some literature about this in your fav search engine. The first steps you've made is a good start! Just go for a simpler equation until you know what it does
-
@ustk Thanks! Will definitely take a look!
-
@ustk Think I'm ready to try again with the saturator, did some research on the topics and I feel much more confident going forward! Seriously, thank you haha! Instead of going for that other formula, i found a more simpler cubic formula: https://www.hackaudio.com/digital-signal-processing/distortion-effects/soft-clipping/
So with the formula, would the equation in snex look something like this?
out = in - a * (1.0 / 3.0) * Math.pow(in, 3);
Edit: All the filtering/oversampling should be done with other nodes in scriptnode, right? or is it within the snex shaper node itself?
HiseSnippet 1321.3oc2X0sSbaDEdLvPxRRpZhRT6k9hdAQJEsKMMsR8h.rvlrpYAKLkj6PSrmkczNdFKOiA1V066iUeD5iPeDxaP643wK1FVQgsoIsEjf87yLy24+CDjoi3FiNi305fIobh2cogST1QcGwDJR+sIdeBc.yX4Y9NVaMIkYL7Xhm2hu.Y30ZIRwWu64awjLUDuhEgbnVDwekHQXq3Frw2KjxdrX9AhjZZ+zM5GoUc0RcNfmEosIornwri46xP0VfR7VdmXgUmEZYVtAzYKc7jvQ5SUN8OTXDuUxQhNjP3hbrIcGIjwASsUCg3QCpr7EcV9CoCDwhy4W4A9zBA9UmntOvagqBRctAPxqFjVxAo6SCixDo1JIHdtCsuBBHCYfqtNTb5R79UZWMnfxtVBaLuWFPb9AV8Ysa+De3GO96FlqhrBsxWq1Ua46oV8wq7SqzZkedE+KJZ3vYJCelLsTxyloXL5lcUGbUUdxa4YOw+DlLmethf42zmt70ymF4r5ZJpU8UB6do7R5dZYL5qvOe4H.ozsAe5G5uMyxvfRIOPuTdlUfvwaa9IPVsKD0htM2L1pSg75KE+fLGcbtjYalNg0MkB.+QiXHFnTFgcR85paPNV6qLG65Bw6SCD1nQyFiKLCLBdp+IvXYk48n6LbHOxVAvkn8dy7VF19FWFtRYYH7l3ie2RR+duoyLK.+EZUxdZFOkkwOPGHYSV0vRRk78AL9D+2J0QiCE+H+xUHoNHrEpwpQiXJEWZlmBokeO0bhruN2JTGOfYyDmAsO2MOIDZSGw6VhNfm2BXMjitMRi4EgbUbAwe.eUJrCR6UJryTg0J+1kaOUmMtHbT9Yh2sb9dSgS9ngm0groTpOsqNIUTlk5LJdlof3Vz1qAeSByMPGf38TgBIuX9DZjEGNPKmjNRqDQX7ycUSMoMSz4.ZJsqWxLGvDRL+2agc0wvsrbOVD3bmDvrivZFr+CjfxyVK57D0F3sJWoHKDhCArLX1Fza133gW7zAfN+GfoDzoTL9aQTtyqTf.J9D2iZT7yNxLhAcnHMvzC.LkwWqt754q+UuVsldt5BjBp5W.e1VztR3l5GSNDS5tHNvqBR0OqrOJ8.FjngYRgRQLOK.lriTalGKz8DNQvuKbEDx1BSJTurUNT26pJavAgfJle1zTmcfr+XnydwigXmTywhPeJEDzFHTk.tp40.1YWf26ddnkmhUm00KbL+TmCttln2fRYIVxkt3F3fbk9y6R6aNDkFwjSuHHyaKsdbBqnV3u8ToG4DdG5qYmvKVyqHG8QEzC0YI9ufCou3rfNWwhd+10cQuzq8hd6EYAHbPFSYR0Fdm527EjsdcYays4plp6X0PKz75AlWM8t8FSYtdclALUiKCnabSCvleSI+8muiBypC4f0DumIBLV1ExMBxkF9qEw1QcpevJ1qWm8KYYwPbIpwf0Ea1CeoqWO7l6XTS+YLxa4OBKC+9YQkOh6R0XQgVSwXn.65si5DtDJMKv3CfZwgrbocJ2l0VCzJ8zQPUQ884vf1iOl2rQyrLnMsVnWZEmGtw9bImYpUu8Ea7JXrDKaPwPi4xWby+aWlY75yoN35iMD7+u6NvK9+5cfu9UeP+v+cGE+LJzWdc+hPo+GmX4GhUm+P7FIrnL8QQt+hCrn+1Eb.6VU7+moEc.R62gbha6EJt+MIAFWbTTDlu9kvzmYel0miy7UywYd5bbludNNyyliy7MywY91q7L3j5Mys5DWNOvHXG2JxdtMWJR+I+I5asV1C
Thanks!
-
@Casmat for these simple one liners you can also use the
math.expr
node, just rename your variables toinput
andvalue
and you can use the single parameter as drive parameter:output = input - value * (1.0f / 3.0f) * Math.pow(input, 3.0f);
and yes, the filtering and oversampling can be done with dedicated nodes.
-
@Christoph-Hart ooh! That's definitely useful! Thanks Christoph!
-
@Christoph-Hart Oops tried it, but it seems to not make a distorting sound, am I supposed to do more than adding the math.expr node?
HiseSnippet 1591.3oc0X0sTaaDEdkMKDbn+jNIS6zqzjoWP5PnVNo.o4hvuNgIwfGDgvMcxrHs1dGj1UizJ.2L499XkGg9HzGg7FPO6tRHIvCAbSosjYB97yt642uywzMV3QSRDwHqo2cXDEYMC1cHWNXsADFGs45HquD2gjHow1FVqNLhjjP8QVV0ethg0zSfz+7wmsJIfv8nErPn8DLO5qXgLYA2tK+RVPPahOcWVXIse7xa5I3qIBDof8TG2DEQ7NjzmtEQoVMLxZxM7YRQrqjHoIfNqJ7G5NPbL2n+drD1AATEgCxEtHCazZCXA9cy80DDxB2svyqa776h6v7YmwuHB70ZA1EmnbLvp1kYRNWCSxpjIMgwjtC10KlEIKjnrmai2jCIjdDHTW1TL5hr9.dMAn.WNeH4PZ6Xf3rCL6BMaNmM7eO3o8R4dRlfaK3aIjzs4y9fFuqwzMdeC6yKpWuQJS8Lwhf.Z7HEqxtwW1AmkmFd.MdN6iHAozyTDb+pwzIuZwTOiWWRQAeSNStcDMitsHvWEqTe9hY.TVXC9zq2bchjnRJY7.8hnwRlxbrVmdDTUaRQSiWmlbnTDo0MLRvU2f0LxrZJSRocffHY796x.ylAVvWgKyxAcR4llgmQ7gCV9Xlub.TvZseMDZ.k0efTQ4WXuFCoA9kzgGHHw9nC5m2DM8j999mptIljFVv8zSO86qxsUFasxR5IxBkyMKcHo1uZgeWCa66Cu1aTl18+EamGOey4T7VmkDEPFtsmjbDcKcxED2iDjP0xek3X3X.qmnIeAyP4zZQM8ZoIRQ3yiIQCXdIUN45zdjz.4JQQTRrBjAjJiSMBWM.vIfqZGHfJ.AMmegmn+YokZt3SZtniVqcE86GP6H7oUtYUuMzqy4z.kon485D5dTOnBrjsb1qABaGPjtxgAm6l5tQdJ377gJ4XYwqzJm+Fb+Ru8BMdOfNdAT..+Q3mBOYUPIE5al.nqpBRfpcmmvjCKiNeMPpZdoHUWUS7N3tLo2fQai0FgMB8a+SXiY36eAdid8frZgANAt89iKXdyqMXdibrf80O9LYj1s22Yjv3+Nt.xLJlFQho6J5BsWylPBiBnP0NcN6CBDdG5x9M5EwYiLlvpJMl0yTlkLNvwS9YZDGZGQpBxqCQFy.DOL.Q3BfLdzrlfDExVMExlgtohVUW3R49ZBEBUlPGEsUlPmbgk.w2hJOVDenNcj8Yj0TlXehNH+1dm3fVIHPbrB5lkUkZbJZbhlXJby4g+gbSSf4H9aycA.a8VNJmTe3thfgQCDblmJ+YtpbWZkPQJWl6WufjrKgEnp+spsE.EAA21DERyvtDEL+cvpoXPAJMdduyJTqXuE0J5pPHOzEfDCovD9DCO0EmCeahefMEpmKoVhptRtIpns.r5IlBSOIJFFQV1ZtMND987JIUJQ+DOPsRSKKnfF8ZpWZRX8D3Y2SUjgrVBy3QoR6GZp5r+Q6YcluYO6ex9Qvud.P2QYBQhimUq3bF9OU2gW9ZmBFDePZ+760pNpTXQ0PlSAVPGFOSsBnmNjSNGuO9LWIMR0aUVO2CoGaBRk0zXAlK3BWSEKAUI3XcNuXF7lI6oj5QBNyUpgVUHNLjnqkGqcSJCGdOivaieCLjVurutF6dZ5dh3P6mSgxOEVtykrt+ebUW2O5JutuYugcg46IQhDXqnR274j0prr0oxTdU0Mrpnkx8ZCtmS4TSNyRZdqk6R3UtLftxM0gUZcs+7YavI.7mKE7F+sS7.mkTo5.tfTXW.81RNkOXA6VkY+BXABHu3UYvX8pXvSb0vfqtiPI8GwHqI+m5qDMwUaJ5mX47+6uWTkg9SmaitL0v5M3GQCf1TsM9M3r0Yy4VsOqifKxGmTTArCEFZ1uOsJrynbnUjRXe3BN2c4cnATRRodueX4WAiXHwczC.FqXw0+ayNx702gMlqsBbv9uSd6FsL6R2ss9UZ21O6163um6MbGJfe9+mL82hAL8V15zs8+946ahUnuIdiPhWr3sdlu4gBv3VZNfey0+09lF2QQa6fNxrEDVsGNJDF67VOOUM8Cg3ynOSqw3LOZLNyiGiy7yiwYVXLNyhiwYV5ROiZh+JoRQno9GXzcC8lnVVlMfzsBn+BToL8JA
-
@Casmat sure it does, it's just subtle. Drive the synth at 0dB and play multiple notes.