HISE Logo Forum
    • Categories
    • Register
    • Login

    Tonal Balance

    Scheduled Pinned Locked Moved General Questions
    48 Posts 12 Posters 3.3k 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.
    • NatanN
      Natan
      last edited by

      @Christoph-Hart I CLearly Hear The Changes by Bypassing the Scriptnode module, any Idea ?

      This is Just like what you mentioned above about Frequencies :/

      HiseSnippet 1675.3oc6ZszaabCDlqjnSkSZadh1iKPt3.jXXImlFzdvxuTiQsbT85Xj.XfTlcojXztja2kx1xE8TaARO0y4T6Ogds27OfTfBjeA8Pum9Knc39PZWIYEYEa27v1.FhCeLebluYHoGU0SXR88EdHs7az1khzNG1nMW1XwFDFGsxRHsO.Wg3Kod5ghVnsKw2mZgzzx9EJAZ4ygB94Eys.wlvMocEgPaJXlzUYNLYWoUK8kLa6xDK5FLmDi9lkVwTvWTXKZA3IKdFjKwrIoNcMhZXYvHsIV1hIEdFRhj5izxsfvpsQCwN7vwuIym8HappQAjArPghKKrsTHVIEsXClsU038sOBogq10JjMzJbYbElEqi7tViyGzgd2YjzdnkIM7xlBdERBuYR.uA.IsDPJWHjt.1vzi4J61iBOmEuBGbN0HfYOITBGKRae7hBX.b4zNjlzxdPiNSXpaMyLWWG9y097Zs3lRlfqK3qIjz6xm5ZS9sSlexuaR8d6pVsA1mRMdBaap2.6V4o8F1Dmh2x4QTuqquMwtEsy.gseZaJ9fsoIc4lg65DCTvWgyj20kxOHh.JxTAe5dqrDQRTNhHYv3bodRlBBZKQ2FX0gtk73kn9MkBWfW2mOCXKBqV1DYZJjJtIpCvFjxuobNbelrcx3pd4U4FMd0vo8iJbu.tJSZ1Xv3My.vKX0NtwaTT56iWtVMporKXygKe+StPxIiBIAcpTNzz0lIgnqTln3Pwmf6R6c8ntDO5Fhp1j1S4SbbsoqCH755OxVX1zfsGs+XE2P.rfZDSY1fv4Ta+wIjZhQ1lTXn1Dz5hVRFudEhzisKDatVKGCH4sIcwHzAxzxnhrBaOipshgXP4VAM9W3mnNKnZqE0Yg3NSDTtFUtivqYfyH5yvdQY4ubGK+R9twcMussXmEENtrHdKPGBjUUX21sgfyLUhBGQLhm2QzBTVDruCweCByV4E2j54GrHmAOyzvu.IeMgEXjvkIlfwrcUhrgJZQk4AniTuoM6PKGH9RRSUKU7AegVH.VNpscvwdYSj9IjIpZAwbYTq94vq3uopWShMZSkuVAXjZMCsUg3TMzyf8U.AcfXNr6wEZczY1D5LGdUA5kXjNorEIw04wO1lwatCStmGP.ZmFiWA+XKe2o6YHisgQwxro6FepRYlMPF769QE74Vzcio8KCQtVP1vfInVOTUhGbMnnYkoSKHBnBiGsSiSAyJUgraZYO44kLjTWUlkjopMZR2IbeGIsz267GyEdyhxdzuoEka1FkdoJ8KkPCW+HTe5GlV+5+Ey0m9Cjpz+D3fjr8sxnDtvODODO3GgqEZkm90Se3DC2FdyiUeH5mFpOrzry9745Q+6+rmc0QS+nq9O+Yf9yh+pd06Kl6kvcJte+bmhind6xcBdZR+bmCOsEnnihp+5KszyiL4FNBgrAbrXJ8W5u16Gl6DIrohJ9nuU4HZqOLUmGuLm.WbvZ.97TmAUGbNESGrdV3HAO5z0OjGFjIU.ZpvqrCeC+fAPy.+Z5M7u9zm968ug2u9uckRGszrR+boQR0uTZVPhCzw+V+b30o9TY3pLDCfe5D1X0ymec7x.WnmKCT3snaCbLeRB6+uaCjNwRu9vYO0GdzbafSvazEd3PgSOb3cvCGl.eGV8Fud9TwTIMJd5CMNpNd3zGZb5CMNtdnQu2Gn3o2G3Mf6Cj1GNQv8AN85.uqbcfCtwBBQSGRv+9+W4xyco35GMeKKlXUgZxQ+i5CjnqDoqpMC0qvAUx68un4eOpk71cjK4sQatYPh0DADAEfaCOhYSkKLgpTvLNUXhwuN3sU0pMYI2MBpwjgj3IgkO4hrNcavBSSICRYEU08UvK9YacOeXDa4Q2iP2Jxdt0cX9T8anpD9iolR+sVGTP46uUf8SMc+sJT715MYlM0KN8NjsQNJKWXboCILM3OlAYCag.TE2mcvdxJtesribsDODk7O2wUI+OQKM6qdkjOZJGZ9XLZvTjrk4aSsgPp.LdQH.rFoksLVZ53oJBtHtVbIojROV85zzGYLnMz7RIDVzUxkKsN0lR7Scr3pvyGHd8FUcHrEENzkFdf9qOFGBWcUR.82N9F.j8MsuA.GMP4jnx2mD5vgX5IdnY3WX.EW98Bj.6adP5+73Jp15EPaGdvMVU9aHWtE6gllJy8MJfPCdNEGi4L6XLmaNFy4SFi4bqwXNe5XLmaOz4nNLZ9VRgSXnHHn5xgugPqyUAzxh9O.+J+JK.
      
      Christoph HartC 1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart @Natan
        last edited by

        @Natan why did you mix jlinkwitzriley nodes (the JUCE ones) with the filters.linkwitzriley? I'm pretty sure their internals are a bit different so this will not work.

        NatanN 1 Reply Last reply Reply Quote 0
        • NatanN
          Natan @Christoph Hart
          last edited by

          @Christoph-Hart
          LOL, I'm OUT
          alt text

          Gonna Fix it Now LOL 😆

          1 Reply Last reply Reply Quote 0
          • NatanN
            Natan
            last edited by

            @Christoph-Hart That's did the trick :) :folded_hands: Legend :gem_stone:

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

              Alright, I've just pushed a few templates, including frequency splitter up to 5 bands, a dry/wet mixer, and some other utility structures.

              If anybody has ideas for more templates, let me know, they are pretty easy to add.

              Matt_SFM ? 3 Replies Last reply Reply Quote 4
              • Matt_SFM
                Matt_SF @Christoph Hart
                last edited by

                @Christoph-Hart Awesome 👏
                If anything comes to mind, I'll post a request. Thank you Christoph !

                Develop branch
                Win10 & VS17 / Ventura & Xcode 14. 3

                1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @Christoph Hart
                  last edited by A Former User

                  @Christoph-Hart Thank you for the update. on macOS M1, While compiling the current Hise develop branch, I get Use of undeclared identifier 'NumVoices' errors on the below places:

                  SN_POLY_NODE_ID("transport");
                  
                  void onTransportChange(bool isPlaying, double /*ppqPosition*/) override
                  		{
                  			value = isPlaying;
                  		}
                  
                  SN_POLY_NODE_ID("ppq");
                  
                  void updateValue()
                  		{
                  			value = hmath::fmod(ppqPos, loopLengthQuarters) / loopLengthQuarters;
                  		}
                  
                  Matt_SFM 1 Reply Last reply Reply Quote 0
                  • Matt_SFM
                    Matt_SF @A Former User
                    last edited by

                    @Steve-Mohican MacOS? I just compiled it without issues on PC

                    Develop branch
                    Win10 & VS17 / Ventura & Xcode 14. 3

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @Matt_SF
                      last edited by A Former User

                      @Matt_SF Yes macOS Monterey, Hise can't be compiled.

                      d.healeyD 1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @A Former User
                        last edited by

                        @Steve-Mohican Xcode 13.1 ?

                        Libre Wave - Freedom respecting instruments and effects
                        My Patreon - HISE tutorials
                        YouTube Channel - Public HISE tutorials

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @d.healey
                          last edited by

                          @d-healey Yes Xcode 13.1. I was able to build Hise till the last commits, I did 3 weeks ago.

                          Christoph HartC 1 Reply Last reply Reply Quote 0
                          • Christoph HartC
                            Christoph Hart @A Former User
                            last edited by

                            It's fixed now.

                            1 Reply Last reply Reply Quote 2
                            • NatanN
                              Natan
                              last edited by

                              @Christoph-Hart Legend, Can you hear The very low low frequencies here?

                              HiseSnippet 1577.3oc6Y0raabCDlqjocjyOnoMonG0gdvAH0vxIMo.8fksrUpQibDrbbSN4RuKkDi1kb6tT1Vosm5kbqmyo1Ggds2xKP.JPdJ5s7FjNy9i2csVKKoDGTDDEf.wgbH+lY9lghia5oL499JOhQocF3xIFWh1ZfT2sVWlPR1bchwUnMX9ZtW4PQqMvk46ysHFFEuGJvnzLjfOudk0X1LoIOQDgrqRXxuuvQnSj1r52Krsqyr36HbRs5aWcSSkrlxV0GvSQ5RDWlYOVG9VLbYEnDiY2vRnUdszLM2mXLyZJqAs5pNTFt9cE9h8s43fJjVvFEJttx1BQL9cRstBaqlw1sOgXPal3EJF5EtFsgvRbr7DuwmDLQ4DMR6OLJjEdEy.uJmF7xARFofzLgP5pzVldBWcxLHdtHcSIDbZy.2dZnDtVhwKn0TvBj5EcX8308fAGqvB2YoktYY3+tw21tuzTKTxxJ4VJM+AxEtw7+77kl+Wmu7Impc6bmCOFOksM2K2owHs2nTbAYem84d2r7AL697iWHX9Y8oyNd9TyPqN0BUxMkB8Cb4QiSHEUxIBPhbav2d3lqyzLLnDICVmK2SKP3XrN+.fgGFhJQWm62SqbAN9PwOf4nr5ayzYoSXNTzDf+HSLDCTRegdP5brSxwl4z8GKkaJPtV6XB2qRaJzlcyGuExAufW67FuQYrWltQ61bScBXmgV+QiL8blwiJcFUOxIUc9nTU37Qfbongkq+nJ4lj9LZRBgqG2k4w2Q0zlMXAeliqMea.u2r791JydsDOkObVjaHDVCWwBlcYRI21eZR1l8cTALx1p9ZgrSCl1SbDThcq9Nsfx5l7ZQnCjYT.yyBGuDNF4Ks3RqfAuA9DMYEbrQzjUhmLUJ5Vb8gJudAginuC1Rnuece2XQqZaqNrlxwUDwdgXPfrlJ6AtcURgIJJbEwHcUGUe3Phf62w72gIrQ59tbO+fMYN5RKB+Cn5aor.mCsNyDbhCZxzcwbFrVDPJ4dKZdL4LCtRyIvsH9JvPOB.GGzLCt.rXphOgbObDjwUHbW2zeWbVSlMYWL1h.kf6YnuI.eANlKSa6w+o87csE5aQNUDGLOAo.MYdv0vvUGXUuBSDjSzDgb7H.HMDxHTl7a.ZvNJqrm8ppszbWj4mtvRqd7CCgMJ8k+x+d2ey4kqfl1EnqwjVkqPFZuCJgK4AYCHXJjLLJ5soEFOs8prWExwHEEdQZcve0mKMGDb4P9ps7HUKNNDySPvNGceFRpOCNyj3uOwwLa3wDZSYNlqSehku6hOwVH6cnP+TOf0Ofjd6KMqtyyeCdDwUAgZBofxoyMQLAktNJ9ty5B6XFP3WQJqzheTb57FPEIK3HBT.2ORFdSgT7l4d2wa.AUi4MoiUY2pp+Q0U6qUNPUw.ylLZRLgLDXf8XXv75UFBLARQvLKM3tjg1YRJtyEnV8cbFbhn57T.mcWzou8IBkAEMgOmZ.rPl.3jj1lmECV2339O1hmiFtACsMjoolWZzSFJea4yi7shmHea4oIeS9w7s+GkuAjuTbmYocPtQlX5EApiGewNSHoYDoZEGsw93WjiwRNgw9mO+4+8vF6K57WWuZngD7z8g14I2OW82qNVG8O9Yq+pnfdKGkR2E9wgCe+L472zuDcatOWmaolbqtt7GqtdFUWOU6hrlR0ygE7CyeqeF8UBmD3OPY5fdTE7Co+7fwk+A1A7x2iCEvwWrVYDso5eF21T4N1so5AlZ332wiI8cU9YCHbGwNJIZiIBenOGq7sM9HjzxqoXd4N0qWoNXj4pSKltuWvqYhenRp2dWbpdva1VRjZ84752YNu5c1609Z712FlhiGbOi9GTJFisD3k4aHOfaCIIAX7Sgrh1r915XoYI4MTRU7SXSX.ayg2e2oCOa4f7LnU0ZlYuDIWq51baNKMa9KqdefEx7ZDTibp7ESdaOyMd8EzP3VFyLK+gQ6yJ9AT6yl.n79nQQuONCGlomZOyv9qgb4KDHAraYve8hRzF33xUHGDdKJE6ZDwApHtmoI5t+Jv+juNKOE5bqoPmaOE570SgN2YJz4tSgNeyH0AuLJ5UFXpHHn4FgOFxXCICXxgO83+.3jGfXL
                              

                              I added a Gain knob to mute the Upper band, and There is a small leak of Sub & Low frequencies there, and Yeah it is Audible and in meter it shows up.

                              Just play on low Notes

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

                                @Natan A linkwitz-riley filter is not a digital brick wall filter so of course you're getting a little bit of leakage. I think they are 12dB/octave so if the crossover is set at 80 Hz, you'll get -12dB for 40Hz and -24dB for 20Hz.

                                1 Reply Last reply Reply Quote 0
                                • ?
                                  A Former User @Christoph Hart
                                  last edited by A Former User

                                  @Christoph-Hart said in Tonal Balance:

                                  If anybody has ideas for more templates, let me know, they are pretty easy to add.

                                  Can you add a compressor template with the soft knee option please? Using envelope followers to make a compressor is very hard for those who don't know scriptnode & dsp well.

                                  I think a soft knee option was asked a couples of times. Lots of people would be glad to see this.

                                  ? 1 Reply Last reply Reply Quote 4
                                  • ?
                                    A Former User @A Former User
                                    last edited by A Former User

                                    @Steve-Mohican said in Tonal Balance:

                                    @Christoph-Hart said in Tonal Balance:

                                    If anybody has ideas for more templates, let me know, they are pretty easy to add.

                                    Can you add a compressor template with the soft knee option please? Using envelope followers to make a compressor is very hard for those who don't know scriptnode & dsp well.

                                    I think a soft knee option was asked a couples of times. Lots of people would be glad to see this.

                                    I totally agree that. Yes the current compressor enough for instruments but not enough for the general purpose audio fx compression since it's behavior is very harsh (it is a hard knee comp actually).

                                    Please add a scriptnode compressor node or template with a customizable knee value @Christoph-Hart.

                                    FortuneF 1 Reply Last reply Reply Quote 3
                                    • FortuneF
                                      Fortune @A Former User
                                      last edited by Fortune

                                      @Christoph-Hart There is a basic example of the soft knee compressor here: https://github.com/p-hlp/CTAGDRC

                                      This is beyond my skills but I am sure it won't take to adapt it to Hise scriptnode for you. Please add this, we really need that.

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

                                        @Fortune Well that's a GPL licensed code so you won't be able to use it in a proprietary project.

                                        FortuneF 1 Reply Last reply Reply Quote 0
                                        • FortuneF
                                          Fortune @Christoph Hart
                                          last edited by Fortune

                                          @Christoph-Hart said in Tonal Balance:

                                          @Fortune Well that's a GPL licensed code so you won't be able to use it in a proprietary project.

                                          The soft knee equation is not licensed to anyone, it is universal :) https://dsp.stackexchange.com/questions/73619/how-to-derive-equation-for-second-order-interpolation-of-soft-knee-cutoff-in-a-c

                                          I just gave this example to show how it can be done. You can modify or duplicate the juice compressor or simple compressor with the equation.

                                          The standard hard knee comp equation is this (I believe Hise Simple Compressor and jcompressor uses this):
                                          Screen Shot 2022-08-10 at 08.38.21.png

                                          But the soft knee equation is that:

                                          Screen Shot 2022-08-10 at 08.38.49.png

                                          Soft knee sounds musical and more natural, where hard knee sounds digital and pretty bad on most of the professional mix cases.

                                          alt text

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

                                            @Fortune If you're that deep into the subject, you should be able to transform this into C++ or SNEX code, it's basically just rewriting the formula so that the computer understands it.

                                            template <int NV> struct soft_knee_mod
                                            {
                                            	SNEX_NODE(soft_knee_mod);
                                            	
                                            	double W = 0.2;
                                            	double T = 0.5;
                                            	double R = 4.0;
                                            	double Xg = 1.0;
                                            	
                                            	/** If you define this method, it will create a mod dragger
                                            		that will send out the value you set the v parameter reference to.
                                            		
                                            		This function takes the parameters and applies the formula for the
                                            		soft-knee curve...
                                            	*/
                                            	bool handleModulation(double& v)
                                            	{
                                            		if(Xg == 0.0)
                                            		{
                                            			v = 1.0;
                                            			return true;
                                            		}
                                            
                                            		if(T == 1.0 && W == 0.0)
                                            		{
                                            			v = 1.0;
                                            			return true;
                                            		}
                                            
                                            		if(2.0 * (Xg - T) < (-1.0 * W))
                                            		{
                                            			v = Xg;
                                            		}
                                            		else if (2.0 * Math.abs(Xg - T) <= W)
                                            		{
                                            			const double v1 = (1.0 / R - 1.0);
                                            			const double v2 = (Xg - T + W * 0.5);
                                            
                                            			v = Xg + v1 * v2 * v2 / (2.0 * W);
                                            		}
                                            		else
                                            		{
                                            			v = T + (Xg - T) / R;
                                            		}
                                            		
                                            		v = Math.range(v / Xg, 0.0, 1.0);
                                            	
                                            		return true;
                                            	}
                                            	
                                            	/** You need to add 4 Parameters:
                                            	
                                            		- Input
                                            		- Threshhold
                                            		- Ratio
                                            		- Knee Width
                                            		
                                            		Then connect the Input knob to the mod output
                                            		of the envelope follower and connect the mod output
                                            		of this node to the gain or mul node that attenuates
                                            		the signal.
                                            	*/
                                            	template <int P> void setParameter(double v)
                                            	{
                                            		if(P == 0) // Input value
                                            			Xg = v;
                                            		if(P == 1) // Threshhold
                                            			T = Math.range(v, 0.0, 1.0);
                                            		if(P == 2) // Ratio
                                            			R = Math.range(v, 1.0, 32.0);
                                            		if(P == 3) // Knee Width
                                            			W = Math.range(v, 0.0, 1.0);
                                            	}
                                            	
                                            	void handleHiseEvent(HiseEvent& e){}
                                            	void setExternalData(const ExternalData& d, int index){}
                                            	void prepare(PrepareSpecs ps){}
                                            	void reset(){}
                                            	template <typename ProcessDataType> void process(ProcessDataType& data){}
                                            	template <int C> void processFrame(span<float, C>& data){}	
                                            };
                                            

                                            At the moment it's not possible to share snippets with SNEX nodes, so you have to paste this in manually.

                                            1 Reply Last reply Reply Quote 5
                                            • First post
                                              Last post

                                            16

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.4k

                                            Posts