HISE Logo Forum
    • Categories
    • Register
    • Login

    Roadmap to HISE 5

    Scheduled Pinned Locked Moved General Questions
    103 Posts 15 Posters 2.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
      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
        • d.healeyD
          d.healey @Lindon
          last edited by

          @Lindon said in Roadmap to HISE 5:

          what about building without IPP on Windows???

          Set this to No

          90c8759e-ad49-4bf6-af77-9bf2e1ccb41a-image.png

          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 nice work Dave! The only thing I'm not sure is whether we should include the static FFTW library on Windows in the repo - it will bloat the repository size for all users but there is only a limited amount of users who will use it, as IPP is the most popular option on Windows.

            But I agree that compiling this manually is a PITA that nobody should go through ever again. I could just host the library on the HISE webserver and we'll add a readme at the location with the download URL so people can just put it there if required.

            Can you modify the pull request and send me the static library per email (lol), I'm a bit scared that if I accept the pull request the binary will be entangled in the Git history and all our efforts to keep this lean are moot.

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

              @Christoph-Hart yes that's a good compromise, I'll sort it out in a little while and send you the file

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

              1 Reply Last reply Reply Quote 0
              • OrvillainO
                Orvillain
                last edited by

                @Christoph-Hart

                Did anything change in the parseAsJSON stuff for a floating tile?

                This is what I was doing prior to this update, and it worked:

                local filter1Graph = Content.getComponent("ft_Filter1Graph");
                							local filter1GraphData = filter1Graph.get("Data").parseAsJSON();
                							Console.print(trace(filter1GraphData));
                							filter1GraphData.Index = graphMap[filterType][0];
                							filter1Graph.set("Data", filter1GraphData.toString());
                

                But now the toString() call on filter1GraphData returns an unknown function error.

                But when I print out the trace of filter1GraphData, I can definitely see data showing up.

                Here's a simplified snippet:

                HiseSnippet 1038.3oc0V0saiSDEdbalJhAVXQHDbmUtJAUEk+2VVgHaSZfrPSSIkEta0T6wIi53YL1i2tQqpfGEdA3cgmCth2fkyX6D6zVkMMqPh0WDkyOed9747MmYFGHsoggx.jg44y8oHiO.OYtPMq2LBSfF1GY7.7IjPEMvJw0Qy8IggTGjgwteq1gQwBn3m+4aNhvIBaZlKD5YRlM8GXdLUl2wc+dFmOf3POm4kK6VcGZKE8jbYDvmcw0P9D6KISoiH5z1Ai9NR3LjwWha2nocKmG4znQ6C6XS5POzk35VuoSqVcN3v5MOjz5fNzZsQF6crCSIClnHJZH7ROR5LexL4UhjE3YrP1Ebp1nNZBrxItQ8lw3NiWTbBQHiBiyJU6lTp9T7ILG1R+YkrONNfUFh7EMicVGkpeOnjQNJUHgRODOwNf4qxhn4y6iGJfNnKA5M4oRRtnc9SCbOIjgPU0ibIcP.XrDQ4N0psuE7SkGaZZBMnPk0KHAVCXbHi5VesUrfo5Tp5XWWpspbozPk.D4xmKIJlX54LNUiZwJB35I87kBv.flOqR2XIcU8IJBfckrzugxkzQJUopOIHj9jvmN4zQk0nSfTcnvg9R.XavUJ6pFtD19ou4pJ4DU.7dKWoxiciD1JlTXIEijJ5ohxULekYQyqMstYHW26Ll9KLPx4zf6LrV7GrNfkEQdWPC1G914QzkIBM6UUP6sYJH6jBdtDkhgBl5TeZp8.I2QqLz++15MTZGC92OMTWtzRvTePd9z.ESSGi9zW.a5SDjEw8ogWpj9w4l1lAEoJcGThDLe+Dw.F7Q3UZwnWlMkne24YFi5lRfjUCfE2b6yB84j4nKltXZRw8Z1r4q0PXJpWl2WCOq5sQp6eOdwzelFOE+JSKqRKKFCcJ8UVKU46qiEKv.u0hsfBIWd0OKCtLDFgQA+tDdH07ZzULGELBCa72FHzLJa5Lk1pigdt3s1NCCRjNQbhZ0oK54toA.AyJao0aaEgL077ykuGibps1QNaJEeHdLSYO6t43N2AGAoz+EbLcP8GhSlLkQvB3A+x1NUt1lOUtXx5+I3wR9b+YRAyNQ0DShhop05q4PUDZP.8WinB6EUq+35e6u5dV91KTlycJ5m28rHB+FU2iX9RNI3ssxeONibcxiOCu7ix5sQGWXyZRugwZarlV2Yd2gueANsoaoK1u6v6GfO6+Aj8GkQ5SeNg.2G.N7AOJxaBb3fMEHpPP4g5o16nOTLwtl1VSnITgSrg9jkzf001FoAquHHxiXGHetcxg858OuWrGfSh3K7VDt4MXaUGEeAf76Y8f6W9ba6UeU2BXisEXysEXqsEX6sEXmsE3i1VfG7lApu9+ShTRuDMLBcx3iStJgwwBBnFikyn+EvirgaQ
                

                I swear this used to work!

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

                  @Orvillain I think the function you need there trace(filter1GraphData); - rather than toString

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

                  OrvillainO 1 Reply Last reply Reply Quote 0
                  • OrvillainO
                    Orvillain @d.healey
                    last edited by

                    @d-healey Yep that works. Just odd that the old call stopped working.

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

                      @Orvillain toString() was never a function for objects, it's always been trace

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

                      OrvillainO 1 Reply Last reply Reply Quote 0
                      • OrvillainO
                        Orvillain @d.healey
                        last edited by

                        @d-healey I don't think that is correct. This code was working fine before upgrading to Hise 5. toString() did exactly what you'd expect, it converted the JSON data object to a string.

                        Trace is fine, but I regard trace as a logging/debugging command, which is why I wasn't using it.

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

                          @Orvillain said in Roadmap to HISE 5:

                          This code was working fine before upgrading to Hise 5

                          In which commit does it work?

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

                          OrvillainO 1 Reply Last reply Reply Quote 0
                          • OrvillainO
                            Orvillain @d.healey
                            last edited by Orvillain

                            @d-healey said in Roadmap to HISE 5:

                            @Orvillain said in Roadmap to HISE 5:

                            This code was working fine before upgrading to Hise 5

                            In which commit does it work?

                            May 30th. Hence my original question to Chris as to whether something changed in this HISE 5 round of updates.

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

                              @Orvillain said in Roadmap to HISE 5:

                              May 30th.

                              Just tried your snippet with that commit and I'm getting the function not found error.

                              There's an Object.toString() function in Javascript, but not in HISE script.

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

                              OrvillainO 1 Reply Last reply Reply Quote 0
                              • OrvillainO
                                Orvillain @d.healey
                                last edited by

                                @d-healey Was definitely working.

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

                                  @Orvillain said in Roadmap to HISE 5:

                                  Was definitely working.

                                  Can you show me a video?

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

                                  OrvillainO 2 Replies Last reply Reply Quote 1
                                  • OrvillainO
                                    Orvillain @d.healey
                                    last edited by

                                    @d-healey said in Roadmap to HISE 5:

                                    @Orvillain said in Roadmap to HISE 5:

                                    Was definitely working.

                                    Can you show me a video?

                                    Will do. But I'm very sure this was working at some point. I wrote the code and even sent a video to the client showing them this feature area working.

                                    (updating graph index so that it looks at a different exposed filter graph from a custom filter node)

                                    1 Reply Last reply Reply Quote 0
                                    • OrvillainO
                                      Orvillain @d.healey
                                      last edited by

                                      @d-healey OK, apparently I can't show you a video, because now I also cannot get my demo snippet to work!! How strange.

                                      This is so weird. I was sure it was working. Can't explain it, because I wasn't getting an error or anything previously, and my graph data WAS definitely updating, because in the video I sent to my client you can see the graph switching indexes - which is the whole goal of this.

                                      I wonder if it was actually an older commit? I can't really remember now, But as recent as July 2nd, I was updating the Data array for a FloatingTile, using .parseAsJSON() and then setting the index to a value, and then performing a .toString() call on it, to shove the modified data back into the FloatingTile.

                                      Anyway... trace() does work.... but this baffles me tbh. Maybe Chris can say if something changed. The only reason I posted in here was because he was asking for feedback.

                                      
                                      local filter1Graph = Content.getComponent("ft_Filter1Graph"); // gets a component on screen
                                      local filter1GraphData = filter1Graph.get("Data").parseAsJSON(); // parses the Data array for the component
                                      filter1GraphData.Index = graphMap[filterType][0]; // this just returns an integer from an array, and sets the index property to that integer
                                      filter1Graph.set("Data", filter1GraphData.toString()); // this shoves the Data back in as a string
                                      

                                      In the full code, this was literally the code that was working until very recently.

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

                                        @Christoph-Hart I decided to make a clean PR without the library in the commit history - https://github.com/christophhart/HISE/pull/755

                                        You can download the .lib from my repo - https://github.com/davidhealey/HISE/tree/development/tools/fftw/windows

                                        I intend to keep it in my fork since I'll always want it.

                                        I added the windows sub-folder for the lib just in case in the future we ever need to put another version in there for some reason and keep them separate. But we could just put them in the fftw folder instead to save users the step of creating the sub-folder, let me know what you think?

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

                                        1 Reply Last reply Reply Quote 0
                                        • HISEnbergH HISEnberg referenced this topic
                                        • GoodflowG
                                          Goodflow
                                          last edited by

                                          Encountering a crash when using modulation assignments on UI controls with no assigned processorId.

                                          1. Uncomment line 7 in the snippet
                                          2. Hit Compile
                                          3. Right click Knob1 and try assigning the LFO.

                                          Same crash occurs if you try assigning via the ModulationMatrixController tile.

                                          HiseSnippet 1595.3oc6YsraabCEkisYpsSaZRZPQQWMvnKbZScjrkUhQQgGaY6Tg3GBVJOZ6h.5YnjH7LjS4vwINEAnK599GzuitpO9C5mP6ptM+AsWRpGy3H+R4kaPzBAwm2CIO2ykWpZRgOMIQHQNS1X+XJx4cw02mqZWoMgwQUWA479XN8gQDkj8HEMQgVd+XRRBM.43L5szcxYhwPlOOcwkIgDtOseUHzcELe55rHlpes07tMKLbMR.sAKJSuK4U0WvqHBEo.fFEW.ES72kzhtIQ2sQvnuhjzF47o34mcN+RA2HX1Ymegx9jxzEZRZ1r3bAkJU9lKTbtEHktYYZg4QNma0.lRHqqH.5QNisrHX+5sEOjaMvcYIrcBo5BEQ0AKaqdMQXfdIpqEUoMKLnV2cpDDLo05uuMpce6J3MXArd02e+6hlFb6OhrafNijGdilCdEyBuBYf2.fjSFHMlERWBW2WxhU8aQimyiqxUTYSBbNkEJ19hF4IN3JBnGb0LQjcoqIgB8FwzkKT3ZtvWW8KlbR3rJQ4tGQ5ZoGteo6p7VLNcFeIEVOaHBRCIJlfugo8ompUnXGRXjHXp7i+1bwNEgg20vsnpJhnXAGJL8TlV0iv7iYRnPcwcWSUCl5ZSUmEEGRc0zQSGu90Ozt5ZLcyTtuFXtB9lBEcK9zWcxuexIl7IS5dvlZ1bfsogpTDFRkCrYMwVdTCbZdZzNT40f0eXJsWGgCu7LB7gyHxRX8s6bY5nfWkyTaES4GFMF0Y6Vyd5fJnqJC24Bc3N0CYATIhATj2Aa1TQF.2wo8u9me4m+MzcptBQQ5NMvLBVIlJUL8BvYE5dfDfkRNAdEZxtJQroucNgAQmi0nOpmJwObGu86Uv69dIJZbc1i6hHu+9w+3hV9XChDHRUCzZXIFFhlf.rRDv.6.Fe1NzPjh9H.EmCazyhxpo80+dDousQK6EwBBBo0DIL84YVktL7LyRICmDj7dFuSPWv5ejWrnCD633jyCU6ExA6teVI2WXJHmTHdIbMlxu8fw3HC.i.u3kAF6n69d3Ua1j5q5Cvwvqc+WNhrYM+3Vy+w3aYzz5uQAd..RncEa6I4cDAN+ySZfy3SbfyCJiL1ISF4Xh6M1Yt3dmTV6Gz4bxsWaIuB8sxEc9RVXhwqu1VFrY+0whlkYwhPhT29ZR52kR49YZebOMsnZeVk2O4cOxdzlBYTGs2dyz5zVvNP1ZZPAsX3he9YYf0iDBUaFuUdx1U7VWHhWkSfkdP1IoVaRhNdID0M2z.SaCwFDPnVVIT3ua1Fq1hKjTaL3r0WIMQIh5t.L28qNHzahy37s3xklA9z7yzeuPE3q415ES4SiVUwi9LejSL0DN9c6cjqYnmdp4XmLp4Q6eiNUHtGI7+AH9HCZM5a1As1Vjp.mX6cvA0lMSipCwI7of04bZn9RlNin84rkKnKabbo7.Sg+E9zowh5xNcZrX2FQ1I2dKvrq2KXWumGtMDmZRrzrZ+PSYWs6s6snPvR8oUwWsQH2xWAlugjvShEI4l35zHVC3poIYq7NITMieaM8ImRkfHGXSOcw0fE4.GSchJUZ3gKEIR44jKcF8sQtOibk3bR3SzEi1K1uJeOZHjkiAiWFxjnIIMT0s17b4MDbQbaAmkK751TvmoUKpLK1G3BZIkhjMr4U71lFRIYIseh25.YiH2vlYyvrWT7T+.CC775ivV35pc.cesmJy3ceKDqDUO.av5D3VcxHLaNLOuGW2MSBxG0Eop5cPe8g9zAYr41DdKpl1VkGmprkbvl7Yw3ByT.YxkEiKB+rJvTkJqhQAT+jnscrAjPLjIioKRsd8lvsvHgPOBpQgPGPNNZKsUp54zPfpJH1zMc5kR9Fpr6h7sg1OUoULdu2us2ScXL+AdIhCKF6m+f+3WWgFRxsQcOV.Dwt+ig3Mfnv1y2Z5TSN317KJ1ctnWGMWPujd8H5LnCiAq5bvWi53zdd5huU64ro1iNtO3x3dl9A6tL13Fe1FjWDWi7Zxw8URBRuoXiHhuT7.e6+VfV0abSMvdK27ezMAn3Akcy+2DX9DAIU7.e+7S0yLvYG1AN2vNvRC6.meXGX4gcf2XXG3MO9Apy4aoTkHx5+gPaTaU6ys4z6s9bFE8e7NdMTH
                                          

                                          Is the new matrix_mod node scriptFX-only (as in not meant to be compiled to a hardcodedFX)? Also curious as to whether it's polyphonic-only like the "Matrix Modulator" module.

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

                                          23

                                          Online

                                          1.8k

                                          Users

                                          12.1k

                                          Topics

                                          105.5k

                                          Posts