HISE Logo Forum
    • Categories
    • Register
    • Login

    EQ curve from object.

    Scheduled Pinned Locked Moved Scripting
    23 Posts 6 Posters 1.2k 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.
    • orangeO
      orange @d.healey
      last edited by orange

      @d-healey said in EQ curve from object.:

      @orange I thought about that but what I'd like to do is perform an analysis outside of HISE and import the curve from a file.

      So make a plugin or standalone app with the draggable filter that is connected to the Parametric Eq for analyzing purposes. Put a button on the GUI that exports the state of the eq using exportState so you'll be saving the eq curves to files. Analyze outside of Hise and create curve files. Then import these files to your real project with restoreState.

      Since each eq plugin's filter coefficients are different, your curve analysis and final curve settings should be done with the same eq. Otherwise, the resulting sound won't match the analysis.

      develop Branch / XCode 13.1
      macOS Monterey / M1 Max

      Christoph HartC d.healeyD 2 Replies Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart @orange
        last edited by

        restoreFromState is definitely not something you want to call in an onNoteOn callback.

        1 Reply Last reply Reply Quote 0
        • d.healeyD
          d.healey @orange
          last edited by d.healey

          @orange It's not possible to perform the analysis I'm doing using HISE. I'm trying to recreate Kontakt's AET filter.

          @Christoph-Hart Is there a way to add nodes to the eq programmatically?

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

          Christoph HartC 1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart @d.healey
            last edited by

            @d-healey Why don't you use scriptnode for it?

            d.healeyD 1 Reply Last reply Reply Quote 0
            • d.healeyD
              d.healey @Christoph Hart
              last edited by

              @Christoph-Hart Because I'm a noob :) can I load in curves from external analysis into a scriptnode filter?

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

              Christoph HartC 1 Reply Last reply Reply Quote 1
              • Christoph HartC
                Christoph Hart @d.healey
                last edited by

                @d-healey Sure, it's called scriptnode for a reason. You can grab references to every node and set the parameter programatically.

                d.healeyD 1 Reply Last reply Reply Quote 2
                • d.healeyD
                  d.healey @Christoph Hart
                  last edited by

                  @Christoph-Hart I have some learning to do :)

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

                  Dan KorneffD 1 Reply Last reply Reply Quote 0
                  • Dan KorneffD
                    Dan Korneff @d.healey
                    last edited by

                    @d-healey Can't wait for the Patreon video ๐Ÿ™ƒ

                    Dan Korneff - Producer / Mixer / Audio Nerd

                    Christoph HartC 1 Reply Last reply Reply Quote 3
                    • Christoph HartC
                      Christoph Hart @Dan Korneff
                      last edited by

                      @Dan-Korneff Everybody is waiting for this video and I really don't know why it takes so long for this guy to learn scriptnode :)

                      1 Reply Last reply Reply Quote 7
                      • d.healeyD
                        d.healey
                        last edited by

                        I can't see a node that is like the EQ, are you suggesting I add individual filters for every band? Is this more/less efficient than the using the stock EQ?

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

                        Dan KorneffD 1 Reply Last reply Reply Quote 0
                        • Dan KorneffD
                          Dan Korneff @d.healey
                          last edited by

                          @d-healey I believe it's only 1 band per node.

                          Dan Korneff - Producer / Mixer / Audio Nerd

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @Dan Korneff
                            last edited by d.healey

                            @Dan-Korneff And if I wanted to add 30 or so bands, any idea how the efficiency would compare to the EQ effect? And how would it compare to just adding 30 filter effects?

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

                            Matt_SFM 1 Reply Last reply Reply Quote 0
                            • Matt_SFM
                              Matt_SF @d.healey
                              last edited by

                              @d-healey I can be wrong but : Talking only about using 30 1-band EQ nodes, I would guess that once your ScriptFX is compiled into a HardcodedFX, there won't be much of a difference than using an EQ module with 30 bands.

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

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

                                Yes itโ€˜s pretty much the same.

                                1 Reply Last reply Reply Quote 1
                                • d.healeyD
                                  d.healey
                                  last edited by

                                  Excellent. Is the clone control node thing working properly?

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

                                  Christoph HartC 1 Reply Last reply Reply Quote 0
                                  • Christoph HartC
                                    Christoph Hart @d.healey
                                    last edited by

                                    @d-healey A simple test for your use case works, but the entire concept is a little unstable (it's basically the child panels of scriptnode) so I'm not sure I would recommend it at this point.

                                    HiseSnippet 1557.3oc6a0saaaCElJNxoNscHEqO.Fn2jh1Y3eRiSvtXNwIt0qKIdUtoc6lLVI5XNKQpJQ6D2gc01E8tALz89zGfVfAzmf8FrAr61EcGJIaIG63lnkM3EHGf.cN7PxOd346ix.zMb35DWWtCRISy91Djx0T05yDsq1FSYn5agT9H0cvtBhSVeWa12F65RLPJJotuzgRl4Qde98OaSrIloSBcgP6yo5jufZQEgdaT4gTSyZXCRSpUjnWoRccNqJ2j2EvSJ07HardG7gjcwxvlSEojdaCpf6nIvBhKDylbi9Zs4Gw7ieepK8YlDoQAjFLP9tQUaSMMZLXs5hPJy2HbkmxekeS0cnFzg9Cy.K40P1vdDMGnL2zfTgyAjTh.o48gzMT0zcn1hvVj34pp0YvFRKLjpiBE+XQJuVsJGBfIxYg6Pp4.FC6vxqlO+cyB+61eZqtLcAkyxxY6xEj8XKe6E+tEyr32uX1S1TqVSrM4z3vMMINSrY4tqyz53xrtVOi3b2r8vlcICCDV9ilSSe1xo59q5HAxY0YTwd1j.6ZbSCYtR9736.nfzF7ziquEVfkaJA9f3rINBpDNJaQ5AU09aQYT2h31Qvsg55w1+fJGtQWSrXzxIIuInAHeLxdnbih4RE8ixqNYM17md9Hej7wGX0dFg6MTaPE5smLdmaB3ExZ+ai2.F60U2tUKhtHDryqV6oSkddg.kIQUWLfpByuDHWKvLasmVXhjzWpFRHrcH1XGRSdCSb+kcwV1ljGA38tYelIWuiF8EjwYQ19PXSYDKq2FyXDS23P1ReAIfgdDuqfxNbGrvgdLRQc2tVZfTtNoZ.5.eJyI4Y914k1x5EMByvy38vmfFKHsUBZrvfFiPQ2kHNh6zwa6H3YXs3m6c8RxGz53BnMLM4GUkaYSCpdg8.OeM3l8sayYTcoK+HFfzMr3cgII.tO.61DSMkk66Sbb8FjETymC9CJ02ka.IG0ZXcHI1uAVzVxYjZQPQIwIm9vhyQvUzZB4PL3XO+LB.GK4xz6PuTQDe7q8jV.iaN+Qst69xV0wln8k6sRfhjioL7TA3yOTcSNibf7XUzH.9ld.FpRxEIhyADmOJDQgZEMwNGRDtABoLht+VfWRqNLvWQ0sWqCHOG0.6.GxCGRI8dU0ZNjm2kvz66MO.c33A5wZlTChSC.etiZJSGLCxwCJU1Fp1M.RrWGUxqVpXtMrd7Qq0rfAYkpq8skr2qXuGr558vFOtr1SbeT+8Vu55MuS45a2espnPDImm4FZA0X6PYA44PI5cvGeBe4qnIH1Rtaz3z5PNxOyG0q+o5.eopL66hFa3QSe9gT9XyOLWiM+.a5Tm+ET8Gfwm6HUPWORETgY4RnzdGxdgV87j897xq+B5lOYsp4xkis2Wa9U0tSiCe98WUZmKGXatdOilkJmT8LV0yB9A4UZfNcsRulO6EMxioBVzflmzJRdG7DGoyTCkNuxDJ70km5g9.h8m1BHS5W8pW89KV8ckHfbHUXD7sjZKpoLijKn03dzyIIS07G1vGmNIBFuQoEoiTVtv3kkqTYrxxW9tJmoxxJ+f0aCnEgmjL5PU4mprQWA2BdoGuWjcZbjJkJ8tSxQe8adysNafAcq+3W8.SJ0uLDD+xaeX2e9O+qQ3lSHIT70iyMKV47wMCzBGi0elW++yzH9lOdq2ErYnYw4h1v6HNBXp7au3GiiF0RmSMxzxudyXRTKU4BZoOsoNi51LL7VzFSSbVRwhvl+nnRNElU0bxDn4THQzIQzIQz4RknSwYcQmhIhNIhNIhNWpDcJMqK5TJQzIQzIQz4RknyJy5hNqjH5jH5jH5boRz4dy5hN2KQzIQzIQz4Rknypy5hNqlH5jH5jH5boRzo7rtnS4DQmDQmDQm+WJ5D2qZkpxUj49KpqYU13jTPmy8iqqpYaREZzCYgZagSvnIlM47NVXuqHa7tP6+Wbgdsv5N7CBt5fd25JOO.0m48q9Hi5NR6rEP8B11j27VjE0fdftt7Fe+IEPnI2mhwnOkhQeVIF84dwnOqFi9TNF8Yso1G4OFl.cP4MwDbzXa+iqTFvXk2ht+1nh0wh
                                    
                                    d.healeyD 1 Reply Last reply Reply Quote 1
                                    • ?
                                      A Former User
                                      last edited by

                                      Could this be a use-case for Faust when it's ready?

                                      Christoph HartC 1 Reply Last reply Reply Quote 1
                                      • d.healeyD
                                        d.healey @Christoph Hart
                                        last edited by

                                        @Christoph-Hart Thank you, I'll play around with it.

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

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

                                          @iamlamprey said in EQ curve from object.:

                                          Could this be a use-case for Faust when it's ready?

                                          No, not really, Faust is not really suited for spectral processing, it shines in circuit simulation and physical modeling.

                                          Actually I also think that using 30+ bands of peak EQs is not the 100% right way to simulate AET as this amount of filters will smear the phase and is not super efficient (especially if it's per voice). The proper solution would be writing a FFT filter that applies interpolated gain reduction for each FFT bin based on the analysis of the loudest and softest sample:

                                          1. Create a samplemap with two layers (ff and pp)
                                          2. For each note / sample, do an FFT, and compare the gain factor for each bin (should be <1.0 so it only works subtractive)
                                          3. Write that gain factor array into a data file. You can just use audio files to store that, then you can load the data as SFZ into the realtime processor.
                                          4. Ditch the pp layer.
                                          5. Write a FFT processor that applies the gain factor on each bin (the FFT size of the analysis and of the realtime processor must be the same, so you need to find a compromise between latency and frequency resolution).

                                          Everything from 1-4 can be done inside HISE, but for 5. you need to write (or commission) a custom C++ module, but I would say that's rather beginner level spectral processing. Then you need to tweak the parameters to match your use case (FFT window, FFT size, smoothing between bins, etc).

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

                                          39

                                          Online

                                          1.8k

                                          Users

                                          12.0k

                                          Topics

                                          104.4k

                                          Posts