HISE Logo Forum
    • Categories
    • Register
    • Login

    Scriptnode pitch-shift a signal

    Scheduled Pinned Locked Moved General Questions
    48 Posts 11 Posters 3.4k 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.
    • Christoph HartC
      Christoph Hart @ps
      last edited by

      D'oooh, I didn't even think about trying out the signal smith algorithm...

      The implementation was dead easy and the sound is way way WAY better than the naive pitch shifting from Faust or scriptnode (kind of obvious, that was the entire point of the JUCE talk of the signalsmith developer). However there is a latency of 4096 samples which is kind of huge - you can set the FFT to 2048, but then it will sound very bad on lower notes.

      A LindonL 2 Replies Last reply Reply Quote 4
      • A
        aaronventure @Christoph Hart
        last edited by

        @Christoph-Hart will this be replacing or augmenting the timestretch for the sampler as well?

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

          @aaronventure No I just took the timestretching algorithm that's already in the sampler and made it a realtime effect that works on any audio signal.

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

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

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

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

                                      45

                                      Online

                                      1.7k

                                      Users

                                      11.7k

                                      Topics

                                      101.8k

                                      Posts