HISE Logo Forum
    • Categories
    • Register
    • Login

    Scriptnode pitch-shift a signal

    Scheduled Pinned Locked Moved General Questions
    50 Posts 11 Posters 8.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.
    • LindonL
      Lindon @Christoph Hart
      last edited by

      @Christoph-Hart well the stftPitchShift looks pretty good - and quick and has a MIT license...

      HISE Development for hire.
      www.channelrobot.com

      P 1 Reply Last reply Reply Quote 0
      • P
        ps @Lindon
        last edited by

        @Lindon @Christoph-Hart
        stftPitchShift is def the best out there I could find - it can do polyphonic and also formant shift.
        2048samples latency is normal for pitch shifting audio (it's also normal that low signals sound bad when pitch shifted in those kind of plugins)
        I'd love to see that implemented as well :)

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

          @ps I played around with it yesterday but it always sounded very cheap. I‘m definitely doing something wrong maybe I‘ll try their JUCE example and go from there.

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

            @d-healey said in Scriptnode pitch-shift a signal:

            @Christoph-Hart Does this mean we can have a pitch LFO in effects plugins now?

            A pitch lfo can be made with a simple delay buffer that modulates the delay time (a basic chorus), a pitchshifter would be overkill.

            1 Reply Last reply Reply Quote 1
            • P
              ps @Christoph Hart
              last edited by

              @Christoph-Hart did you align the pitch shift with the timbre shift and set a timbre frequency to around 2.5 - 3ms?

              if the formants are not shifted together with the signal it will sound strange :)

              1 Reply Last reply Reply Quote 0
              • P
                ps @Christoph Hart
                last edited by

                @Christoph-Hart can you point me in the direction how you included the library? i fail drastically somehow.

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

                  @ps I added a third party node, included all files in there and then fought an epic battle until all compile errors went away.

                  You need to use a replacement for std::span (I ended up with tcb::span) as this is a C++20 feature.

                  However I'm really not convinced about the quality here - the CPU usage is 2-3 times as high as signalsmith and the sound is super bad. The latency is a bit better, but that's really the only thing that this library has going for them.

                  Also the coding style is super counterintuitive - I literally had to copy the entire plugin code into the node and write a wrapper because I couldn't figure out how it expects the different buffer sizes to work.

                  P 1 Reply Last reply Reply Quote 0
                  • P
                    ps @Christoph Hart
                    last edited by ps

                    @Christoph-Hart can you share the node template with me? I'm doing something wrong - I get 2000% cpu even though I'm pretty confident I do the processing in buffers haha

                    btw in general It would be interesting to see how you write a wrapper around a juce plugin code and integrate it as node :)

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

                      @ps Are you using the debug build? If you don't build the release configuration it also maxes out my CPU here with a single instance.

                      btw in general It would be interesting to see how you write a wrapper around a juce plugin code and integrate it as node :)

                      Sure, here you go:

                      ThirdParty.zip

                      This is definitely not anything I'm proud of - I just want to get this thing to work so the coding style is all over the place. If this would make it into HISE it would require a almost 100% rewrite including swapping out whatever weird thing they are using for the FFT with the proper libraries (IPP / vDSP) etc, but I'm rather sceptical at the moment that it's worth the hassle.

                      You might have to set the USE_JUCE_PROCESSOR preprocessor to true and manually add a few JUCE modules to the DLL Projucer project (I think audio_processor & hi_streaming are missing).

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

                        @Christoph-Hart haha thank you - I will have a completely non-judgmental look :)

                        1 Reply Last reply Reply Quote 0
                        • P
                          ps @Christoph Hart
                          last edited by

                          @Christoph-Hart one last thing - what is the magic trick to make it find the files referencing each other?

                          '../stftPitchShift-main/cpp\StftPitchShift/RFFT.h' file not found

                          #include "../stftPitchShift-main/cpp\StftPitchShift/RFFT.h"

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

                            @ps There's a backslash in the path (after cpp. Try if changint this to a normal path helps, otherwise just make sure that the relative paths from wherever you call that works.

                            P 1 Reply Last reply Reply Quote 0
                            • P
                              ps @Christoph Hart
                              last edited by

                              @Christoph-Hart ok i managed to compile it - and if this is what you have heard I understand now why you are not impressed. I downloaded the vst and tested it and it sounds pretty different and has also a completely different performance. I'll do some digging.

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

                                @ps any news on implementing this library? I'm failing with all the includes and when I finally get them working I'm hitting the C++20 incompatibility issue.
                                So I started modifying it to use C++17 but here I'm definitely failing. And it seems to many things to modify anyway, doesn't smell good...
                                So if someone has a more straight solution I'd take it!

                                Also, I'm into the signalsmith stretch, but I can't figure how to make that formants compensation to work... Is anybody having an idea?

                                Hise made me an F5 dude, browser just suffers...

                                P 1 Reply Last reply Reply Quote 0
                                • P
                                  ps @ustk
                                  last edited by

                                  @ustk I’m afraid I can‘t help here anymore - at some point I ended up writing a completely own JUCE wrapper inspired by Christophs work because I needed JUCE 8 especially for the graphics but also neural stuff - so i‘m working with c++ 20 and juce 8 for a bit now. But in general it is always possible to undefine something only in the c++ node and also you can look at what is throwing the error and look at breaking changes between the c++ standards and/or JUCE versions and revert the methods back.

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

                                  20

                                  Online

                                  2.0k

                                  Users

                                  12.8k

                                  Topics

                                  110.7k

                                  Posts