HISE Logo Forum
    • Categories
    • Register
    • Login

    Setting(flag) to not have the plugin start the sample install process when the link file is missing

    Scheduled Pinned Locked Moved General Questions
    47 Posts 5 Posters 2.4k 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.
    • DanHD
      DanH @virtuscapeaudio
      last edited by

      @virtuscapeaudio I think with a product of that size you can forget about letting the user choose a sample location. I do and have never had any complaints. It will certainly make your life easier!

      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
      https://dhplugins.com/ | https://dcbreaks.com/
      London, UK

      virtuscapeaudioV 1 Reply Last reply Reply Quote 0
      • virtuscapeaudioV
        virtuscapeaudio @DanH
        last edited by virtuscapeaudio

        @DanH Yes! I just have no idea where to begin to do that at this point..any tips?

        DanHD 1 Reply Last reply Reply Quote 0
        • DanHD
          DanH @virtuscapeaudio
          last edited by

          @virtuscapeaudio So you'll need to get your head around making installers. Whitebox Packages for OSX and InnoSetup for Windows will create these for you. Have you searched the forum yet? There are scripts and explanations available for both IIRC.

          Essentially you create an installer that installs the plug-in files and the samples. If you know where the samples are going to be on each system then you can simply install the Link file which contains the location of the samples (and not have to worry about making scripts to handle creating links files in the installers themselves).

          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
          https://dhplugins.com/ | https://dcbreaks.com/
          London, UK

          virtuscapeaudioV 1 Reply Last reply Reply Quote 0
          • virtuscapeaudioV
            virtuscapeaudio @DanH
            last edited by

            @DanH Yes I currently use Packages. So with the LinkFile I can place everything in the users HOME/Library/Appplication supp.., etc, folder instead of their USER folder? Seems simple enough. I'll give it a go

            DanHD 1 Reply Last reply Reply Quote 0
            • DanHD
              DanH @virtuscapeaudio
              last edited by

              @virtuscapeaudio well yes but because your plug-in’s system files are in the system library rather than the user library you’ll need a shell script which copies the files from the user library to the system library post-install, as packages can’t actually install files there directly. I think this has been covered in the forum as well.

              Have you got an apple developer account?

              DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
              https://dhplugins.com/ | https://dcbreaks.com/
              London, UK

              virtuscapeaudioV 1 Reply Last reply Reply Quote 0
              • virtuscapeaudioV
                virtuscapeaudio @DanH
                last edited by virtuscapeaudio

                @DanH ChatGPT helped me cook this up based on the Lunacy Audio CUBE (would love to meet the dev here! ;) ) script which I modified..does this look right?

                #!/bin/sh
                // Write sample location selected by user to LinkOSX for HISE

                //Specify the username
                username="your_username"

                // First, remove LinkOSX file if it exists
                instrumentname="Rhodecase88"
                devname="Virtuscape Audio"

                FILE="~${username}/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
                if [ -e "$FILE" ]; then
                rm -R "$FILE"
                fi

                cp -R "$HOME/Library/Application Support/${devname}/${instrumentname}" "/Library/Application Support/${devname}/"

                // Second, use the environment variable from WhiteBox Packages to write the destination to a file
                destfile="~${username}/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
                printf "%s/Lunacy Audio/CUBE/Samples" "$DSTROOT" > "$destfile"

                d.healeyD DanHD 2 Replies Last reply Reply Quote 0
                • d.healeyD
                  d.healey @virtuscapeaudio
                  last edited by

                  @virtuscapeaudio As far as I know // doesn't create comments in a bash script.

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

                  virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                  • virtuscapeaudioV
                    virtuscapeaudio @d.healey
                    last edited by

                    @d-healey gotcha! i changed the comments from # to // because when i submit the forum post they were HUGE and underlined fonts lol and my adhd said...I need symmetry

                    1 Reply Last reply Reply Quote 0
                    • DanHD
                      DanH @virtuscapeaudio
                      last edited by

                      @virtuscapeaudio this script is for making the link file which I just said you don’t need to do 😂.

                      But you could just let users choose where to store the samples and use this script after all.

                      Better you try and understand what the scripts doing and how it works - it’s not too tricky.

                      Did you find any other scripts for packages on the forum?

                      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                      https://dhplugins.com/ | https://dcbreaks.com/
                      London, UK

                      virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                      • virtuscapeaudioV
                        virtuscapeaudio @DanH
                        last edited by

                        @DanH OOOohhhh... my mistake.. so If im understanding this correctly, the process goes:

                        Packages project:

                        1. place plug-in files and ch1 files

                        2. Include a LinkOSX file and place it ... where exactly?

                        DanHD 1 Reply Last reply Reply Quote 0
                        • DanHD
                          DanH @virtuscapeaudio
                          last edited by

                          @virtuscapeaudio have you made the plugin yet? Exported and tested in a DAW?

                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                          https://dhplugins.com/ | https://dcbreaks.com/
                          London, UK

                          virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                          • virtuscapeaudioV
                            virtuscapeaudio @DanH
                            last edited by

                            @DanH yes we are quietly live ;)

                            www.virtuscapeaudio.com

                            I'm just trying to get this together before make a huge announcement, etc

                            DanHD 1 Reply Last reply Reply Quote 0
                            • DanHD
                              DanH @virtuscapeaudio
                              last edited by

                              @virtuscapeaudio well you must know where the link file is that tells the plugin where the samples are? Right? 😆 That's where you'll need to install the link file on other people's systems.

                              DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                              https://dhplugins.com/ | https://dcbreaks.com/
                              London, UK

                              virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                              • virtuscapeaudioV
                                virtuscapeaudio @DanH
                                last edited by

                                @DanH not enough coffee apparently haha. Thanks so much for taking the time to help!

                                DanHD 1 Reply Last reply Reply Quote 0
                                • DanHD
                                  DanH @virtuscapeaudio
                                  last edited by

                                  @virtuscapeaudio have a look through this thread, I think I got most of my script from here:

                                  Link Preview Image
                                  Mac Installer issue that effects (I think) all of us

                                  @dustbro I'm having one serious issue with this approach and I wonder if you've encountered this as well. When I rsync the application folder like above, if ...

                                  favicon

                                  Forum (forum.hise.audio)

                                  DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                  https://dhplugins.com/ | https://dcbreaks.com/
                                  London, UK

                                  virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                                  • virtuscapeaudioV
                                    virtuscapeaudio @DanH
                                    last edited by virtuscapeaudio

                                    @DanH here's where I'm at with this...I'm manually copying the Samples folder and testing on my system before packaging everything up

                                    With HISE I set the Redirect Sample Folder to: /Libary/Application Support/Virtuscape Audio/Rhodecase88/Samples

                                    When I open the either AU/VST3 version it creates a NEW LinkOSX file at ~/Library/Application Support/Virtuscape Audio/Rhodecase88 (perhaps this is from linking previous versions from testing where i indeed was using ~/Library

                                    I'm struggling to see where I place a LinkOSX as Packages can only go to one location.

                                    ...trying this approach as most plug-ins by default are in /Library and not ~/Library

                                    OSMonterey 12.2.1

                                    virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                                    • virtuscapeaudioV
                                      virtuscapeaudio @virtuscapeaudio
                                      last edited by

                                      @virtuscapeaudio could I perhaps define a set location for the Samples that I place in /Library in packages?

                                      //Set Default Sample Location
                                      const defaultSampleLocation = "/Library/Application Support/Virtuscape Audio/Rhodecase88/Samples";

                                      ?

                                      virtuscapeaudioV 1 Reply Last reply Reply Quote 0
                                      • virtuscapeaudioV
                                        virtuscapeaudio @virtuscapeaudio
                                        last edited by

                                        @virtuscapeaudio I see this but nothing in the documentation about it...Any ideas?
                                        @d-healey

                                        Screen Shot 2023-11-13 at 4.02.11 PM.png

                                        Would that be relevant to this situation at all?

                                        DanHD 1 Reply Last reply Reply Quote 0
                                        • DanHD
                                          DanH @virtuscapeaudio
                                          last edited by DanH

                                          @virtuscapeaudio I haven't seen setSampleFolder API before - have you tried it? Looks promising because then you just have one line of script in your onInit and you're done (I'm assuming it would create / amend the link file in the plugin's system folder).

                                          Otherwise....

                                          HISE plugins will always have their system folder in ~/Library/Application Support/DevName. Other devs do it in ~/Library too, and some use /Library - there's no right or wrong. (Perhaps @Christoph could introduce a flag so we can choose /Library because the ~/Library is a pain 😆 ).

                                          So when you open a HISE plugin for the first time in your DAW it will create a folder inside ~/Library/Application Support/DevName, and within that plugin folder it will then create a link file (if it's an instrument with a sampler inside), an Expansions folder, General Settings.xml and a User Presets Folder. The link file will probably be a generic path like User/Shared/Music/PluginName/Samples or something.

                                          If you don't want to use the HISE sample installer system (which installs the samples at a User defined location and creates the link file in the plugin system folder) then you have to roll your own.

                                          Currently the options for OSX are (afaik):

                                          1. Create an App in HISE which can download, and install the samples anywhere the user likes, and write the link file (you could also get your plugin to do this when opened for the first time - but normally a poor user experience),

                                          2. Write a .sh shell post install script for Packages which, after the samples have been installed, either creates a link file (for user defined) or copies a premade link file (pre-defined) into the Plugin's system folder. The two scripts are quite different.

                                          For Pre-Defined you set the Packages payload to deliver the files (or just the pre-made LinkFile) to the /Library/Application Support/DevName/PluginName location - Basically you create the Plugin's system folder in the wrong library (because Packages cannot access ~/Library). The post install script then copies that folder to the correct ~/Library location, and then deletes the now defunct /Library folder you just installed. Now, this method is useful for including other data sets, like LFO presets, Arp presets, audio files etc, as well as pre-defined Link files, because before the User even opens the plugin, all the data is positioned in the plugin's system folder, ready to go (which is what you want with the samples).

                                          For User-Defined the shell script will take the path / location that the User chose during the install process (obviously set up the Packages project to allow the User to change install location), and then use that path to create the Link file (and the Plugin's system folder if necessary) in the ~/Library location. The MAJOR caveat with this method (at least for me because I haven't come across a way to get around this) is that you will need to define a default location for the samples within the shell script, and that if the User defines a different location for the samples then that path (let's say they chose an external drive called Audio) will always begin with the default location. So, for example, the default location has to be somewhere on the User's main hard drive, so lets say User/Shared/Music/DevName/PluginName/Samples - now when you install the samples to the Audio drive, rather than just having the location as Audio/PluginName/Samples it's actually the full default path on top of Audio, so, Audio/User/Shared/Music/DevName/PluginName/Samples, which makes little sense. IF SOMEONE KNOWS HOW TO GET AROUND THIS PLEASE SHARE! 😆

                                          So a Pre-Defined shell script will look something like this (where you set the payload with the link file and anything else to install in /Library then copy to ~/Library):

                                          #!/bin/sh
                                          
                                          sudo -u $USER mkdir -p $HOME/Library/Application\ Support/DevName/PluginName/
                                          
                                          /usr/bin/rsync -avurpE --remove-source-files /Library/Application\ Support/DevName/PluginName/ $HOME/Library/Application\ Support/DevName/PluginName/
                                          
                                          sudo find $HOME/Library/Application\ Support/DevName/PluginName/ -type d -user root -exec sudo chown -R $USER: {} +
                                          
                                          rm -rf /Library/Application\ Support/DevName/PluginName
                                          
                                          exit 0
                                          

                                          (Note the \ character is used when there is a 'space' in the path name.)

                                          A User-Defined shell script (which takes the location set during the install) looks more like this:

                                          #!/bin/sh
                                          
                                          # Write sample location selected by user to LinkOSX for HISE
                                          
                                          # First, remove LinkOSX file if it's already there
                                          instrumentname="PluginName"
                                          devname="DevName"
                                          
                                          FILE="$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
                                          if test -n "$FILE"; then
                                          rm -R "$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX"
                                          fi
                                          
                                          # Second, use the environment variable from WhiteBox Packages to write the destination to a file
                                          destfile=/Users/${USER}/Library/Application\ Support/${devname}/${instrumentname}/LinkOSX
                                          printf "${DSTROOT}/Users/Shared/DevName/PluginName/Samples" > "$destfile"
                                          
                                          exit 0
                                          
                                          

                                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                          https://dhplugins.com/ | https://dcbreaks.com/
                                          London, UK

                                          virtuscapeaudioV 1 Reply Last reply Reply Quote 1
                                          • virtuscapeaudioV
                                            virtuscapeaudio @DanH
                                            last edited by

                                            @DanH Thank you, Dan!!!! I have a "great success!!" (-Borat voice) on my hands thanks to you!

                                            I had some initial trouble, but ChatGPT helped me correct it.

                                            I'm posting here incase it's useful to anyone at allScreen Shot 2023-11-14 at 10.36.57 AM.png
                                            Screen Shot 2023-11-14 at 10.37.11 AM.png

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

                                            32

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            102.0k

                                            Posts