HISE Logo Forum
    • Categories
    • Register
    • Login

    Haha the easter bunny has delivered.

    Scheduled Pinned Locked Moved General Questions
    loris
    99 Posts 10 Posters 7.7k 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 @A Former User
      last edited by d.healey

      @iamlamprey

      The 1930 partials seem to be the Loris algo being overly sensitive,

      I assume that's why the resynthesis sounds so good. But for an additive synth it's probably overkill.

      This is probably what you need: http://www.cerlsoundgroup.org/Loris/docs/utils.html

      collate : collate the Partials to reduce their number without assuming any harmonic structure (cannot distill later!).

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

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @d.healey
        last edited by A Former User

        @d-healey Yeh I noticed that command, not sure how to use it in the HISE implementation, I tried

        lorisManager.process(CURRENT_FILE, "collate", ???);
        

        No idea what to use for the third parameter, or if the collate string is even viable there lol

        I currently have a hacky solution by just rounding the values before pushing them to the array, then using pushIfNotAlreadyThere to remove the duplicates, it works for now

        Christoph HartC 1 Reply Last reply Reply Quote 0
        • Christoph HartC
          Christoph Hart @A Former User
          last edited by

          @iamlamprey I'm currently extending the Loris API to include the more advanced functions like collate, distill and sift (love the names), they do address the problem of having too many partials, but as David said, if you reduce them to a common denominator the sound gets a bit more static.

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

            @Christoph-Hart

            I'm currently extending the Loris API to include the more advanced functions like collate, distill and sift

            Which commands are currently available for the process function? I had a look through the source but didn't see a list.

            I see I can play back a buffer using Engine.playBuffer() but is there a way I can stop playback? What I want to do is allow the user to load a sample and hit a button which will resynthesise it at different pitches which are mapped to the keyboard and then they can play it back like a regular instrument.

            Also, can I load a buffer into a loop player or must it be saved as a real file first?

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

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @d.healey
              last edited by

              @d-healey said in Haha the easter bunny has delivered.:

              Which commands are currently available for the process function? I had a look through the source but didn't see a list.

              I don't think there is one, you can make your own functions with processCustom but I'm "patiently" waiting for Christoph to implement the official partial filtering methods cause my hacky ones keep crashing HISE lol

              I see I can play back a buffer using Engine.playBuffer() but is there a way I can stop playback?

              The mouseUp event in the top panel has a "stop" button by playing an empty buffer (fix by @ustk above):

              Engine.playBuffer([], "", 0.0);
              
              d.healeyD 2 Replies Last reply Reply Quote 0
              • d.healeyD
                d.healey @A Former User
                last edited by

                @iamlamprey

                I don't think there is one,

                Well we have dilate, I only know because it's used in the toolkit, but I haven't seen it in the code specifically.

                The mouseUp event in the top panel has a "stop" button by playing an empty buffer

                Ah that's clever.

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

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @d.healey
                  last edited by

                  @d-healey said in Haha the easter bunny has delivered.:

                  Well we have dilate, I only know because it's used in the toolkit, but I haven't seen it in the code specifically.

                  Hopefully the easter bunny visits twice this year 🤠

                  1 Reply Last reply Reply Quote 1
                  • d.healeyD
                    d.healey @A Former User
                    last edited by

                    @iamlamprey said in Haha the easter bunny has delivered.:

                    The mouseUp event in the top panel has a "stop" button by playing an empty buffer (fix by @ustk above):

                    Engine.playBuffer([], "", 0.0);
                    

                    Hmm this isn't working for me, the file just plays until the end.

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

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @d.healey
                      last edited by

                      @d-healey

                      I'm not actually sure how that code works, since the docs only ask for 2 params, you could try different combinations of the [], "" and 0.0 lol

                      Engine.playBuffer(var bufferData, var callback)
                      

                      If that doesn't work there's a few bits in the source referencing stopping the buffer, specifically

                      void MainController::stopBufferToPlay()
                      

                      which is called when destructing a buffer object, but there isn't a wrapper for it, and I'm not sure how safe it would be using that intentionally

                      d.healeyD 1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @A Former User
                        last edited by

                        @iamlamprey said in Haha the easter bunny has delivered.:

                        @d-healey

                        I'm not actually sure how that code works, since the docs only ask for 2 params, you could try different combinations of the [], "" and 0.0 lol

                        Engine.playBuffer(var bufferData, var callback)
                        

                        Does it work for you?

                        Docs show 3 parameters for me

                        d03bced0-f574-47d9-9e8f-212f2d8fc024-image.png

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

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @d.healey
                          last edited by

                          @d-healey said in Haha the easter bunny has delivered.:

                          Does it work for you?

                          ustk's code above works for me in the context of the Loris Toolkit's preview waveform panel, it was crashing on mouse up, now it fades out the audio/stops playback on mouseup.

                          Docs show 3 parameters for me

                          Ah I always refer to https://docs.hise.audio/scripting/scripting-api/engine/index.html#playbuffer , the HISE api has 3

                          I'm not sure why the buffer isn't stopping for you, I think this might be turning into a @Christoph-Hart problem..

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @A Former User
                            last edited by

                            @iamlamprey Probably a Linux thing. I'll see if I can spot anything in the debugger.

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

                            1 Reply Last reply Reply Quote 0
                            • ?
                              A Former User @Christoph Hart
                              last edited by

                              @Christoph-Hart said in Haha the easter bunny has delivered.:

                              @iamlamprey I'm currently extending the Loris API to include the more advanced functions like collate, distill and sift (love the names), they do address the problem of having too many partials, but as David said, if you reduce them to a common denominator the sound gets a bit more static.

                              Would these extra functions be hard for me to implement? I know you're busy with the MIR stuff atm

                              hisefiloH 1 Reply Last reply Reply Quote 1
                              • hisefiloH
                                hisefilo @A Former User
                                last edited by

                                @iamlamprey also waiting for it! Fingers crossed

                                1 Reply Last reply Reply Quote 1
                                • ?
                                  A Former User
                                  last edited by

                                  New commit does what I was trying to do much better:

                                  //make a var outside the rebuild function's scope
                                  var frequencies; // probably use a better name
                                  
                                  lorisManager.analyse(CURRENT_FILE, rootFreq); // line 125 in LorisProcessor.js
                                  		
                                  frequencies = lorisManager.createSnapshot(CURRENT_FILE, "frequency", 0.1); // new method
                                  

                                  the string parameters are "frequency", "gain", "phase" and "bandwidth", the time parameter is in seconds

                                  The method returns an array you can inspect:

                                  d6d1b4bf-bbdb-4ca1-b4f5-9b928c405d65-image.png

                                  Once the dilate stuff is ready (if it's not already, i haven't checked) it should be pretty simple to reconstruct the sound in a SNEX node, I think the real CPU struggle will be polyphony...

                                  LindonL 1 Reply Last reply Reply Quote 0
                                  • LindonL
                                    Lindon @A Former User
                                    last edited by

                                    @iamlamprey even monophonic would be good..

                                    HISE Development for hire.
                                    www.channelrobot.com

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      dxmachina
                                      last edited by

                                      I haven't been able to get this working lately on my Apple Silicon system (tried native and Rosetta). I did try the latest release dylibs as well as pulling the source and compiling myself. In both cases it's getting caught on:

                                      a5877873-9875-4995-aa4f-48054f0c9b54-CleanShot 2023-07-11 at 12.03.04@2x.png

                                      So getting the "Can't open Loris DLL" message ultimately. I even tried signing the dylibs to avoid that quagmire... so the files are accessible anyway.

                                      I've verified it's trying the correct path on my system, the files are in place.

                                      I was able to build the toolkit project despite this, but it's complaining about function pointers when trying anything.

                                      Would love to get Loris working again. Any ideas?

                                      1 Reply Last reply Reply Quote 0
                                      • Matt_SFM
                                        Matt_SF
                                        last edited by Matt_SF

                                        Hi guys, I finally have some time to try loris but when loading the test project, HISE crashes and I get this error in Xcode :

                                        // Yes, I know it's legal for a unix pathname to contain a backslash, but this assertion is here
                                            // to catch anyone who's trying to run code that was written on Windows with hard-coded path names.
                                            // If that's why you've ended up here, use File::getChildFile() to build your paths instead.
                                            jassert ((! p.containsChar ('\\')) || (p.indexOfChar ('/') >= 0 && p.indexOfChar ('/') < p.indexOfChar ('\\')));
                                        

                                        Ok I understant whant that means but I have no clue about how to solve it...
                                        It happens on PC too

                                        I'm on the commit from July 18th

                                        @Christoph-Hart 😉😉

                                        Develop branch
                                        Win10 & VS17 / Ventura & Xcode 14. 3

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

                                          @Christoph-Hart I'm attempting to compile the loris toolbox project but I'm getting some errors about snex::jit::String.

                                          In file included from /media/dave/Work/Tools/HISE/hi_scripting/hi_scripting_01.cpp:95,
                                                           from ../../JuceLibraryCode/include_hi_scripting_01.cpp:9:
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.cpp:143:63: error: ‘snex::jit::String’ has not been declared
                                            143 | juce::var ScriptLorisManager::createEnvelopes(juce::var file, snex::jit::String parameter, int harmonicIndex)
                                                |                                                               ^~~~
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.cpp:143:11: error: no declaration matches ‘juce::var hise::ScriptLorisManager::createEnvelopes(juce::var, int, int)’
                                            143 | juce::var ScriptLorisManager::createEnvelopes(juce::var file, snex::jit::String parameter, int harmonicIndex)
                                                |           ^~~~~~~~~~~~~~~~~~
                                          In file included from /media/dave/Work/Tools/HISE/hi_scripting/hi_scripting_01.cpp:64,
                                                           from ../../JuceLibraryCode/include_hi_scripting_01.cpp:9:
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.h:76:9: note: candidate is: ‘juce::var hise::ScriptLorisManager::createEnvelopes(juce::var, juce::String, int)’
                                             76 |     var createEnvelopes(var file, String parameter, int harmonicIndex);
                                                |         ^~~~~~~~~~~~~~~
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.h:38:7: note: ‘class hise::ScriptLorisManager’ defined here
                                             38 | class ScriptLorisManager: public ConstScriptingObject,
                                                |       ^~~~~~~~~~~~~~~~~~
                                          In file included from /media/dave/Work/Tools/HISE/hi_scripting/hi_scripting_01.cpp:95,
                                                           from ../../JuceLibraryCode/include_hi_scripting_01.cpp:9:
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.cpp:156:67: error: ‘snex::jit::String’ has not been declared
                                            156 | juce::var ScriptLorisManager::createEnvelopePaths(juce::var file, snex::jit::String parameter, int harmonicIndex)
                                                |                                                                   ^~~~
                                          /media/dave/Work/Tools/HISE/hi_scripting/scripting/api/ScriptLorisManager.cpp:156:11: error: no declaration matches ‘juce::var hise::ScriptLorisManager::createEnvelopePaths(juce::var, int, int)’
                                            156 | juce::var ScriptLorisManager::createEnvelopePaths(juce::var file, snex::jit::String parameter, int harmonicIndex)
                                          
                                          

                                          Also I notice that the latest version of tool box doesn't work in the latest version of HISE. It always synthesises 0 partials, and the preview playback doesn't work with the short samples (cymbals for instance), but does with the longer ones.

                                          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 Loris toolbox is still broken

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

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

                                            13

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.2k

                                            Posts