Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Elezeid
    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 21
    • Groups 0

    Elezeid

    @Elezeid

    4
    Reputation
    3
    Profile views
    21
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    Elezeid Unfollow Follow

    Best posts made by Elezeid

    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      In case anyone else should ever run into this problem here is the solution (I'm kicking myself).

      The Expansion Selector has to be higher than the sample map selector in the UI tree.
      That's it.

      That's why the minimal project worked, and that change seems to have completely fixed it in my main project.

      Thanks again for all your help. Hopefully this will help someone in the future!

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      Thanks for your willingness to help David. I just made a dummy project for testing. Here's what happened:

      Factory: 2 presets and 2 sample maps
      Expansion 1: 2 presets and 2 sample maps
      Expansion 2: 2 presets and 2 sample maps

      Exported to VST3, created a DAW project and...

      No issue. The problem is totally absent! I'm not completely certain as to why, but I suspect maybe it has something to do with where the code is in the hierarchy.

      Thanks for guiding me through this, I think I have the necessary tools to get across the finish line without pestering you any further! Just in case, here is the code for the dummy plugin.

      Content.getComponent("knbDum").setControlCallback(onknbDumControl);
      
      // The sampler references
      const var Sampler1 = Synth.getSampler("Sampler1");
      
      // The ComboBoxes for Expansions
      const var ExpansionSelector = Content.getComponent("ExpansionSelector");
      
      // The ComboBoxes for SampleMaps
      const var cmbSampleMap = Content.getComponent("cmbSampleMap");
      
      // Expansions Handler Create
      const var expHandler = Engine.createExpansionHandler();
      
      // Expansion Types Allowed
      expHandler.setAllowedExpansionTypes([expHandler.FileBased, 
                                           expHandler.Intermediate, 
                                           expHandler.Encrypted]);
                                           
      // Expansions list retrieve
      const var expansionList = expHandler.getExpansionList();
      
      
      // Extract names of the expansions
      const var expansionNames = [];
      
      // Add “Factory Content” as the first option
      expansionNames.push("Factory Content");
      
      // Add all available expansions
      for (e in expansionList)
      {
          expansionNames.push(e.getProperties().Name);
      }
      
      // Fill the Expansion ComboBox
      ExpansionSelector.set("items", expansionNames.join("\n"));
      
      // Global variable for saving the current expansion
      const var currentExpansion = -1;
      
      // Help function for updating all SampleMap ComboBoxes
      inline function updateAllSampleMapComboBoxes()
      {
          // Empty all SampleMap ComboBoxes
          cmbSampleMap.set("items", "");
          
          local actualValue = ExpansionSelector.getValue() - 1;
          
          if (actualValue == 0) // "Factory Content"
          {
              // Use the embedded SampleMaps for “Factory Content”
              local maps = Sampler.getSampleMapList();
              local mapItems = maps.join("\n");
              cmbSampleMap.set("items", mapItems);
          }
          else if (actualValue > 0 && actualValue <= expansionList.length)
          {
              // For expansion, load the SampleMaps of the selected expansion
              local exp = expansionList[actualValue - 1]; // -1 because 0-based index
              
              // Set the expansion as active
              Engine.setCurrentExpansion(exp.getProperties().Name);
              
              // Get the SampleMap list of this expansion
              local maps = exp.getSampleMapList();
              local mapItems = maps.join("\n");
              
              // Set the displayed names in all ComboBoxes
              cmbSampleMap.set("items", mapItems);
          }
      }
      
      // Callback for Expansions-ComboBox
      inline function onExpansionSelectorControl(component, value)
      {
          updateAllSampleMapComboBoxes();
      }
      
      // Callbacks for SampleMap-ComboBoxes
      inline function oncmbSampleMapControl(component, value)
      {
          if (value > 0)
          {
              // Get the SampleMap name from the ComboBox
              local mapName = component.getItemText();
              
              // Load the SampleMap into Sampler1
              Sampler1.loadSampleMap(mapName);
          }
      }
      
      
      // Set the callbacks
      ExpansionSelector.setControlCallback(onExpansionSelectorControl);
      cmbSampleMap.setControlCallback(oncmbSampleMapControl);
      
      // Initialize with Factory Content
      //ExpansionSelector.setValue(1); // Sets to first entry (1-based)
      //ExpansionSelector.changed();
      

      Thanks again! If I run into more hurdles with this issue I'll return to this thread.

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Memory leak with Engine.loadAudioFilesIntoPool

      @d-healey Sure thing. Here it is without the IRs. Feel free to throw any old audio files in there.

      Convolution -Test.zip

      posted in Scripting
      ElezeidE
      Elezeid

    Latest posts made by Elezeid

    • RE: Romplur vs Maize Sampler still HISE Rocks

      I started with Maize Sampler and I still think it's a great little tool for getting started making your own sample library VSTs. It's a fabulous entry point.

      Romplur is a poorly executed mess and a complete scam.

      There's another one in development right now called CREATR. I can't quite get a read on it, but I'll keep my eyes open.

      For those of us who don't have a background in programming, HISE can be a little tricky to get going, but once you're there, there's absolutely nothing like it. That degree of flexibility and customization along with a lot of pre-programmed tools right out of the box makes it the obvious choice. There are occasional hiccups, but even with those factored in it's a remarkable framework for amateurs and experts. I really can't recommend it enough.

      posted in Blog Entries
      ElezeidE
      Elezeid
    • RE: Memory leak with Engine.loadAudioFilesIntoPool

      @d-healey Sure thing. Here it is without the IRs. Feel free to throw any old audio files in there.

      Convolution -Test.zip

      posted in Scripting
      ElezeidE
      Elezeid
    • RE: Memory leak with Engine.loadAudioFilesIntoPool

      @d-healey Thanks David,

      I tried this and unfortunately the behavior is the same. Out of curiosity, I checked the total file size of my collection of Impulse responses, and wouldn't you know it? That's almost exactly how much the RAM increases by every time a preset is selected!

      It looks to me like

      Engine.loadAudioFilesIntoPool();
      

      Is running every time a preset is selected, (regardless of whether saveInPreset is active in the project).

      What would be really great is if there was such a function as

      Engine.purgeAudioFilesFromPool();
      

      Or something to that effect. If there was, I could simply put it at the top of the hierarchy so that onInit any lingering audio files are kicked out in advance before loadAudioFilesIntoPool runs.

      posted in Scripting
      ElezeidE
      Elezeid
    • RE: Memory leak with Engine.loadAudioFilesIntoPool

      @d-healey

      I made a minimal project to test the issue and it is indeed present.

      Here is the entire onInit:

      Content.makeFrontInterface(600, 600);
      
      const var ConvolutionReverb1 = Synth.getAudioSampleProcessor("Convolution Reverb1");
      
      const irs = Engine.loadAudioFilesIntoPool();
      
      //cmbIR
      const cmbIR = Content.getComponent("cmbIR");
      
      
      inline function oncmbIRControl(component, value)
      {
      	if (value > 0)
      		ConvolutionReverb1.setFile(irs[value - 1]);
      };
      
      Content.getComponent("cmbIR").setControlCallback(oncmbIRControl);
      
      cmbIR.set("items", "");
      
      for (x in irs)
      	cmbIR.addItem(x.replace("{PROJECT_FOLDER}").replace(".wav"));
      

      I've tested this in multiple DAWs as well as on Mac and PC and the memory leak remains. I tried disabling 'saveInPreset' but that didn't help either. The issue is especially egregious when changing presets as well. If you just cycle through presets you can see the RAM load growing with each click.

      David suggested putting a check in the combo box's callback to see if the selected IR is already loaded, and if it is don't load it again. I think this is a great idea, but I don't quite know how to go about that.

      posted in Scripting
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      In case anyone else should ever run into this problem here is the solution (I'm kicking myself).

      The Expansion Selector has to be higher than the sample map selector in the UI tree.
      That's it.

      That's why the minimal project worked, and that change seems to have completely fixed it in my main project.

      Thanks again for all your help. Hopefully this will help someone in the future!

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      Thanks for your willingness to help David. I just made a dummy project for testing. Here's what happened:

      Factory: 2 presets and 2 sample maps
      Expansion 1: 2 presets and 2 sample maps
      Expansion 2: 2 presets and 2 sample maps

      Exported to VST3, created a DAW project and...

      No issue. The problem is totally absent! I'm not completely certain as to why, but I suspect maybe it has something to do with where the code is in the hierarchy.

      Thanks for guiding me through this, I think I have the necessary tools to get across the finish line without pestering you any further! Just in case, here is the code for the dummy plugin.

      Content.getComponent("knbDum").setControlCallback(onknbDumControl);
      
      // The sampler references
      const var Sampler1 = Synth.getSampler("Sampler1");
      
      // The ComboBoxes for Expansions
      const var ExpansionSelector = Content.getComponent("ExpansionSelector");
      
      // The ComboBoxes for SampleMaps
      const var cmbSampleMap = Content.getComponent("cmbSampleMap");
      
      // Expansions Handler Create
      const var expHandler = Engine.createExpansionHandler();
      
      // Expansion Types Allowed
      expHandler.setAllowedExpansionTypes([expHandler.FileBased, 
                                           expHandler.Intermediate, 
                                           expHandler.Encrypted]);
                                           
      // Expansions list retrieve
      const var expansionList = expHandler.getExpansionList();
      
      
      // Extract names of the expansions
      const var expansionNames = [];
      
      // Add “Factory Content” as the first option
      expansionNames.push("Factory Content");
      
      // Add all available expansions
      for (e in expansionList)
      {
          expansionNames.push(e.getProperties().Name);
      }
      
      // Fill the Expansion ComboBox
      ExpansionSelector.set("items", expansionNames.join("\n"));
      
      // Global variable for saving the current expansion
      const var currentExpansion = -1;
      
      // Help function for updating all SampleMap ComboBoxes
      inline function updateAllSampleMapComboBoxes()
      {
          // Empty all SampleMap ComboBoxes
          cmbSampleMap.set("items", "");
          
          local actualValue = ExpansionSelector.getValue() - 1;
          
          if (actualValue == 0) // "Factory Content"
          {
              // Use the embedded SampleMaps for “Factory Content”
              local maps = Sampler.getSampleMapList();
              local mapItems = maps.join("\n");
              cmbSampleMap.set("items", mapItems);
          }
          else if (actualValue > 0 && actualValue <= expansionList.length)
          {
              // For expansion, load the SampleMaps of the selected expansion
              local exp = expansionList[actualValue - 1]; // -1 because 0-based index
              
              // Set the expansion as active
              Engine.setCurrentExpansion(exp.getProperties().Name);
              
              // Get the SampleMap list of this expansion
              local maps = exp.getSampleMapList();
              local mapItems = maps.join("\n");
              
              // Set the displayed names in all ComboBoxes
              cmbSampleMap.set("items", mapItems);
          }
      }
      
      // Callback for Expansions-ComboBox
      inline function onExpansionSelectorControl(component, value)
      {
          updateAllSampleMapComboBoxes();
      }
      
      // Callbacks for SampleMap-ComboBoxes
      inline function oncmbSampleMapControl(component, value)
      {
          if (value > 0)
          {
              // Get the SampleMap name from the ComboBox
              local mapName = component.getItemText();
              
              // Load the SampleMap into Sampler1
              Sampler1.loadSampleMap(mapName);
          }
      }
      
      
      // Set the callbacks
      ExpansionSelector.setControlCallback(onExpansionSelectorControl);
      cmbSampleMap.setControlCallback(oncmbSampleMapControl);
      
      // Initialize with Factory Content
      //ExpansionSelector.setValue(1); // Sets to first entry (1-based)
      //ExpansionSelector.changed();
      

      Thanks again! If I run into more hurdles with this issue I'll return to this thread.

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      Yes exactly, the combo boxes that populate with the samplemaps are showing the correct content, but the audio remains factory unless you choose a preset from the expansion - even if the current preset is already from the expansion. It's like the plugin can't access samplemaps from expansions until the user manually selects them.

      So in short, it looks like this:

      1. User chooses a preset from an expansion
      2. Expansion loads and works correctly (including samples/samplemaps)
      3. User saves their project and closes the DAW
      4. User opens the DAW and loads the same project
      5. Plugin loads all parameters correctly on the interface, including expansion sample maps
      6. Audio produced by plugin is from Factory sample maps
      7. User clicks on the preset that is already currently selected
      8. Correct samples now play (rinse and repeat)
      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      Thanks David. I'm happy to do this, though I want to point out that the issue that I'm having is very specific to samples. My plugin is a rompler essentially, and the trouble is that the wrong samplemaps are loading in. Without a sampler, there would be no way for me to debug this.

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey

      This comes after things like expansion handler, samplers, and their associated combo boxes. Though I think it's worth mentioning that even with this code commented out entirely, the issue remains.

      posted in General Questions
      ElezeidE
      Elezeid
    • RE: Expansion Content not loading in DAW project file?

      @d-healey Yes, and that works as intended.

      It's only when saving a project within a DAW and reopening it, the sound produced by the plugin comes from the factory content - despite the expansion content being visibly loaded in the samplemap dropdowns. The sound produced is only updated if the user clicks the already selected preset (or another preset).

      posted in General Questions
      ElezeidE
      Elezeid