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.
    • virtuscapeaudioV
      virtuscapeaudio @d.healey
      last edited by

      @d-healey Yes sir, understood! thanks for the clarification

      DanHD 1 Reply Last reply Reply Quote 1
      • 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
                                            • First post
                                              Last post

                                            49

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.9k

                                            Posts