HISE Logo Forum
    • Categories
    • Register
    • Login

    Connecting Rubberband Library for use in HISE

    Scheduled Pinned Locked Moved C++ Development
    28 Posts 6 Posters 2.0k 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.
    • langermarc19L
      langermarc19
      last edited by

      Hi everyone. I've been trying to get the rubberband time stretching library working within a HISE project to create a custom Scriptnode node which involves some time stretching.

      I created a new node template using "Create C++ third party node template",
      cloned the rubberband library (github link) into ProjectFolder/DspNetworks/ThirdParty/src. Then I built the rubberband libraries using meson, as instructed in the README included in the rubberband repository.

      However when I try to either 1) Build the new node inside XCode (after exporting from the AutoGeneratedProjucerFile)
      or
      2) choose to "Compile DSP networks as dll" I get a bunch of "undefined symbol" linker errors from such as

       Undefined symbols for architecture x86_64
      > Symbol: RubberBand::RubberBandStretcher::setTimeRatio(double)
      
      

      I know that typically this happens when a function in a .cpp file isn't scoped correctly, but both the node file and the rubberband functionality are all header-only and so I don't think that's the problem here.

      Any help appreciated! Spent a lot of time trying to solve this already.

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

        @langermarc19 did you link the compiled rubberband libraries?

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

          Just looked at their repo and it seems that they have a single .cpp file that you can add. Just include that in your node file and you should be good (you might have to adapt some Rubberband compiler flags to enable a single translation unit build).

          P langermarc19L 2 Replies Last reply Reply Quote 0
          • P
            parabuh @Christoph Hart
            last edited by

            @Christoph-Hart maybe you are able to do some guide how to use 3rd party libs from scratch in hise? I was able to import some free libs but then I don't know how to use them in hise.

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

              @parabuh The C++ template is somewhat of a guide as it gives you all methods you need to implement, the rest (how to actually call your library methods) is specific to every library.

              Using it in HISE is as simple as exporting the DLL then it will show up as node (or item in the Hardcoded FX modules) the next time you start HISE.

              1 Reply Last reply Reply Quote 1
              • langermarc19L
                langermarc19 @Christoph Hart
                last edited by langermarc19

                @Christoph-Hart I attempted to do this by adding a path to the compiled rubberband.dylib in the "external libraries to link" section of the auto generated projucer file, and my node contains a #include to the header where the API methods are declared. Let's see what happens when I include the .cpp....

                1 Reply Last reply Reply Quote 0
                • langermarc19L
                  langermarc19 @Christoph Hart
                  last edited by

                  @Christoph-Hart this resulted in an error:

                  Reference to 'Point' is ambiguous
                  

                  seemingly because there is a juce::Point class and also a macOS defined Point class. I'm going to dig deeper into what's actually happening when I'm building/linking these libraries. This is at the edge of my C++ experience.

                  Christoph HartC DanHD 2 Replies Last reply Reply Quote 0
                  • Christoph HartC
                    Christoph Hart @langermarc19
                    last edited by

                    @langermarc19 You might need to swap the order of includes so that the rubber band library is included before the JuceHeader.h file

                    https://forum.juce.com/t/reference-to-point-is-ambiguous/24884/8

                    langermarc19L 1 Reply Last reply Reply Quote 0
                    • langermarc19L
                      langermarc19 @Christoph Hart
                      last edited by

                      This post is deleted!
                      1 Reply Last reply Reply Quote 0
                      • DanHD
                        DanH @langermarc19
                        last edited by

                        @langermarc19 Did you ever manage to get this working?

                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                        https://dhplugins.com/ | https://dcbreaks.com/
                        London, UK

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

                          @DanH I got it slightly working but not really a while ago. However since Christoph implemented pitch/time stretching recently I haven't looked into it any further.

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

                          DanHD 1 Reply Last reply Reply Quote 0
                          • DanHD
                            DanH @d.healey
                            last edited by

                            @d-healey is there pitch shifting? I'm not after time stretching for this product. I've used the Faust one but it's not quite good enough. It's for Scriptnode.

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

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

                              @DanH https://docs.hise.audio/hise-modules/sound-generators/list/streamingsampler.html#timestretching

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

                              DanHD 1 Reply Last reply Reply Quote 0
                              • DanHD
                                DanH @d.healey
                                last edited by DanH

                                @d-healey Yep not what I'm after for this but thanks (unless it can be repurposed for SN?)

                                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                https://dhplugins.com/ | https://dcbreaks.com/
                                London, UK

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

                                  @DanH

                                  (unless it can be repurposed for SN?)

                                  79db75a7-388c-4019-ba2f-05cd3e4741b7-image.png

                                  I think this applies to scriptnode too

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

                                  LindonL 1 Reply Last reply Reply Quote 0
                                  • LindonL
                                    Lindon @d.healey
                                    last edited by Lindon

                                    @d-healey so to be as clear as we can:

                                    With time stretching on...

                                    • I have a little tune in C Major, it lasts a bar, I pitch it up to E, and it still lasts a bar...?

                                    HISE Development for hire.
                                    www.channelrobot.com

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

                                      @Lindon That's the idea

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

                                      DanHD 1 Reply Last reply Reply Quote 0
                                      • DanHD
                                        DanH @d.healey
                                        last edited by

                                        @d-healey so where are the pitch options? Can only see the timestretching options in the sampler voice settings

                                        Screenshot 2023-11-09 at 15.22.34.png

                                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                        https://dhplugins.com/ | https://dcbreaks.com/
                                        London, UK

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

                                          @DanH just enable timestretching and add a pitch modulator.

                                          DanHD 1 Reply Last reply Reply Quote 0
                                          • DanHD
                                            DanH @Christoph Hart
                                            last edited by DanH

                                            @Christoph-Hart Ok so this is like a breaking change if we want to add in time stretching to an existing project which also uses pitch modulations?

                                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                            https://dhplugins.com/ | https://dcbreaks.com/
                                            London, UK

                                            Christoph HartC 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            17

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            103.1k

                                            Posts