HISE Logo Forum
    • Categories
    • Register
    • Login

    How to build SNEX Playground?

    Scheduled Pinned Locked Moved General Questions
    38 Posts 4 Posters 1.7k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ustkU
      ustk @Casmat
      last edited by ustk

      @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...

      Can't help pressing F5 in the forum...

      CasmatC 1 Reply Last reply Reply Quote 0
      • CasmatC
        Casmat @ustk
        last edited by Casmat

        @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

        i make music

        Christoph HartC 1 Reply Last reply Reply Quote 0
        • CasmatC
          Casmat @ustk
          last edited by Casmat

          @ustk try using imgbb.com

          i make music

          ustkU 2 Replies Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart @Casmat
            last edited by

            @Casmat if imgur is over capacity then there‘s nothing we can do except for stop uploading images :)

            ustkU 1 Reply Last reply Reply Quote 2
            • ustkU
              ustk @Christoph Hart
              last edited by

              @Christoph-Hart Yeah I though it was somehow related to the forum... Or use another provider 😛

              Can't help pressing F5 in the forum...

              1 Reply Last reply Reply Quote 0
              • ustkU
                ustk @Casmat
                last edited by

                @Casmat

                SOS image provider

                Can't help pressing F5 in the forum...

                1 Reply Last reply Reply Quote 0
                • ustkU
                  ustk @Casmat
                  last edited by

                  @Casmat You definitely need to declare a
                  At first, make it 0.0
                  Then add a parameter to control it

                  Can't help pressing F5 in the forum...

                  CasmatC 2 Replies Last reply Reply Quote 0
                  • CasmatC
                    Casmat @ustk
                    last edited by Casmat

                    @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?

                    i make music

                    CasmatC 1 Reply Last reply Reply Quote 0
                    • CasmatC
                      Casmat @Casmat
                      last edited by Casmat

                      @Casmat and as for the image, isn’t that how the saturation should look like

                      i make music

                      1 Reply Last reply Reply Quote 0
                      • CasmatC
                        Casmat @ustk
                        last edited by

                        @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?

                        i make music

                        ustkU 1 Reply Last reply Reply Quote 0
                        • ustkU
                          ustk @Casmat
                          last edited by ustk

                          @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 😉

                          Can't help pressing F5 in the forum...

                          CasmatC 3 Replies Last reply Reply Quote 0
                          • CasmatC
                            Casmat @ustk
                            last edited by

                            @ustk Thanks! Will definitely take a look!

                            i make music

                            1 Reply Last reply Reply Quote 0
                            • CasmatC
                              Casmat @ustk
                              last edited by Casmat

                              @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!

                              i make music

                              Christoph HartC 1 Reply Last reply Reply Quote 0
                              • Christoph HartC
                                Christoph Hart @Casmat
                                last edited by Christoph Hart

                                @Casmat for these simple one liners you can also use the math.expr node, just rename your variables to input and value 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.

                                CasmatC 2 Replies Last reply Reply Quote 0
                                • CasmatC
                                  Casmat @Christoph Hart
                                  last edited by

                                  @Christoph-Hart ooh! That's definitely useful! Thanks Christoph!

                                  i make music

                                  1 Reply Last reply Reply Quote 0
                                  • CasmatC
                                    Casmat @Christoph Hart
                                    last edited by

                                    @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
                                    

                                    i make music

                                    Christoph HartC 1 Reply Last reply Reply Quote 0
                                    • Christoph HartC
                                      Christoph Hart @Casmat
                                      last edited by

                                      @Casmat sure it does, it's just subtle. Drive the synth at 0dB and play multiple notes.

                                      CasmatC 1 Reply Last reply Reply Quote 1
                                      • CasmatC
                                        Casmat @Christoph Hart
                                        last edited by

                                        @Christoph-Hart thanks Christoph!

                                        i make music

                                        1 Reply Last reply Reply Quote 0
                                        • CasmatC
                                          Casmat
                                          last edited by Casmat

                                          @ustk @d-healey @Christoph-Hart Tried to implement the original musicdsp.org formula, but it seems to be affecting the top half of the wave, I tried doing

                                          return out * -1.0f;
                                          

                                          and it worked for just the bottom, but How do I make it so the top and bottom of the wave is being affected? Basically making an odd symetrical curve on the shaper

                                          HiseSnippet 1771.3oc0X0rTbaDDVhkAav3jXG6jT4jJW4.tJGpUDG+SxAVfk0lxdgsPXr8gTNCRyt6THMiJoYA13xWxobKmys7Hjq4leGxKPdDxafS2yHgjf0X7FaR4kp.lt6Yluo+4a5Y6jH8YooxDK6o2ZXLyxdVh2Pgp+J8obg0ZMsr+HRaZphk3XDs7vXZZJKvx1t18PA1SOok9y+r3xzPpvmUHxxZaI2m8PdDWUHsSiGvCCaQCXawiJY8MarluTrhLTN.vSMRcqXp+tzdr0onYSPrrmZ0.tRl3onJVpk8jKKCF50WtuvX+17T9NgLbfqkGrPFwsjgAHhQoVqzmGFzI+bmZYYS5T3EpY7BWgzlGvOTdg23SzJbJlQY+g8DUgWsJvysL7pWBdi.R1kfzjFHcIhmeBOVUnAwyEHqIffSWJ31KCEisV1ujrhDLPnlOhtKqUBL3vIL2spW+FNvut922cfvWwkBGoXcohsgXtqOyymY5YdwLNGUU2tiTGtMIxvPVxHUiQ5jSZhyIFDsCK4FN6QCGvNzP33W0mRd89zxgbeyotjgRwZBtZiXl30kHXk4pf+6Qq0jpnXfHSFXWLKQwQHX2jsGjUaBKSSZxR2UIi01FEKE3JXOqJKOxDHZEJoJtn2Vb.pbHB8wjxhbsNnbQyvCG7xcZrOOP0uPvO2nOi2qeoxom1HCiF.MC4Arg6HoIAV6zKuXZ5oBBBdEZMWwhJj9pW8purpzExDqMVwNPUXbN7ztlI9Aaxymww4Zvt8XDhW66bbu470uAJqIOMNjNbCeEcO155.KntKMLko0+P49vz.Q2UO79byH2Etsd7JCRUxn6kPi6y8SqLylrtzAgpkhiYzDjrAzpRFXTtbHvW.K0lfiUBJpO+stq9yctS8ae2521Ua0Vxd8BYskArJqLVWC04BAKDghV1iRYay7gruRX4vcCT1Jjp7TCCOxJ0Y07PvQkCYwIphcYgb4qJBJs22ZlW.rjGiA.3djACfsrJgDxBmo.pnpvBfk5hTtZXYV52YrTmVHdIRGtxu+nw3Di.iPc26CLlwseQxpc6BQ0B.NIo0SN6HxmImS3I5Me1rgNsdh6Hov+ERAcYbBKllv1R1AJulKkFEGxfrc1Mb1IT5uqG+mXGmiM1.gkQKly2jlkNNTwScp8JtmbPYS4.j5qMUkvAlOBPQ3AjL9rrh.jm2dBjQ1LtNNFyK7Xh.8.jgJSoKN1NSoatxRj4qyT6KS1UGNx9eK6yY78oZm7y5dfq0Rggx8QJbdVVp4PwRR0CNGo97vOVdCRg6PB1P3AD25tcvCodxcjgCi6KEbeL9YVp7izRQxA3ECly08ooaQ4gX9u8DqCTQfysEEYZF1ghz8Whf2fAInrj48OLQsBdKxUzYgPbnCPIFwfa2SMxvENm913+.LEoueBalpFpG8J0LHffawEIoB1AOKsOEtuypBltLfoD17k0WNe8MsaktB0TWfifp9IvscZxJgvJsVf01XRG11oYejcUoTkdsfb8CxtVlrEExzvTIuPd.KoCP7iiVZP.W1haTA+U6KfarL2Gs7.nv2TVVQBhAQ.6f7bmUgz+.niQ8lgf2pjmEwd9HHp0lKxPbA6Ua5AGQ1+rnmhEikmksyaW19FObYKQ2w4HMS36wrN1RakkrX5LWl5CcRC+F7kUiUeFgJngCSYyWwlSe7JumYfLrRj6HAB62otVqRIhSQ5go8UNUWvjA16nOD4Mj5MQkCPkXYsSNV9zWd7XID2pFK+8e629yEOVr7k89iq1vbPzuS53gx25znF+ZiS0V+ieZy+ZQyqC7hjRUefq8n6+MaX89+nOKYSVJSYVkSvAjcQ8qmdXVxZoaiZ8og4KDPjtrTtaDUSsOVsrWt6fqZTdAxigdV0uAVS4dU83txjHm6w.1Xr0F22EuBN9T+JXSazaAs6lFKSgGKTZkOhtEJqqISMPT0binJVgGuVvwys7YHWXIKOeiNTQkECFWYkZyK8Jl+dwUEHGsGCNMAanIgnUX5fEX.zZr9wCtkmXg3EJK99P+zPbwuReh0NouP.2w7KDXp2Weg.Sd55i7jg2G.uLnRauSmiQONdywph8Xg3cQHFuLI6Ac4RqVZ0VJj4MTUDz2jAsM1qGq5sli5.sjRAMFTH4JM1jExnokJ29pFODZxhlzVeyyX4KbeqeBvHiWeAw.WGjOv4+Rb6LMM6DecWsS0q6dmi2w+kdmwUn.k4GNQ5Om.z3K3nC2N++GuOKdD4YwdDQ8SjOy271ajv37ZIv4Vn+dumlzFG63ZsmowGB9RTqH3Zmm46i4zeM3eF8bVXLly2LFy4liwb91wXN2ZLlysGi4bmSbN3M9KMPIiL4+ffNqZdPisooGcof0+BpxhvJC
                                          

                                          Edit: Don't know if it'd be useful, but here's a cpp script of the same music dsp code being implemented into a program called psycle: SourceForge

                                          Note: Since the snippet probably doesn't work, you'd have to create a new file and copy/paste the get sample function and paramemter callbacks from here: https://justpaste.it/3iopy

                                          i make music

                                          1 Reply Last reply Reply Quote 0
                                          • CasmatC
                                            Casmat @ustk
                                            last edited by

                                            @ustk @d-healey @Christoph-Hart quick bump/update, on the other cpp code in my last post, the code had this:

                                            		if (sl > 0) {
                                            			ProcessChannel(sl);
                                            		}
                                            		else {
                                            			sl = -sl;
                                            			ProcessChannel(sl);
                                            			sl = -sl;
                                            		}
                                            

                                            which I think is what gives them the odd symmetrical waveshaping effect, tired to implement this in hise, swapping the sl for input and I got an even symmetrical waveshaping effect, I'm lost haha!

                                            i make music

                                            CasmatC 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            20

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.7k

                                            Posts