HISE Logo Forum
    • Categories
    • Register
    • Login

    Performance comparison Kontakt 5.8 vs HISE

    Scheduled Pinned Locked Moved General Questions
    8 Posts 4 Posters 1.1k 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.
    • S
      Stroggan
      last edited by

      I just finished porting my guitar library from Kontakt 5.8 to HISE and was positively surprised about the memory and CPU usage of HISE(compiled to 64 bit VST)

      Memory usage Kontakt: 190MB
      Memory usage HISE: 103MB

      CPU difference while playing the exact same thing:
      HISE VS KONTAKT cpu.png

      The timer in kontakt is set to 1ms resolution while the one in hise is 4ms, having them set at the same value results in about twice the cpu usage for kontakt instead of three times. but the HISE version has arrays of twice the size compared to the kontakt script, so it iterates over more data per timer tick.

      Hopefully I don't encounter any issues because this really makes me want to go 100% HISE in the future.

      ossian1961O 1 Reply Last reply Reply Quote 4
      • Christoph HartC
        Christoph Hart
        last edited by

        But both HISE and Kontakt got beaten by the Monitor FX though :)

        BTW are you using HLAC? If not, expect memory to go down 50% because it can use 16bit preload buffers.

        1 Reply Last reply Reply Quote 3
        • S
          Stroggan
          last edited by

          If saving as Monolith means it is HLAC then yes.

          1 Reply Last reply Reply Quote 0
          • ossian1961O
            ossian1961 @Stroggan
            last edited by

            @Stroggan said in Performance comparison Kontakt 5.8 vs HISE:

            Hopefully I don't encounter any issues because this really makes me want to go 100% HISE in the future.

            ...and you're forgetting most important thing, Kontakt can't create a real plugin ;)

            https://www.kontakthub.com/label/Imagik-Sound/
            https://mirtklaar.bandcamp.com/

            1 Reply Last reply Reply Quote 0
            • S
              Stroggan
              last edited by

              I did encounter an issue :(

              I was running most of my logic in a defered script, which seems to work great 99% of the time.
              But I noticed today when I rendered an example at full speed offline, that the output wasn't exactly the same as live playback.

              I rely a lot on the "Engine.getUptime()", is it possible that the result from this timer gets scaled somehow when used in the gui thread and playback is faster than realtime?
              Maybe I should just make my own counter variable and increment in the timer callback?

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

                @Stroggan All realtime stuff should be put in a script that isn't deferred.

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

                1 Reply Last reply Reply Quote 0
                • S
                  Stroggan
                  last edited by

                  Sure, in general, but I don't need 100% instant response and what I am doing works in all but this edge case so far. Maybe running this deferred has some potential downfall I'm not aware off.

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

                    If you don't defer a script, then the Engine.getUptime() is sample accurate down to +-8 samples because in its default setting which can be changed by the macro HISE_EVENT_RASTER, HISE rounds every sample position for events (notes and timers) to 8 samples to apply SSE optimizations and downsample the modulation control rate. This introduces a "jitter" of 90 nanoseconds at 44kHz, so it should be neglible.

                    If you defer a script, the Engine.getUptime() function will return the exact value that the audio thread is currently using, which can be any value in the future because you don't know exactly when the deferred callback is executed, and in the case of offline rendering this can have drastic effects.

                    So bottom line, whenever you need "musical" timing, don't defer the script. This function is rather for stuff like "update a button on the GUI if you press a note" type of applications.

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

                    54

                    Online

                    1.7k

                    Users

                    11.7k

                    Topics

                    101.8k

                    Posts