HISE Logo Forum
    • Categories
    • Register
    • Login

    Roadmap to HISE 5

    Scheduled Pinned Locked Moved General Questions
    87 Posts 14 Posters 1.9k 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 @Christoph Hart
      last edited by

      @Christoph-Hart said in Roadmap to HISE 5:

      It might be enough to just change the first line to #if JUCE_WINDOWS || JUCE_LINUX

      Those macros _IPP_SEQUENTIAL_STATIC || _IPP_SEQUENTIAL_DYNAMIC || _IPP_PARALLEL_STATIC || _IPP_PARALLEL_DYNAMIC seem to be created by VS, unless I'm misunderstanding them, so they won't be picked up on Linux.

      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
      • Christoph HartC
        Christoph Hart @d.healey
        last edited by

        @d-healey Ah yes, you're right, I thought they are defined in the <ipp.h> header.

        I think the closest you can get on Linux is:

        1. Make sure that the IPP headers / libraries are in a system path that is globally accessible => this might require some environment variable setup, we can add this to the readme build instructions.
        2. Define _IPP_SEQUENTIAL_STATIC=1 in your build setup. If you want to compile HISE with IPP on Linux you'll have to put that into the preprocessor definitions (as this "emulates" the OneAPI configuration). If you compile a plugin, then the HISE exporter just needs to add this to the ExtraDefinitionsLinux field - I can rewrite the logic to pick up the setting from the UseIpp property in the Hise compiler settings, but a manual preprocessor in said field should also do the trick for now.
        d.healeyD 2 Replies Last reply Reply Quote 0
        • d.healeyD
          d.healey @Christoph Hart
          last edited by d.healey

          @Christoph-Hart said in Roadmap to HISE 5:

          Define _IPP_SEQUENTIAL_STATIC=1 in your build setup.

          In the extra preprocessor definitions?

          Edit: Yes that seems to work, it might have some unexpected effect though

          I'm seeing this in the output

          /home/dave/intel/oneapi/ipp/latest/include/ipp/ippdefs.h:107:169: note: ‘#pragma message: defines _IPP_PARALLEL_DYNAMIC/_IPP_PARALLEL_STATIC/_IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC do not have any effect in current configuration’
            107 |     #pragma message ("defines _IPP_PARALLEL_DYNAMIC/_IPP_PARALLEL_STATIC/_IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC do not have any effect in current configuration")
          

          Using USE_IPP=1 doesn't have this.

          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 @Christoph Hart
            last edited by d.healey

            @Christoph-Hart Ok I've got it working with this setup.

            In ./bashrc add some environment variables

            #IPP
            export IPPROOT=/home/dave/intel/oneapi/ipp/latest # Set this path to correct folder on your system
            export CPATH=$IPPROOT/include:$CPATH
            export LIBRARY_PATH=$IPPROOT/lib:$LIBRARY_PATH
            export LD_LIBRARY_PATH=$IPPROOT/lib:$LD_LIBRARY_PATH
            

            Compiling HISE:
            Add USE_IPP=1 to Extra Preprocessor Definitions (avoids the issue I mentioned above).
            Add -lippcore -lippvm -lipps -lippi -lippcv to Extra Linker Flags.

            Compiling Projects:
            Check the Use IPP checkbox in project preferences.
            This automatically adds the flags and definition to the autogenerated juce project

            Edit: It doesn't seem to cause any issues to leave those extra linker flags in even when not using IPP, we could also add the flags for fftw too.

            I'll keep working on this tomorrow, I'd like to make it using FFTW3 just as easy.

            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 @Christoph Hart
              last edited by

              @Christoph-Hart That's what I got from this:

              7fb951ee-2b04-45fa-9ad9-e5258c8ac9c9-image.png

              I should mention that I'm rarely here any more, so I may miss your reply. I do still check in from time to time.

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

                Edit: It doesn't seem to cause any issues to leave those extra linker flags in even when not using IPP, we could also add the flags for fftw too.

                I'm pretty sure the compilation will fail if you haven't IPP installed and trying to link with the libraries. Have you checked this on a vanilla system?

                d.healeyD 2 Replies Last reply Reply Quote 0
                • d.healeyD
                  d.healey @Christoph Hart
                  last edited by d.healey

                  @Christoph-Hart said in Roadmap to HISE 5:

                  Have you checked this on a vanilla system?

                  I have not, I will test

                  Update: Yep, good call, you were correct.

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

                  1 Reply Last reply Reply Quote 0
                  • T
                    tomekslesicki
                    last edited by

                    I just wanted to chime in and say I really appreciate your work, and that the recent additions are awesome. Thank you!

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

                      @Christoph-Hart

                      I'm just finalising the implementation. I'm using an environment variable for IPP on Linux as discussed, and the USE_IPP flag.

                      I'm also using an environment variable for FFTW3 on both Linux and Windows. On Windows I also need to pass a path for the fftw header and library which is annoying. I can go into more detail if needed.

                      Anyway I'll clean up and test and update my PR then we can discuss.

                      Btw, should that quotation mark in the middle be at the end?

                      prebuildCommand="%PREBUILD_COMMAND%"%STRIP_SYMBOLS_WIN%/>

                      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
                      • Christoph HartC
                        Christoph Hart @d.healey
                        last edited by

                        @d-healey yes, but you need to use a delimiter so that it's escaped correctly.

                        prebuildCommand=\"%PREBUILD_COMMAND%"%STRIP_SYMBOLS_WIN%\"/>

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

                          @Christoph-Hart I thought it should be like this?

                          prebuildCommand="%PREBUILD_COMMAND%;%STRIP_SYMBOLS_WIN%"/>

                          I'm looking at this line in the develop branch.

                          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
                          • Christoph HartC
                            Christoph Hart @d.healey
                            last edited by

                            @d-healey ah yes you're right, sorry, this string is using the Raw literal format so you don't need the escape characters (the DLL template is still using the old style but I forgot that I've updated the other ones).

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

                              For the last few hours I've been trying to statically link fftw on Windows and mostly failing. Then I realised the libraries provided by fftw are just stubs for the dlls! So I have to compile the static version myself.

                              Now I think this is a bit much for a HISE user to do because it involves installing cmake and messing around with some simd configuration options and stuff.

                              I think it would be better to include the static library I have already compiled in tools/fftw/windows, along with fftw.h. It's about 6mb in total. This would also avoid the need for setting an environment variable on Windows because the path would be fixed.

                              What say ye?

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

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

                                @d-healey what's the rationale for FFTW on Windows? You can just use IPP here, even with GPL software, no?

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

                                  @Christoph-Hart IPP uses the Intel Simplified Software licence which is not GPL compatible - it prevents modifying the code, reverse engineering, and isn't copy left.

                                  vDSP on Mac can be used because the GPL includes an exception for linking against system libraries https://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException

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

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    aaronventure @d.healey
                                    last edited by aaronventure

                                    @d-healey if hise resorts to using the Ipp that's gettable via nuget or any of the ones that can be be found with direct links on the Intel website, then you could add it to the installer? There would then have to be an option that it's not included in the plug in, but found in the pc.

                                    Kind of like video games of old used to pack C++ resists and direct X versions.

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

                                      @aaronventure still not GPL compatible

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

                                      A 1 Reply Last reply Reply Quote 0
                                      • A
                                        aaronventure @d.healey
                                        last edited by aaronventure

                                        @d-healey how so? aren't you just loading it from the computer in that case?

                                        EDIT: Ah, the IPP license clarifies this.

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

                                          PR is ready for review I think this is as simple as it can be made, I've tested on Windows 10 and 11, and two Linux systems, with IPP, with FFTW, and with neither. I also tested exporting standalone and plugins from HISE. I didn't test or do anything about building scriptnode networks though - not sure if I need to...

                                          I also noticed AVX is now a requirement for building HISE. Probably won't affect anyone on real modern hardware but my VM needed a small adjustment.

                                          Windows
                                          Building HISE on Windows with IPP is exactly as you set it up, I haven't made any changes that affect this.

                                          Building HISE on Windows with FFTW requires:

                                          • Adding AUDIOFFT_FFTW3=1 to the Extra Preprocessor Definitions
                                          • Adding fftw3f.lib to the Extra Linker Flags
                                          • Enabling the static FFTW option in JUCE_DSP.

                                          To export a project with FFTW on Windows you just need to add AUDIOFFT_FFTW3=1 to the preprocessor definitions in HISE preferences. If you also leave the Use IPP box checked then that will take precedence and FFTW won't be used.

                                          Linux
                                          To build with IPP on Linux you need to add some environment variables to ~/.bashrc

                                          export IPPROOT=/home/dave/.local/share/intel/oneapi/ipp/latest # Set this to the correct path on your system
                                          export CPATH=$IPPROOT/include:$CPATH
                                          export LIBRARY_PATH=$IPPROOT/lib:$LIBRARY_PATH
                                          export LD_LIBRARY_PATH=$IPPROOT/lib:$LD_LIBRARY_PATH
                                          

                                          Then in a terminal run source ~/.bashrc

                                          In Projucer you need to:

                                          • Add USE_IPP=1 to the Extra Preprocessor Definitions
                                          • Add these linker flags -lippcore -lippvm -lipps -lippi -lippcv

                                          To export with IPP you just need to enable the Use IPP checkbox in Project preferences (same as Windows).

                                          To build with fftw on Linux you need to add these environment variables

                                          export FFTWROOT=/usr/lib/x86_64-linux-gnu # Set to the correct path for your distro, I'm using Debian
                                          export CPATH=$FFTWROOT/include:$CPATH
                                          export LIBRARY_PATH=$FFTWROOT/lib:$LIBRARY_PATH
                                          export LD_LIBRARY_PATH=$FFTWROOT/lib:$LD_LIBRARY_PATH
                                          

                                          And run source ~/.bashrc in a terminal.

                                          In Projucer:

                                          • Add AUDIOFFT_FFTW3=1 to Extra Preprocessor Definitions
                                          • Add -lfftw3f to Extra Linker Flags
                                          • Enable the static FFTW option in JUCE_DSP

                                          To export a project with FFTW just add AUDIOFFT_FFTW3=1 to Extra Definitions in Project preferences (same as Windows).

                                          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

                                            @d-healey said in Roadmap to HISE 5:

                                            Windows
                                            Building HISE on Windows with IPP is exactly as you set it up, I haven't made any changes that affect this.

                                            what about building without IPP on Windows???

                                            HISE Development for hire.
                                            www.channelrobot.com

                                            d.healeyD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            42

                                            Online

                                            1.8k

                                            Users

                                            12.1k

                                            Topics

                                            105.2k

                                            Posts