HISE Logo Forum
    • Categories
    • Register
    • Login

    fix channel resizing in HISE broke my routing

    Scheduled Pinned Locked Moved Solved Bug Reports
    20 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.
    • d.healeyD
      d.healey @DanH
      last edited by

      @DanH The words, "this commit" is a link

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

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

        @d-healey annoyingly links don't show up easily in dark mode I don't think. I'll check my proj in a sec as also using sends...

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

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

          @d-healey all seems ok here. What has broken in yours specifically?

          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'll make an example project shortly. Are you using a send container and send effects?

            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 Yes, just one send effect into one send container. Plus I'm using 6 channels elsewhere.

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

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

                @Christoph-Hart @DanH I managed to recreate it in a minimal snippet

                Notice on the master out there is nothing coming through on channels 1/2 (but there should be). If you bypass or remove the second container then it works. In commits prior to the one I linked to above it works with that container present and unbypassed.

                HiseSnippet 1158.3oc6Y0raaaDDdokXpkSpaSQPQNxC8fCPZfjcZR.5AIaI4.g5eDDch6sf0jirVXxcYIWpTkh9fja80n2x0dquC8Tt42f1YIorHkoDjUkchMrNX3clc39syOeyPv19BKHHP3SzJcv.OfncOcyAbYu58nLNoUCh1WqG.b6NhPIie7VgGS1ZfGMH.rIZZEdoZWZkJRh9cZ0snNTtELRDg7ZAyB1g4xjij1t1Owbb1lZCGvbSs6mVqkkfWW3HBQDUPuLwiZcB8XXOpZaKoSztSSalT3aJoRHfnUbKg8.ydh2xi2+qYArib.0hJDS7AEKdagisBwJoj58XN1sGdyCHDsun8H+PgX+vCz2kYyNSdZ+gRgwHKR6OzVJK7JjAdURCuxofWNPRKEjJFCo6qaZ4y7jiznvyc0awkfeWJ51SCk38Rz9fdcAtAt7ItzSfs8wEmYvZOqb4Gaf+4Q+X2PtkjI3FB9dBIrOesGsxusRoU98ULFWU2t4pScL9BGGvOW0pHs+zLbMdn6Qf+iM5ScBgy1Hd8y5S0mrOMcH2J9VmZiBdKNStuGvmTh.IwUg+2qZ0fJop.QhLbedfujoffVCnOlUGGVJo2.BNQJ7v75yEyvrEgcnCUlMERU2jn.8AYhapfCOfIGjttZgkWMqP795sYRqd4iwkxAinm5x.iIUieodytcAK4H.VTe6e9xozK8wu7DHEuWTQEtB7qrHHD8lYBQsBWFDf5e1Q.daszMgZoLswtS74urtINPAdhpid0nEFwHZZkRO7CHd4bvAa+D.oJcH0TOgVba3WyDkKLyWgJW3NwSHLGcU9zjJlLe1tToOC8C56E5ZhbFVPhWS02TaIUGt30kUqUfPg4nE+K9KQYE0ZsDkUFpLcpzpw9g6pahTfQbiQtfuMZswgz9fwKAjbT4glVT8uW7Dj6aIwi+.eJOvSDj4AaBtrCDbkmdjvWEfCEA+RGUHKs75BpetpNs513kLWaLoxP+nX+lthPtLSI8TItqLmD2Euk39+IqTogXzj454.M48AGbRuHL9M3nccogNxgRylKuqfK75I3LqzA5N.VCd7wfeZrm6EZSoDe8lQRdPsNfCPSmz9c01AS1n9neBlSewBhd6g5wv0PU.Zb8sgaga1CudUzH3JtYyLLD95WKFBe+9feeF71a4zucX7apbCmut8qhlK9rR0zyJOuuD8oUyq98zp4W+hceuP0ue1MKVwYKhOc3c0UCekB2EPu9ENd+T+h1IiztZxHsc.ruyQIA2XQFwxxV10QHbMYuaXkye792+wpMntdHkQhnZarw+T8PPtCZsyns8WUa3OXLYer5gLa70BSI.ekI3cPpIYQo+4h6E0GmdqTtzaEGidSQZMQ5sgJqLlx0GRTpTt9XJ2PstPhxMlzPSyF5tXjuWePGYZnS6bnykZ4KdiU72IPksubjDLSfG8ggJouqZsQERz2N.sSu7SJSbQJ12XYop69drlMeaVeNrYi4vlmNG17CygMOaNr44ygMuXp1n5tsYnT3FyIiBZ2L5Cpno0jSw54HFGx+AxUL64
                

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

                orangeO DanHD 2 Replies Last reply Reply Quote 0
                • orangeO
                  orange @d.healey
                  last edited by

                  @d-healey

                  It works here. Are you using a Faust-enabled Hise version?

                  sounddd.gif

                  develop Branch / XCode 13.1
                  macOS Monterey / M1 Max

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

                    @orange I'm not using a faust version. Which commit are you using?

                    Peek 2023-01-05 13-45.gif

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

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

                      @d-healey said in fix channel resizing in HISE broke my routing:

                      @orange I'm not using a faust version. Which commit are you using?

                      I built Hise 3 days ago, but I am not sure if after this commit or not.

                      I asked Faust because all of my old projects are crashing when Faust is enabled. But they work without Faust without any issues. I can't open my projects!

                      develop Branch / XCode 13.1
                      macOS Monterey / M1 Max

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

                        @orange Please test with the commit I linked to if you have time (813c0a7ddd15242aecc0e85466522b8c8d7ae2be)

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

                        orangeO 2 Replies Last reply Reply Quote 0
                        • orangeO
                          orange @d.healey
                          last edited by

                          @d-healey Ok I'll test with that commit.

                          develop Branch / XCode 13.1
                          macOS Monterey / M1 Max

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

                            @d-healey Does the same as you described here :(

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

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

                              @d-healey Like yours here.

                              NoSound.gif

                              develop Branch / XCode 13.1
                              macOS Monterey / M1 Max

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

                                Thanks for confirming. I just tested further and the send effects have nothing to do with it. I've simplified the snippet

                                HiseSnippet 934.3oc6X80aSbDDe2XuU3.EUpPU8w6AdHHQQ1I7mJ0GHIN1HKHIV4BTdCsr2X6U4tcut2dlZUw2M9HvGE9F.ydmS7Z3havD5ehheHJyL6byucl423wWeiV.YYZCg13vIo.gdMV3DkcT6QbohzaGB8GXYfJ5.ctUpFtc9Px1SR4YYPDgRq8X2onMpSJ979GsMOlqDvLUDxy0RA7TYhzNSa+MehLNtKOBNTl3c56sYOgV0VGqyQDUi0jjxEGwGB6wcGaEFg9cchjVsIzxsPFgVeaczjvQ5WqJO+ykYxWECNgVjP7AUptqNNxgXmVR6Qx3n9GeyyH3Cs+r7Psx7vMY6Jijmn2Oe3LDLyC+7Ack4gWs4fWKe30zCdU.IpGjpWBoavBEFYpclEGdtJqmxBlAbLs6CkxyRnuk0ViGPYuaB+HnqAENwg0dPyl2I.+ys+sA4JgUpUAZ0dZKruZsau5esZiUeypAepoACpzlKLFcbLXpzrqRaVjiqoxSdEXtSvXdbNbxAwq+74T1omS8K4hxas2A0pdJoc+TPcZMBjooJ7+dVuc3VtqPLUGdtTvXkNHP2AFic0kkkFrcfrir5Tru9ypYX2hNJOlamuExwalZ.yAyU2bEGUlzNwmWct0WcVg3MX8kVwnpw3JUfQLS8s.iSYieOqyfAfvNCf0Ycew2Fpme3uxoLT7ZEjJTBLsNOFHldlGHRqsH1vYZ.39iAyXI75+lghr+yMT7R90EM900KC+UYgHUpfiUD7epPN324igfGCHIyk7VDQ6cm+Ds8EVL7GZ3prTc1bO3PHQdnV4xByT9rL7KWg+3.W0zWeaM2Too2+nt3krReB41bSQawVI5bkct1fZKZCnVK4FP0ujr+UtjViiwXnLIMF5nFCw3FCEX7GwUDFvyisGqc9d4c0Jc5HsRJ7KzG.Vib3Pv3i8JuPaYs3ZxyzbyMO.hAteS6s17oXyF2f4IXIyEs9hWXsx50OyJgafi.F7+2gz0tXOjd5O3aWN1D9m3x.6kmDhyFE.FckBhcqdPWwMeqTtoStb3nJpP3C3moFa4joSM15Xi+iDiurk4V+e2k4Ne90rWNK+xE2tnLSnQkwn9WULlZbceOW+SLtgumabB5R3Bi9khxWXgiqckBMXFSU7FpZv10IGzhT7RLP+XMuaSRBxwdoP3JN+BRYq1m0WBe1XI74dKgO2eI74AKgOObI74WWnOtwaaka0IkjUTQ+NEuYGJsihi88EbDxGAq8fmJB
                                

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

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

                                  @Christoph-Hart Bump bump, this is a pretty big bug for anyone using more than one stereo out and more than one container.

                                  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 Dan Korneff

                                    @d-healey

                                    the source code changed from:
                                    #if FORCE_INPUT_CHANNELS
                                    internalBuffer.makeCopyOf(buffer);
                                    #endif
                                    to:
                                    #if FORCE_INPUT_CHANNELS
                                    if(internalBuffer.getNumChannels() == buffer.getNumChannels())
                                    internalBuffer.makeCopyOf(buffer);
                                    #endif
                                    Now when I add a 2nd container to the project, I don't get any sound from the output of HISE. I have to disable the 2nd container for it to work again. Do you know why?

                                    The code you provided has been modified to check the number of channels in the internalBuffer and in the input buffer before making a copy. 
                                    It compares the number of channels in the internalBuffer and the input buffer and only makes a copy if the number of channels are the same.
                                    
                                    It seems that the issue you are experiencing is caused by the 2nd container having a different number of channels than the internalBuffer. In this case, the script doesn't make a copy of the buffer and the audio engine processes the buffer with the incorrect number of channels. The audio engine then doesn't produce any sound or produce sound that is not expected.
                                    
                                    You can fix this by checking the number of channels of the input buffer and the internalBuffer before making a copy. If the number of channels are not the same, you can use buffer.setSize() to change the number of channels to match the internalBuffer before making a copy.
                                    

                                    can you show me how to adjust this code to check the number of channels of the input buffer and the internalBuffer before making a copy?

                                    You can check the number of channels of the input buffer and the internalBuffer before making a copy using an if statement like this:
                                    
                                    if (FORCE_INPUT_CHANNELS)
                                    {
                                        if (buffer.getNumChannels() == internalBuffer.getNumChannels())
                                            internalBuffer.makeCopyOf(buffer);
                                    }
                                    
                                    This way, if the number of channels in the input buffer and the internalBuffer match, the internalBuffer will make a copy of the input buffer. If the number of channels don't match, the internalBuffer will not make a copy, avoiding the problem you're facing.
                                    Please also note that, if you are sure about the number of channels of your audio file, you can always set the number of channels for the internalBuffer before making a copy of the input buffer, like this :
                                    
                                    if (FORCE_INPUT_CHANNELS)
                                    {
                                        internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples());
                                        internalBuffer.makeCopyOf(buffer);
                                    }
                                    

                                    In my current setup, I have 4 channels on my hise project. after updating the code to your suggestion, I'm seeing signal on the output of bus 3 even when nothing is playing

                                    It seems like the problem might be that you are not handling the case where buffer.getNumChannels() is different than internalBuffer.getNumChannels(). In that case, the internalBuffer should be resized to match the number of channels of the input buffer, otherwise the makeCopyOf() function will copy the data into the wrong places.
                                    
                                    You can try this modification:
                                    
                                    if (FORCE_INPUT_CHANNELS)
                                    {
                                        if (buffer.getNumChannels() != internalBuffer.getNumChannels())
                                            internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples());
                                        internalBuffer.makeCopyOf(buffer);
                                    }
                                    
                                    This will check if the number of channels of buffer and internalBuffer match before making a copy, and if they don't match, it will resize internalBuffer to the number of channels of buffer before making the copy.
                                    
                                    This way the code should handle the case when the number of channels of buffer and internalBuffer don't match, and match the number of channels of input buffer before making the copy.
                                    
                                    Also, you should move the internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples()); out of the if statement, so in case force_input_channels is not defined it will set the size of internal buffer to the size of input buffer.
                                    

                                    is this the right way to do your suggestion:
                                    if (buffer.getNumChannels() == internalBuffer.getNumChannels())
                                    internalBuffer.makeCopyOf(buffer);
                                    else if (buffer.getNumChannels() != internalBuffer.getNumChannels())
                                    internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples());
                                    internalBuffer.makeCopyOf(buffer);

                                    Yes, that would be the correct way to implement my suggestion.
                                    It checks if the number of channels of the input buffer and internalBuffer match before making a copy, and if not, it resizes the internalBuffer to match the number of channels of the input buffer before making a copy.
                                    It's important to keep in mind that, if the input buffer has different number of channel than the internalBuffer, you should also make sure to clear the internalBuffer before making the copy, otherwise the previous content of the internal buffer would still be present and you will get unwanted signal in your output.
                                    

                                    So... In short, I changed the code in hi_dsp/modules/ModulatorSynthChain.cpp , Line 252 from:

                                    #if FORCE_INPUT_CHANNELS
                                    	if(internalBuffer.getNumChannels() == buffer.getNumChannels())
                                    		internalBuffer.makeCopyOf(buffer);
                                    #endif
                                    

                                    to:

                                    #if FORCE_INPUT_CHANNELS
                                    	if (buffer.getNumChannels() == internalBuffer.getNumChannels())
                                    	{
                                    		internalBuffer.makeCopyOf(buffer);
                                    	}
                                    
                                    	else if (buffer.getNumChannels() != internalBuffer.getNumChannels())
                                    	{
                                    		internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples());
                                    		internalBuffer.makeCopyOf(buffer);
                                    	}
                                    
                                    #endif
                                    

                                    @Christoph-Hart Is this the right way to do this? or do we need a "Human equivalent" solution?

                                    EDIT:
                                    simplified

                                        if (buffer.getNumChannels() != internalBuffer.getNumChannels())
                                            internalBuffer.setSize(buffer.getNumChannels(), buffer.getNumSamples());
                                        internalBuffer.makeCopyOf(buffer);
                                    

                                    ... and it works.... mostly. A couple of the routing meters show junk, but audio seems to work.

                                    Dan Korneff - Producer / Mixer / Audio Nerd

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

                                      @Dan-Korneff Nah, we must not resize the buffers in the processing callback (in the other case it works because it just shrinks the array length without reallocating.

                                      But I think I've fixed it. I also spent a new preprocessor macro HISE_BACKEND_AS_FX which will use the same processing style as a compiled FX plugin (so it will not render child synths and only the master FX chain).

                                      ustkU 1 Reply Last reply Reply Quote 2
                                      • ustkU
                                        ustk @Christoph Hart
                                        last edited by ustk

                                        @Christoph-Hart does this also fixes my issue here?
                                        https://forum.hise.audio/topic/7069/audio-inputs-aren-t-working-anymore

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

                                        1 Reply Last reply Reply Quote 0
                                        • d.healeyD d.healey marked this topic as a question on
                                        • d.healeyD d.healey has marked this topic as solved on
                                        • First post
                                          Last post

                                        11

                                        Online

                                        1.9k

                                        Users

                                        12.5k

                                        Topics

                                        108.6k

                                        Posts