HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. tomekslesicki
    3. Best
    T
    • Profile
    • Following 0
    • Followers 3
    • Topics 99
    • Posts 543
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Merry Christmas

      Happy holidays, guys!

      posted in General Questions
      T
      tomekslesicki
    • Simplified install - MY SOLUTION

      Hey guys! You helped me a lot as I had questions on my HISE journey and there's something I'd like to share with you:

      THE PROBLEM
      One of the most confusing (read: support-email-generating) things about HISE is the sample folder location. Unlike Kontakt, it doesn't look into subfolders. Plus, since HISE exports the plugins as standard formats, chances are, some people who'd get the instruments might not have had any previous experience with samples or Kontakt and would be surprised that after they've installed the plugin, things don't work right away.

      SO...
      I wrote a script (ok, two in fact - one is for Mac, the other for Windows) that solves this by auto-generating the link file and placing in the correct folder. When the user runs the installer, there's an option to locate the samples automatically. There's only one requirement for this to work - the samples need to be distributed along with the installer. I'm using Pulse to simplify the download process and it's perfect for that. The most recent versions added update functionality so if a new version of the plugin is out, it will be downloaded into the samples folder and auto-run. I'm sure there are other solutions out there but it's just something that I'm using.

      HOW TO: MAC
      Create a text file with .sh extension (so for example, yourinstrument_locatesamples.sh) and set it as a post-install script in Whitebox Packages. I'm using it as a separate component named locate samples so that the user has an option to have it selected or not.

      Here's the script:

      #!/bin/sh
      
      instrumentname="Blisko Cello"
      devname="Felt Instruments"
      
      FILE="$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
      if test -n "$FILE"; then
      		rm -R "$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
      
      fi
      
      installer="${instrumentname}".pkg
      mystring=$1
      echo basename: $(basename "${mystring}")
      echo basename + remove "${installer}": $(basename "${mystring}" "${installer}")
      sudo echo -n $(dirname "${mystring}") > "$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
      
      
      exit 0
      

      You only have to adapt the first two lines - instrumentname and devname. Export the installer as instrumentname.pkg and you should be fine.

      HOW TO: WINDOWS
      I'm using innosetup on Windows. Here's the whole script:

      [Setup]
      
      #define AppName "Blisko Cello"
      #define AppVersion "1.1.2"
      #define DevDir "Felt Instruments"
      PrivilegesRequired=admin
      AppName={#AppName}
      AppVersion={#AppVersion}
      SignTool=signtool
      SignedUninstaller=yes
      
      DefaultDirName={pf}\{#DevDir}\{#AppName}
      DefaultGroupName={#AppName}
      Compression=lzma2
      SolidCompression=yes
      OutputDir=.\installerbuild
      ArchitecturesInstallIn64BitMode=x64
      OutputBaseFilename={#AppName}
      LicenseFile=".\installerAssets\EULA.rtf"
      WizardSmallImageFile=".\installerAssets\install_logo.bmp"
      
      
      
      ; BANNER
      WizardImageFile=".\installerAssets\banner_blisko_cello.bmp"
      SetupIconFile=".\installerAssets\windows_icon.ico"
      DisableWelcomePage=no
      DisableDirPage=yes
      DisableProgramGroupPage=yes
      
      
      SetupLogging=yes
      ChangesAssociations=no
      
      [Types]
      Name: "full"; Description: "Full installation"
      Name: "custom"; Description: "Custom installation"; Flags: iscustom
      
      [Dirs]
      Name: "{app}\"; Permissions: users-modify powerusers-modify admins-modify system-modify
      
      [Components]
      Name: "vst2_32"; Description: "{#AppName} {#AppVersion} 32-bit VST Plugin"; Types: full custom;
      Name: "vst2_64"; Description: "{#AppName} {#AppVersion} 64-bit VST Plugin"; Types: full custom; Check: Is64BitInstallMode; 
      Name: "aax"; Description: "{#AppName} {#AppVersion} AAX Plugin"; Types: full custom; Check: Is64BitInstallMode;
      Name: "locatesamples"; Description: "Locate samples (recommended!)"; Types: full custom;
      
      
      
      
      
      [Files]
      
      ; VST
      Source: "{#AppName} x86.dll"; DestDir: "{code:GetVST2Dir_32}"; Flags: ignoreversion; Components: vst2_32; Check: not Is64BitInstallMode
      
      Source: "{#AppName} x86.dll"; DestDir: "{code:GetVST2Dir_32}\{#DevDir}"; Flags: ignoreversion; Components: vst2_32; Check: Is64BitInstallMode
      Source: "{#AppName} x64.dll"; DestDir: "{code:GetVST2Dir_64}\{#DevDir}"; Flags: ignoreversion; Components: vst2_64; Check: Is64BitInstallMode
      
      ;BEGIN_AAX
      Source: "{#AppName}.aaxplugin\*"; DestDir: "{commonpf}\Common Files\Avid\Audio\Plug-Ins\{#AppName}.aaxplugin"; Flags:ignoreversion createallsubdirs recursesubdirs overwritereadonly; Components: aax
      ;END_AAX
      
      ; PRESETS
      Source: "{#AppName} UserPresets\*"; DestDir: "{userappdata}\{#DevDir}\{#AppName}\User Presets"; Flags: ignoreversion recursesubdirs;
      
      
      ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
      
      
      
      
      
      
      
      
      
      
      [Icons]
      Name: "{group}\Uninstall {#AppName}"; Filename: "{app}\Uninstall{#AppName}.exe"    
      
      [Code]
      var
        OkToCopyLog : Boolean;
        VST2DirPage_32: TInputDirWizardPage;
        VST2DirPage_64: TInputDirWizardPage;
        SamplesDirPage: TInputDirWizardPage;
        SampleLocation: String;
        AppDataFolder: String;
      
      
      function SampleFolderLocated(): boolean;
      begin
        result := FileExists(ExpandConstant('{userappdata}\{#DevDir}\{#AppName}\LinkWindows')) and (not IsComponentSelected('locatesamples'));
      end;
      
      
      procedure InitializeWizard;
      
      begin
      
        if IsWin64 then begin
          VST2DirPage_64 := CreateInputDirPage(wpSelectDir,
          'Confirm 64-Bit VST2 Plugin Directory', '',
          'Select the folder in which setup should install the 64-bit VST2 Plugin(you can choose not to install this version later),  then click Next.',
          False, '');
          VST2DirPage_64.Add('');
          VST2DirPage_64.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\');
      
          VST2DirPage_32 := CreateInputDirPage(wpSelectDir,
            'Confirm 32-Bit VST2 Plugin Directory', '',
            'Select the folder in which setup should install the 32-bit VST2 Plugin(you can choose not to install this version later), then click Next.',
            False, '');
          VST2DirPage_32.Add('');
          VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\WOW6432NODE\VST,VSTPluginsPath|{pf32}\Steinberg\VSTPlugins}\');
      
        end else begin
          VST2DirPage_32 := CreateInputDirPage(wpSelectDir,
            'Confirm 32-Bit VST2 Plugin Directory', '',
            'Select the folder in which setup should install the 32-bit VST2 Plugin,  then click Next.',
            False, '');
          VST2DirPage_32.Add('');
          VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\');
        end;
      end;
      
      function GetVST2Dir_32(Param: String): String;
      begin
        Result := VST2DirPage_32.Values[0]
      end;
      
      function GetVST2Dir_64(Param: String): String;
      begin
        Result := VST2DirPage_64.Values[0]
      end;
      
      function GetSamplesDir(Param: String): String;
      begin
        Result := SamplesDirPage.Values[0]
      end;
      
      procedure CurStepChanged(CurStep: TSetupStep);
      
      
      
      begin
        if CurStep = ssDone then
          OkToCopyLog := True;
      
          if not SampleFolderLocated() then begin
          SampleLocation := ExpandConstant('{src}');
          AppDataFolder := ExpandConstant('{userappdata}\{#DevDir}\{#AppName}\LinkWindows');
          SaveStringToFile(AppDataFolder, SampleLocation, False);
          end else
      end;
      
      procedure DeinitializeSetup();
      
      begin
        if OkToCopyLog then
          FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE);
        RestartReplace (ExpandConstant ('{log}'), '');
      end;
      
      [UninstallDelete]
      Type: files; Name: "{app}\InstallationLogFile.log"
      

      What you need to edit is the first block and the banner .bmp file if you're using that.

      That's all folks. Hopefully it will be useful to some of you!

      posted in Presets / Scripts / Ideas
      T
      tomekslesicki
    • RE: "The sample directory does not exist" - how can I change this text?

      Ok, to hide the popup, you need to comment out line 130 in FrontentBar.cpp file (PresetHandler::showMessageWindow("Sample Folder changed).

      The "The sample directory does not exist" text can be changed by editing line 197 in ModulatorSamplerData.cpp (the one below "sampler->getMainController()->sendOverlayMessage(DeactiveOverlay::State::CustomErrorMessage,").

      Hope this helps somebody! :-)

      posted in General Questions
      T
      tomekslesicki
    • RE: PLUGIN DELIVERY: Latest & Greatest?

      I've been using Pulse since 2019, and I'm the guy who worked with them on native HISE support. Recently the ownership changed, and even though we - people who were using Pulse - were told that the terms of operation are going to stay unchanged, they informed me that they'll actually change the terms for me anyway. It was 10th of March or so, and they said something like "hey, we're changing the terms for you, and they'll affect your pricing from March 1st". Not a very respectful way to do business, in my opinion.

      Also, keep in mind that all Pulse does is it gets the multi-zip archives from the server and unpacks them. There's no license management or anything like that.

      Anyway - I'm using a custom installer now I built with HISE. You can pretty much replicate all Pulse does with this @d-healey (thank you!) tutorial: https://www.youtube.com/watch?v=mqGsqJoBxiQ

      posted in General Questions
      T
      tomekslesicki
    • RE: The definitive feature request & bug fix roadmap

      Feature request: global modulators on FX plugins!

      Done: https://github.com/christophhart/HISE/commit/7028aa13c3c5612bf152620a3d1a8ca94702bc8b

      posted in Feature Requests
      T
      tomekslesicki
    • RE: The definitive feature request & bug fix roadmap

      Bug report: interruptions in audio when using convolution fx plugins and Cubase’s Direct Offline Processing: https://forum.hise.audio/topic/4247/cubase-direct-offline-processing-audio-dropouts-on-fx-plugins/9

      posted in Feature Requests
      T
      tomekslesicki
    • RE: Tell me about NKS and MPE in HISE

      @ustk I’d add to that that the experience of playing an MPE keyboard is way different than your standard keys + mod wheel, so I’d recommend getting at least the Seaboard Block to get it right for the users

      posted in General Questions
      T
      tomekslesicki
    • RE: HISE not building M1 architecture by default when exporting

      @Casey-Kolb I think it's because AAX doesn't support M1 yet

      posted in General Questions
      T
      tomekslesicki
    • RE: Packages not updating files on OSX 10.12

      I figured it out and thought I'd post the solution here, maybe you'll find it useful. Create a file called YourInstrument.sh (I used SublimeText to do that but I guess you can create it in whatever really). Load it into Packages as a pre-install script. The file should contain the following code:

      #!/bin/sh
      
      FILE=$HOME/Library/Audio/Plug-Ins/Components/YourFile.component
      if test -n "$FILE"; then
      		rm -R $HOME/Library/Audio/Plug-Ins/Components/YourFile.component
      
      fi
      
      exit 0
      

      If you have separate packages for AU and VST files, each can have its own .sh script with a path to the file.

      What the script does is it removes the specified file before the install progresses. Done!

      posted in General Questions
      T
      tomekslesicki
    • RE: Phaselocking 2025 and other sampler related discussions

      @Christoph-Hart will it also be possible to disable the crossfade after the transition and stay on the legato transition sample? I’m thinking about a scenario where the samples are edited so that the transition sample also contains the sustian portion to loop.

      posted in General Questions
      T
      tomekslesicki
    • RE: Multichannel hardcoded Poly FX build can't be opened in a DAW

      I found out that if I put NUM_MAX_CHANNELS also in the project settings, everything works just fine... :-)

      posted in Bug Reports
      T
      tomekslesicki
    • RE: The definitive feature request & bug fix roadmap

      Bug: convolution reverb volume changes when sample rate is changed.

      posted in Feature Requests
      T
      tomekslesicki
    • RE: The definitive feature request & bug fix roadmap

      Bug: distortion in the high end when using IPP and convolution reverb. It’s there even when setting the minimum sample rate to 9600. Makes IPP unusable for serious work. When HISE is built without IPP, there’s no such issue.

      posted in Feature Requests
      T
      tomekslesicki
    • Just a warning: install sh scripts and Ventura

      I’m dropping this as a note becasue it might be helpful to you guys: it seems like in some cases, installing the plugins from a pkg that uses a post .sh script might fail on Ventura, regardless of sudo permissions. I only got this report from one customer at this point but it’s happening on two of his machines. I can’t reproduce it on a system upgraded from the previous version of macOS but removing the sh scripts from the installer solves the issue.

      posted in Scripting
      T
      tomekslesicki
    • RE: Round Corners for Floating Tiles? (FilterDisplay)

      @Straticah @d-healey it would be great to have an option to take the alpha mask from another component. This is just one use case, but I can think of a gazillion others.

      posted in General Questions
      T
      tomekslesicki
    • RE: Tell me about NKS and MPE in HISE

      @d-healey I can only chime on the MPE thing. The plugins will support MPE without any additional setup, you just need to add MPE modulators to the parameters you want them to work with. On my plugins, I have a MPE mode switch, which basically disables CC1 modulators and enables MPE ones.

      posted in General Questions
      T
      tomekslesicki
    • RE: Happy Holidays..

      Happy holidays and best wishes for the new year! And thanks @Christoph-Hart for your amazing work!

      posted in General Questions
      T
      tomekslesicki
    • RE: Is it possible....

      @lalalandsynth you can use global modulators outside of the scriptnode, then get them into it with the global modulation node and then - if you want to output that - you can use a global cable node.

      posted in General Questions
      T
      tomekslesicki
    • RE: Change panel transparency?

      @Matt_SF Thank you! I'm familiar with blending modes but that little snipped helped me to get this to work in Hise :-)

      posted in General Questions
      T
      tomekslesicki
    • RE: HISE Compatibility with Windows 11 and Cubase 12

      @Christoph-Hart I think only Reason doesn’t support VST3 yet, but they’re working on it. I don’t think it’s possible for VST3 to just replace VST2 in older sessions - in Ableton for example, each plugin format is treated as a separate being. So the older sessions would still use VST2 and the new ones would be able to use the updated VST3 plugins, which is not a bad solution in my book.

      posted in General Questions
      T
      tomekslesicki