HISE Logo Forum
    • Categories
    • Register
    • Login

    Compiling Just an Empty Clone Container Fails

    Scheduled Pinned Locked Moved Bug Reports
    23 Posts 6 Posters 478 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 @clevername27
      last edited by Lindon

      @clevername27

      The project builds fine here, windows - latest HISE build:

        include_juce_audio_devices.cpp
        include_juce_audio_formats.cpp
        include_juce_audio_plugin_client_utils.cpp
        include_juce_audio_processors.cpp
        include_juce_audio_utils.cpp
        include_juce_core.cpp
        include_juce_cryptography.cpp
        include_juce_data_structures.cpp
        include_juce_dsp.cpp
        include_juce_events.cpp
        include_juce_graphics.cpp
        include_juce_gui_extra.cpp
        include_juce_opengl.cpp
        include_juce_osc.cpp
        include_juce_product_unlocking.cpp
        include_melatonin_blur.cpp
      C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\bit(11): warning STL4038: The
       contents of <bit> are available only with C++20 or later. [D:\Hise_Work\test4TheDoc\Binaries\Builds\VisualStudio2022\t
      est4TheDoc_SharedCode.vcxproj]
        include_hi_snex_60.c
        include_hi_snex_61.c
        include_juce_gui_basics.cpp
        test4TheDoc_SharedCode.vcxproj -> D:\Hise_Work\test4TheDoc\Binaries\Compiled\Shared Code\test4TheDoc.lib
        include_juce_audio_plugin_client_VST2.cpp
           Creating library .\..\..\Compiled\VST\test4TheDoc.lib and object .\..\..\Compiled\VST\test4TheDoc.exp
        Generating code
        Finished generating code
        test4TheDoc_VST.vcxproj -> D:\Hise_Work\test4TheDoc\Binaries\Compiled\VST\test4TheDoc.dll
      Press any key to continue . . .
      

      and the DLL build fine too:
      93e98263-6698-406c-949a-6df3f2f2f837-image.png

      HISE Development for hire.
      www.channelrobot.com

      clevername27C 1 Reply Last reply Reply Quote 1
      • clevername27C
        clevername27 @Lindon
        last edited by

        @Lindon Thanks, man. That narrows it down a bit. (I'm on macOS; @d-healey is on Linux.)

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

          I just tested on MacOS and get the same error.

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

          clevername27C 1 Reply Last reply Reply Quote 1
          • clevername27C
            clevername27 @d.healey
            last edited by

            @d-healey Thank you.

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

              @clevername27 I also get the error on Windows.

              @Lindon What commit are you using? I'm using 04c8d6c3

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

              clevername27C LindonL 3 Replies Last reply Reply Quote 1
              • clevername27C
                clevername27 @d.healey
                last edited by

                @d-healey I've all tried all of them from the past few months.

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

                  @clevername27 @Christoph-Hart Well I finally hit the same road block before plugin release...

                  I have a clone container with linkwitz riley filters
                  It does compile without complaining, but it makes no sound

                  As soon as I remove the clone node and just put the filters as is, it works

                  Can't help pressing F5 in the forum...

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

                    @ustk different issue I think, although possibly related. But here we can't compile a polyphonic clone

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

                    1 Reply Last reply Reply Quote 1
                    • clevername27C
                      clevername27 @d.healey
                      last edited by

                      @d-healey Did I answer your question about which versions well enough? I didn't mean to sound flippant—just that I really have tried them all (including the version you mentioned).

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

                        @d-healey said in Compiling Just an Empty Clone Container Fails:

                        /HISE/hi_dsp_library/node_api/nodes/Containers.h:116:49: error: ‘const struct scriptnode::wrap::clone_base<scriptnode::wrap::clone_data<scriptnode::container::chain<scriptnode::parameter::empty, scriptnode::wrap::fix<2, scriptnode::core::empty> >, 0, 1>, scriptnode::CloneProcessType::Copy>’ has no member named ‘isPolyphonic’
                        >   116 |     bool isPolyphonic() const { return get<0>().isPolyphonic(); }
                        

                        I'm trying to parse this error. Basically, some code tried calling isPolyphonic() on a clone_base struct when isPolyphonic() is not defined for that struct. This is probably a runtime error only seen when compiling clone containers. The location of that code seems to be in the Containers.h file within the container_base struct.

                        The container_base struct has a protected member std::tuple<Processors...> called elements. This is relevant because the error is referring to get<0>().isPolyphonic() and get<0>() is defined further up in the Containers.h file
                        as (i'm not sure which one)

                        template <int arg> constexpr auto& get() noexcept { return std::get<arg>(elements).getObject(); }
                        template <int arg> constexpr const auto& get() const noexcept { return std::get<arg>(elements).getObject(); }
                        

                        so get<0>().isPolyphonic() is kind of equivalent to std::get<0>(elements).getObject().isPolyphonic() which breaks down in English to get the first object in the elements tuple and ask if it's polyphonic. The error leads me to believe that there is a clone_base struct in that elements tuple of Processors and clone_base doesn't have function isPolyphonic().

                        clone_base is a struct defined in duplicate.h and does not seem to have a polyphonic anything related, so I'm guessing there shouldn't be a clone_base struct in that elements tuple. So I'm thinking where does it get in there? So I'm looking for where clone_base is referenced and I stumble on this alias definition in processors.h

                        template <typename T, int NumDuplicates>
                        using fix_clonecopy = clone_base<clone_data<T, options::no, NumDuplicates>, CloneProcessType::Copy>;
                        

                        which means I can cut down the size of the error message to this

                        /HISE/hi_dsp_library/node_api/nodes/Containers.h:116:49: error: ‘const struct fix_clonecopy’ has no member named ‘isPolyphonic’
                        >   116 |     bool isPolyphonic() const { return get<0>().isPolyphonic(); }
                        

                        I don't know how all this helps anyone. Does anyone else have a different error message related to this problem that I could look at to look for clues?

                        Check out the music of Conway's Game of Life - https://www.youtube.com/@hujackus
                        ConwayMatrix - http://hujackus.altervista.org/conwaymatrix/

                        clevername27C 3 Replies Last reply Reply Quote 1
                        • LindonL
                          Lindon @d.healey
                          last edited by

                          @d-healey
                          Im using

                          c808118776c8f41f5f718faa4f9af3ea5313ba72

                          from 17th feb.

                          Im also doing this form a completely fresh, new and empty project...

                          HISE Development for hire.
                          www.channelrobot.com

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

                            @clevername27 said in Compiling Just an Empty Clone Container Fails:

                            @d-healey Did I answer your question about which versions well enough? I didn't mean to sound flippant—just that I really have tried them all (including the version you mentioned).

                            I was only asking Lindon because he said it worked for him.

                            @Lindon said in Compiling Just an Empty Clone Container Fails:

                            form a completely fresh, new and empty project...

                            But you're using the snippet Bill posted?

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

                            LindonL 1 Reply Last reply Reply Quote 1
                            • HISEnbergH
                              HISEnberg @clevername27
                              last edited by

                              @clevername27 I was curious about your issue here so I tinkered around with it, and I managed to get this to compile (based off of your example):

                              HiseSnippet 1111.3oc6V0saaaCElzNLoIKccEn.a2MeY5PQfkiShC1EsINwqFaNwXJKn2EPSQGSDIRAIpj5Mr2s8HrGk8FrcnnrkTpbRlQ61tXx.Fh7bN57wuyebXjhwiiUQH7FmOMjivaRbmJ0S5NgJjn9GivqRNmGqQGMMjFGy8PXb8uyHCu9Jnzm+30GQ8oRFOeKD5Bkfw+AQfPmu6v278Be+dTO94hfBZ29M8YJYWkuJAvQcRSTHkcM8J9oTiZ0Hn2RimfveCo03QrVi2emNNG3bv9sOvwY2NiZ2rEya2C1Ym81wabqNz85.Fs5IdBsJxUS07XDdkiTdScmntUZcvEhXwHetYgCxE7rc6dJeOyQzrKp6Dgu2vYDTLBgICyoq5V55EjABOw78yosuHUPibKJRf3ZkgW8RvyoH7ZV.dU.IbAHshEROm3xhDg5bIF77Yj9RMOZLEhSEghUWD92HcUfBR81Azq48hfEyMXq8Z17UMf+d42NNQxzBkrgRdpRyOSt0K23W1X8M90MZbWQiGWoLiahT997nJEaRMhtOC2RlDLhG8pF2P8S3yUDN9k4Txh4zhgbl8TWPQkruTnOKjKWTh.Jipf29o9GS0TSfHaOPuPdjVXf.9X9MPYfMrrN4Xd70ZUHTH7AwLHaQ4k3S0kSgLEZYB.NnTbyDbjwB8zhEhezxqdrP74jgBMaR0XrVEXDXpOEXLqZ7ojSFOlyz4.bERu28oozqn6exL26J7MISlNnot+YY6zHcKm6oK5u+X6hF9n6hhqeeMAcVxlfq7etlfeLpmp8+0S+KWOU0nrOmLT4O0NhB7qA.eY5VgSTRAqgURiduyoxYZeMop4GEFYPdzX249ot7ABmx02phtN8.k8NBulA4eEILRDGzWxd6zQQBOHHyMiAQG56qtM+Tk4adTrI9iWizba3mUqtpfPQVlAjPXWxgviTx8OLPk.X.Sv0.f.2Y5bpv2nlaRLLMy6LYZyHSKFSb6Tv+vEk5QY.ELcHEZYA4el4gPvlGsMadPegHOmzM7h85ZKTYi+l0dhfQorVPfg0LWwCW2H2Rao.KkyViv7URNZwfLUbU3Xlol3YWyawVh8gfQgA31bRyJnhqlAOaR5GegQJi5itvbAjrTh6.9UMJ+TKBtjYRWPO.OW0Qn7GnHv2jztUm8On09sa2tZZDMjFAeD3FbYk1+8NTPJTwO.t17UvgafPloFg3.olCnueNW.EJZdnq3mmK0d6ySSBxhBkL8X9XZhutzdnE4qlk7EgzBVWk2f4vg9Bsq3JY9Ixp9c8WqR9aYopiTpqCnoU8K2MB+QUhVHuZ.UGIdOfKfsbg.MaVoc7rp5r0Mmk65B00oK9S3ISniYMNSnyLg+i3i.JKRcIy1o0PfOIcGHwPllQuNYfYcCGzMVxKeNV.bSgKYrxepOvvVKqg6rrF1dYMb2k0v8VVC2eYMryCan4hbGlnUA1gOHzfgmjlniwmHovTxzIun+Bk4oc+B
                              
                              

                              I couldn't make any sense of the debug console but it seems to me that the clone container is looking for the number of clones to be specified or it will fail to compile. I also had to add some type of processing in the container or else it would fail. I've used the clone container successfully in the past.

                              General rule of thumb I follow is make sure the NumClones is the first macro control (and the ranges match for each node it controls), and to precompile all of your processing in a separate scriptnode and load that into the clone container (less error prone, plus it keeps the network more organized).

                              Screenshot 2025-02-21 at 8.54.35 AM.png

                              clevername27C 1 Reply Last reply Reply Quote 1
                              • clevername27C
                                clevername27 @hujackus
                                last edited by clevername27

                                @hujackus As @d-healey mentioned, we may be looking at different issues. That said, here are some links to error messages and possibly-useful information I've received in and around this issue. (@d-healey suggested running the compile directly from inside Xcode, which indeed provided more verbosity in error reporting.)

                                • Link 1

                                • Link 2

                                • Link 3

                                • Link 4

                                1 Reply Last reply Reply Quote 0
                                • clevername27C
                                  clevername27 @HISEnberg
                                  last edited by clevername27

                                  @HISEnberg Interesting and thank you - especially about the parameter ordering. I eventually stopped making the number of clones dynamic, and I think my snippets are all such—but maybe if I don't change the number of active clones during execution, the dynamic process is still happening - in which case, maybe it makes sense to always set the number of clones, manually?

                                  I also don't think any of us have stopped to realise the moral and ethical implications of cloning, but I guess one thing at a time.

                                  1 Reply Last reply Reply Quote 0
                                  • clevername27C
                                    clevername27 @hujackus
                                    last edited by clevername27

                                    @hujackus I am feeling like a proper lazy slug looking at all the sleuthing you're doing. (I'm taking a look, now.)

                                    And…you may be on to something. I tried compiling my snippet with that function always returning TRUE, and it compiled. 🚀

                                    When you say struct, do you mean class? (Structs don't have methods, although I guess you could use a function pointer.)

                                    I'm assuming that the function is returning whether Clone nodes can be used in polyphonic networks. So, I changed the return value from FALSE to TRUE. Seems to work. Cheers for your detective work, @hujackus.

                                    Update: Didn't work for my original snippet.

                                    df454456-5612-42f3-a5b2-35e799c2e18b-image.png

                                    @d-healey If this works for others, do you want to submit this?

                                    d.healeyD hujackusH 2 Replies Last reply Reply Quote 0
                                    • clevername27C
                                      clevername27 @hujackus
                                      last edited by

                                      This post is deleted!
                                      1 Reply Last reply Reply Quote 0
                                      • LindonL
                                        Lindon @d.healey
                                        last edited by Lindon

                                        @d-healey said in Compiling Just an Empty Clone Container Fails:

                                        @Lindon said in Compiling Just an Empty Clone Container Fails:

                                        form a completely fresh, new and empty project...

                                        But you're using the snippet Bill posted?

                                        Yes

                                        HISE Development for hire.
                                        www.channelrobot.com

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

                                          @clevername27 said in Compiling Just an Empty Clone Container Fails:

                                          Structs don't have methods

                                          They can in C++ and do in the HISE codebase.

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

                                          clevername27C 1 Reply Last reply Reply Quote 1
                                          • clevername27C
                                            clevername27 @d.healey
                                            last edited by

                                            @d-healey You're absolutely right.

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

                                            21

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.6k

                                            Posts