Forum
    • Categories
    • Register
    • Login

    Mac installer for audio sample libraries best practices?

    Scheduled Pinned Locked Moved General Questions
    29 Posts 8 Posters 494 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.
    • David HealeyD
      David Healey @dannytaurus
      last edited by

      @dannytaurus said in Mac installer for audio sample libraries best practices?:

      You get the Destinations settings below. I'm not 100% clear if that means User folder and System Disk though.

      Those are also in Packages, I think this is just a different UI for the same thing. Behind the scenes they're both using pkgbuild and productbuild.

      Free HISE Bootcamp Full Course for beginners.
      YouTube Channel - Public HISE tutorials
      My Patreon - HISE tutorials

      1 Reply Last reply Reply Quote 1
      • David HealeyD
        David Healey
        last edited by David Healey

        Is there a way to get packages to prompt the user for a location to install a specific component such as samples?

        @Casey-Kolb I seem to recall you were doing something like this?

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - Public HISE tutorials
        My Patreon - HISE tutorials

        Casey KolbC HISEnbergH 2 Replies Last reply Reply Quote 0
        • Casey KolbC
          Casey Kolb @David Healey
          last edited by

          @David-Healey It was so finicky we ended up just installing them to a default location on the hard drive. If the user wants to move them, they just move them to an external drive and relocate them in CUBE.

          Casey Kolb
          Founder & CEO of Lunacy Audio
          Composer | Producer | Software Developer

          LindonL dannytaurusD W 3 Replies Last reply Reply Quote 1
          • LindonL
            Lindon @Casey Kolb
            last edited by

            @Casey-Kolb said in Mac installer for audio sample libraries best practices?:

            @David-Healey It was so finicky we ended up just installing them to a default location on the hard drive. If the user wants to move them, they just move them to an external drive and relocate them in CUBE.

            shudder.... this is exactly why we went with an in-plugin set up for samples, meta data, presets and images etc.

            So the "installer" only has to actually install the plugin itself...

            HISE Development for hire.
            www.channelrobot.com

            W 1 Reply Last reply Reply Quote 0
            • dannytaurusD
              dannytaurus @Casey Kolb
              last edited by

              @Casey-Kolb What default location did you use?

              Meat Beats: https://meatbeats.com
              Klippr Video: https://klippr.video

              1 Reply Last reply Reply Quote 0
              • W
                WillowWolf @Casey Kolb
                last edited by

                This post is deleted!
                1 Reply Last reply Reply Quote 0
                • HISEnbergH
                  HISEnberg @David Healey
                  last edited by

                  @David-Healey Yea it can be done. I think @Lindon's suggestion is much better but a little more work. It looks like Packages may be updated, but I recall having an issue with the version available at the time. You need a version which actually let's you edit the Presentation of the Installer.

                  Note too, if you go down this route you also need to autogenerate the LinkFile which points to the sample directory. This is usually autogenerated in the Application Support Folder when a user installs the sample.

                  David if you are looking to further explore the benefits of vibe coding a solution this is a good candidate....

                  Sonic Architect && Software Mercenary

                  David HealeyD W 2 Replies Last reply Reply Quote 0
                  • David HealeyD
                    David Healey @HISEnberg
                    last edited by

                    @HISEnberg said in Mac installer for audio sample libraries best practices?:

                    You need a version which actually let's you edit the Presentation of the Installer.

                    I have that version. I don't see a way to prompt the user to select a location though. I emailed the dev about it but no response as yet.

                    Free HISE Bootcamp Full Course for beginners.
                    YouTube Channel - Public HISE tutorials
                    My Patreon - HISE tutorials

                    1 Reply Last reply Reply Quote 0
                    • W
                      WillowWolf @Lindon
                      last edited by

                      @Lindon

                      What was your approach to making an in plugin setup for samples?

                      Any advice or suggestions would be helpful, since I'm exploring a similar route.

                      David HealeyD LindonL 2 Replies Last reply Reply Quote 0
                      • W
                        WillowWolf @HISEnberg
                        last edited by

                        @HISEnberg Doing this on windows is pretty easy with inno setup. In the main plugin installer, you can prompt the user to choose a location to install the audio samples, and then use a wildcard to generate a linkwindows file based on the location they chose. When the user opens the plugin for the first time it works as expected, without having to locate samples, be reloaded or fussed with.

                        Trying to do something similar on mac has been kind of a nightmare so far. The seemingly fundamental inability to install files to both /library and ~/library makes me think there's no single-installer solution.

                        Until I figure out an in plugin solution, I'm currently exploring the idea of having two installers. One for the samples (and linkOSX file), and one for the plugin.

                        1 Reply Last reply Reply Quote 0
                        • David HealeyD
                          David Healey @WillowWolf
                          last edited by David Healey

                          @WillowWolf said in Mac installer for audio sample libraries best practices?:

                          What was your approach to making an in plugin setup for samples?

                          HISE has a built in sample installer.

                          @WillowWolf said in Mac installer for audio sample libraries best practices?:

                          The seemingly fundamental inability to install files to both /library and ~/library makes me think there's no single-installer solution.

                          This is entirely possible (as I mentioned earlier in this thread). I have a video about it on my Patreon page, the instructions are also included in the Whitebox Packages documentation.

                          The problem with Packages is that as far as I can tell there is no method to prompt the user for an install location. You have to install the files to a predefined location. But I've emailed the Packaged dev about this and he's looking into it for me.

                          Free HISE Bootcamp Full Course for beginners.
                          YouTube Channel - Public HISE tutorials
                          My Patreon - HISE tutorials

                          1 Reply Last reply Reply Quote 0
                          • W
                            WillowWolf
                            last edited by

                            For anyone reading this thread in the future, I've been having success using araelium package builder. So far I've had no issue installing to the users ~/library folder. There's a fully featured free trial (with a watermark), and the scripting language is javascript, so pretty familiar to anyone who uses hisescript during plugin development!

                            https://www.araelium.com/packagebuilder

                            Thanks to everyone who has replied to the thread and given helpful info!

                            dannytaurusD David HealeyD 2 Replies Last reply Reply Quote 1
                            • dannytaurusD
                              dannytaurus @WillowWolf
                              last edited by dannytaurus

                              @WillowWolf With Araelium Package Builder, are you able to install to both /Library and ~/Library in a single installer?

                              Plugin installed in /Library/Audio/Plug-Ins
                              Samples installed in ~/Library/Application Support (aka /Users/[USER]/Library/Application Support)

                              Or are you installing the plugin and the samples to ~/Library?

                              Meat Beats: https://meatbeats.com
                              Klippr Video: https://klippr.video

                              1 Reply Last reply Reply Quote 0
                              • David HealeyD
                                David Healey @WillowWolf
                                last edited by

                                @WillowWolf said in Mac installer for audio sample libraries best practices?:

                                I've been having success using araelium package builder.

                                Does it have a way to prompt the user to select a folder?

                                Free HISE Bootcamp Full Course for beginners.
                                YouTube Channel - Public HISE tutorials
                                My Patreon - HISE tutorials

                                dannytaurusD 1 Reply Last reply Reply Quote 0
                                • dannytaurusD
                                  dannytaurus @David Healey
                                  last edited by

                                  @David-Healey I'm still not 100% sure why the need to install to both system and user spaces on Mac. Can you explain?

                                  As far as I understand, it's to install the plugin to the system /Library folder (for all users) and the samples to the user ~/Library folder (for the current user only).

                                  What's the point of installing the plugin to the system folder for all users if the samples are sandboxed to a specific user? Other users on the machine won't be able to use the plugin without the samples.

                                  The only reason I can think of is that DAWs have the system plugin folders set as default (/Library/Audio/Plug-Ins) but not the user plugin folders (~/Library/Audio/Plug-Ins).

                                  Meaning some DAWs might miss plugins installed to the user Plug-Ins folder unless the user updates the search paths.

                                  I don't know for sure what plugin paths DAWs use by default. Would be a good one to look up.

                                  Meat Beats: https://meatbeats.com
                                  Klippr Video: https://klippr.video

                                  David HealeyD 1 Reply Last reply Reply Quote 0
                                  • David HealeyD
                                    David Healey @dannytaurus
                                    last edited by

                                    @dannytaurus said in Mac installer for audio sample libraries best practices?:

                                    I'm still not 100% sure why the need to install to both system and user spaces on Mac. Can you explain?

                                    The standard location for plugins is the system wide folder - although you can install in the user folder if you prefer.

                                    Data files (like AudioResources.dat) needs to go in the user's Application Support folder. But if you don't have any data files then you don't need to install anything in the user locations...

                                    Unless your installer also includes samples in which case you'll want to create the LinkOSX file in the user location - but you should only be doing this if you've prompted the user to choose a location to install the samples since there is no standard samples location, but as far as I can tell there is no method for prompting the user on macOS.

                                    Free HISE Bootcamp Full Course for beginners.
                                    YouTube Channel - Public HISE tutorials
                                    My Patreon - HISE tutorials

                                    dannytaurusD 1 Reply Last reply Reply Quote 0
                                    • dannytaurusD
                                      dannytaurus @David Healey
                                      last edited by

                                      @David-Healey said in Mac installer for audio sample libraries best practices?:

                                      Data files (like AudioResources.dat) needs to go in the user's Application Support folder.

                                      Why not the system Application Support folder? /Library/Application Support

                                      Meat Beats: https://meatbeats.com
                                      Klippr Video: https://klippr.video

                                      David HealeyD 1 Reply Last reply Reply Quote 0
                                      • David HealeyD
                                        David Healey @dannytaurus
                                        last edited by

                                        @dannytaurus said in Mac installer for audio sample libraries best practices?:

                                        Why not the system Application Support folder? /Library/Application Support

                                        You can if you enable the Global App Data Folder option in HISE preferences - although I find it causes weird issues for me. But I think the idea is in a multi-user setup different users will have different presets and preferences so those settings are per-user.

                                        Free HISE Bootcamp Full Course for beginners.
                                        YouTube Channel - Public HISE tutorials
                                        My Patreon - HISE tutorials

                                        dannytaurusD 1 Reply Last reply Reply Quote 1
                                        • dannytaurusD
                                          dannytaurus @David Healey
                                          last edited by

                                          @David-Healey Right, makes sense.

                                          I'll dig around some other plugins and see where they put their data can assets, to get a feel for it.

                                          Meat Beats: https://meatbeats.com
                                          Klippr Video: https://klippr.video

                                          1 Reply Last reply Reply Quote 0
                                          • LindonL
                                            Lindon @WillowWolf
                                            last edited by Lindon

                                            @WillowWolf said in Mac installer for audio sample libraries best practices?:

                                            @Lindon

                                            What was your approach to making an in plugin setup for samples?

                                            Any advice or suggestions would be helpful, since I'm exploring a similar route.

                                            Ok so...

                                            I have a json file that is saved by the plugin to the AppData folder, this is the Setup manifest - here's an example, as it is defined in the code:

                                            reg defaultInstallManifest =
                                            {
                                            	"DownloadTargetFolder" : "Not Set",
                                            	"DownloadApproach" : "",
                                            	"downloadSpace": 3670,
                                            	"samplerSpace" : 3990,
                                            	"version" : 30000,
                                            	"type": "setup",
                                            	"setupSteps" :
                                            	[
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData01.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData01.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData02.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData02.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData03.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData03.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData04.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData04.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData05.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData05.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData06.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData06.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData07.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData07.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData08.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData08.cra",
                                            			"downloadFileContents" : "Sample Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData09.cra", // Sample files ch1
                                            			"downloadFileDestination" : "ProductNameData09.cra",
                                            			"downloadFileContents" : "Loop Files",
                                            			"installDestination" : destinations.USERSAMPLE_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData10.cra",  //the meta files 
                                            			"downloadFileDestination" : "ProductNameData10.cra",
                                            			"downloadFileContents" : "Meta Data Files",
                                            			"installDestination" : destinations.APPDATA_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData11.cra",  // audio wav files
                                            			"downloadFileDestination" : "ProductNameData11.cra",
                                            			"downloadFileContents" : "Audio Files",
                                            			"installDestination" : destinations.AUDIOFILES_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		},
                                            		{
                                            			"downloadFileName" :  "www.xxxxx.com/download/zzzzz/ProductNameData12.cra",  // presets
                                            			"downloadFileDestination" : "ProductNameData12.cra",
                                            			"downloadFileContents" : "Preset Files",
                                            			"installDestination" : destinations.PRESETS_LOCATION,
                                            			"status" : destinations.UNSTARTED
                                            		}
                                            
                                            	]
                                            
                                            
                                            };
                                            

                                            So on start up the plugin looks for a manifest file in the AppData folder, and when it doesnt find it - then it knows that there is a set up to do....so it uses this internally included version (above) of this file to do the set up...

                                            It should be pretty obvious, what is happening. There are a bunch of file URLs that point to stuff that needs to be downloaded, so first the plugin installer asks where the user wants to put these temp download files...and it checks there's enough room in the user specified location...

                                            If there is enough room it iterates over the steps downloading these files ( I usually limit the file sizes to about 500MB), as each is done it updates the step status to "downloaded"...

                                            When everything has been downloaded it checks to see if there is any sample data in the manifest, if there is it asks the user where they want to keep their sample data on a permanent basis...it checks there is enough space in the users requested location.

                                            If there is it creates a "Link File" and begins the unarchiving process for each step putting the contents of each downloaded file in its final location and updating the manifest on disk as it does so with the status "installed"....

                                            When its done it offers the user the opportunity to delete those temp download files and tells the user to restart the plugin...

                                            The plugin restarts, finds the Manifest file, checks its all been completed("installed") successfully and if it has it starts to run like a normal plugin....

                                            The system includes an off-line setup process too - but the number of users who have opted for this as tiny tiny tiny...

                                            It took very little effort to enhance this to allow the plugin to download and install expansions too...essentially this will download and set up for you: samples, their link file, meta data, wav files, graphics, basically anything you can zip up and know the location you want to use...

                                            With this approach the only thing the "classic" installer (like whitebox etc.) has to do is put the VST3 and AU files wherever you want them...

                                            This whole sub system is actually available to license from me if you wish...

                                            HISE Development for hire.
                                            www.channelrobot.com

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

                                            27

                                            Online

                                            2.2k

                                            Users

                                            13.4k

                                            Topics

                                            116.6k

                                            Posts