@d-healey You were right, it was the bundle identifier.
Best posts made by soundsync
-
RE: AU Compiles but not visibleposted in General Questions
-
Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
Hey Gang,
I wanted to start a cleaner updated thread for SoundSync and keep this one focused specifically on the HISE ecosystem/workflow we’ve been building around it.
SoundSync started as a platform to help audio/plugin developers handle the pieces around releasing a product: licensing, customer accounts, serial activation, product delivery, storefronts, checkout, and customer libraries.
The HISE side has now grown into a much bigger part of the platform, so I want to use this thread to share walkthroughs, updates, screenshots, and short examples of how the HISE workflow is coming together.
The goal is not to replace anything inside HISE.
The goal is to help with everything around releasing, selling, activating, supporting, and managing a HISE-built product.
Some of the HISE-focused pieces currently being tested or polished:
Product setup and delivery files
Storefront and checkout testing
Customer library / download access
Serial generation and activation
Plugin-side validation
Offline grace handling
Suspend / deactivate / reactivate flows
Reseller, imported, and unassigned serial activation workflows
Branded activation UI
WebView-based in-plugin storefront
“My Products” customer view inside the plugin
Developer support links/pages
Customer/product ownership checks
Basic customer and purchase managementRight now the platform is still in test/beta mode. Stripe checkout is in test mode, so no real payments are processed.
For checkout testing, Stripe’s test card is:
4242 4242 4242 4242
Any future expiration date and any CVC should work.
What I’m mainly looking for from HISE developers:
Does the setup flow make sense?
Is the HISE package/drop-in workflow clear enough?
Does the activation/licensing flow feel reliable?
Does the WebView storefront/customer area feel useful inside a plugin?
Are the customer/product/storefront tools helpful or too much?
What would make this safer, clearer, or easier before real launch?
What support/docs/walkthroughs would make the HISE side easier to trust?This is still not meant to be a polished public launch thread. I’m mostly looking for a few HISE developers willing to test the workflow, create a demo product, run a fake checkout, generate/activate a serial, and give blunt feedback.
If you’re actively building or selling HISE plugins and want to test it, you can sign up here: https://soundsyncsolutions.biz/developer
You can also schedule a meeting with me here for any questions, walk-throughs, etc: https://www.soundsyncsolutions.biz/demo
I’ll keep posting HISE-specific walkthroughs and updates in this thread as the package gets cleaned up.
Best,
Aaron -
RE: Taking my Mailing list seriously, so a first question....posted in General Questions
@Lindon My subscriber list for my Plugins are roughly the same as yours (around 18k). Ill be as open and honest about what Ive done, results, etc since beginning my current plugin company 1 year ago.
My main focus for marketing is collecting emails. I do this in various channels (resellers, free giveaways, exclusive blog discounts, affiliates, etc).
Whenever I have a new release, my email subscribers get it first. Whenever I have a deal/bundle/sale, my email subscribers hear about it first and/or get a special/addional discount.
Any purchase recieves a thank you along with he downloads.
Some amount of time later, usually 5-7 days, i automate an email checking in on how they like the product and if they would leave a review. Leaving a review gets you a small discount/gift card to be used in the store.
As far as campaigns, it depends on what Im aiming for. A new release will get "hype" emails, 1-2/week, for a couple weeks. Then the actual launch and deal will recive 2 emails/week. The final 48 hours receive 2 emails as well for urgency purposes.
Bundles, deals and sale may get a similar treatment just less "hype".
My audience is pretty used to my email format and layout. Im usually pretty straight to the point with a bit of sarcasm. I think being yourself and not bullshitting is pretty important.
I typically can make $2000-$4000 from my email list each release/deal. These deals are usually 2 week periods.
Hopefully something in this ramble while im rocking my daughter to sleep s helpful.
-
RE: Apple altool vs notarytoolposted in General Questions
For anyone doing it it manually, here is the code.
Thanks @d-healey as always!
Codesigning Plugin
codesign --remove-signature "MacHD/User/Desktop/PluginName.vst3"
codesign --remove-signature "MacHD/User/Desktop/PluginName.component"
codesign -s "Developer ID Application: YOURTEAMID" "MacHD/User/Desktop/PluginName.vst3" --timestamp
codesign -s "Developer ID Application: YOURTEAMID" "MacHD/User/Desktop/PluginName.component" --timestampBuild Installer
Sign Installer
productsign --sign "Developer ID Installer: YOURTEAMID" "MacHD/User/Desktop/PluginName.pkg" "MacHD/User/Desktop/Signed/PluginName.pkg"Notarize Installer
xcrun notarytool submit --apple-id "YOURAPPLEID" --password "App-Specific-Password" --team-id "YOURTEAMID" "MacHD/User/Desktop/Signed/PluginName.pkg"Wait For Upload To Complete
Staple Installer
xcrun stapler staple "MacHD/User/Desktop/Signed/PluginName.pkg"Check Status (Accepted)
spctl --assess -vvv --type install "MacHD/User/Desktop/Signed/PluginName.pkg"FYI: Just a tip coming from the altool manual notarizing. I used to have to enter my TEAMID including my name like "My Name (GD78YHD87G)" but with the notarytool, it seems you just need the actual TEAMID Number, not the name as well.
Also, I dont think this way sends the Notarization Email Confirmation. I did a fairly small upload a while ago and have yet to receive it. I've had it take hours before, but for a much larger file. Typically it sent the email within 10 or so minutes with altool. (it does not send the email. Once the upload is complete, youre good to go).
-
RE: control.Timer crashing plugin in DAWposted in ScriptNode
@trillbilly If anyone hits the same problem, I got around it by using a tempo-synced ramp and a couple compare nodes to simulate the timers engagement.
Simple and works.

-
RE: Preset Crashes DAWposted in General Questions
@Lindon @d-healey @Dan-Korneff @Matt_SF @DanH I did another rebuild and managed to get things saving correctly (so it seems). I messed with a few settings and properties so Im not 100% sure what it was but it's working so thats that. I appreciate all the help and input fellers!
-
RE: Making a Simple Rompler?posted in General Questions
@daniel89ep Ya, @d-healey videos are great. I think this is with a Sound Generator but essentially you do the same with the Sampler.
-
RE: Sample Editor Functions + UI Controlposted in General Questions
I dug the forum again and found a little trick about naming the Sampler for instances of 2 const var calls.
Im horrible with scripting and new to this so excuse the shitty code, but hey, it did the job! Here is the code if anybody wants to try it out. It allows you to control the editing functions of the sampler (Loop Enable, Reverse, Loop Start/Stop, etc).
HISE SNIPPET:
HiseSnippet 2171.3oc4Z0sbaabEFPRPIj1owIStn2jYvvoWPkQVgT1wtM+TSQJoLbhjLCorSlwMSxRfkjvFbWLKVpeZGOSeD56Pauu8MvOB8t9Z365ktm8G.rfBjBRwIwSKuQd28bN624Cm8bNXg6wnd33XJyxtxwmGgsruoyfyI7IclfBHVc20xtpyQ3Sc6P8wVsOOBEGi8srsW8KEqaWYMK4uW9f1nPDwCmMkk0ioAd3CBlFvylsWquJHLbejO93foFRe2Vc8njNzP5L.Kq5zvJB48LzX7QHgXq3XYu9d9AbJa.GwwwV1q0l5e9fIzSIJ4ebPbvvPrXPSqAfgTSuOMzWfXwrVclDD52Kwmisrrc5kw.qpXfOv4v.+fz4yXhaIWvMSCS9vdk7va0bvqoI7ZX.uBfjsAjVSAo2yYfGKHhmsh.O2voKgiYiPd4eznj0Zk+dUmNTPBBeqonmg2mACR0ndysazXS262nwFeV0pe7GOXmC6cvd8ca5t+iNpywce3QCpVEdjDycOAwbGflFEhYMc+BWY7wViwb8b0qkrXMsoTCAScasdt.qv3teEgNrZ.ILffcGMi3wCnDWJQIiTDAdYzv5dzoQTBf7MgcObFdip+optvuQTV8X2.RJd1xigABe.NDKMW8Za8Q01XCovJUD+BodnP2P.7QHVLFHg5wBOnt1Lao96dD+M.WHQq3shufHRTpAk6G4FpE+4UeN35IrMX4NINPB6HUr1FBSpcxNnvvgPPd8hXfExj.FWNOBB7FOKBhjwgau8u6N2+dklHAcWNMlQ.WjDOfRiVdvnPhKMTrhfAQWWFjYxfnKmAQ4XvT.lwfrRPdopsHxadGeAj2Rh+Dq+lczmFgWsyuZkVFucogbeqnh2x3Mo.ugybRLd04NoZKi8L88EF0gfhm9tsmw4TR0EPhpUuzCt+xPgM0QeRG4pyhJeaYzXNuWvi.QJDws1oPk+w0RbYQXj9eeHJJtfh74pxKaPQN5BE5ikCml2HwoVVXEM8j1s.L+AAw75JC.OhFRGROykP43O00a5PPGBzwmKcjaxhW.fwJ4VVQBgHBPlMR9nnV.GOMt1lFfbqmRCfG5+AfZUX5HITR3pL3nmYg0cEaxRC8RiCBoH+T1ndFTdhT1a276.fbYUAUN3xJCZfGgiYfWgG9PRcInp97ptyuznQEtl1XhN9JZYQ+7rkoXcxroCwLSJQHHzja9NmcVbmylM16oXGCAojtj.9CivjE0tuklRgtrqnQEHJW1i8uR2i8fv.eLyJ.Zk9cbLZLyRBay2uwpDl3FNo0Uyaf+8e8EOnLFnhit.y7p+udP42eYF1R3.2RafNhidsomIMwMcxBnl2FubwfPkNRZg20oO9DLj2TOW4YxbF4gDL7zl+iwH2zIKS4UvWxQnoo5Kv.Op6tHNR7Rb5HMH5KBy3Ah.a6cwm.uQr5U5p3rKN9YbZD7F1omtgf+RFLdV111s04oC9yOtEGeFWZ.i27RvMkXKLCVWvF7hg5MPwjEX90KQnblwew3hLdUmjdMs7wiPyB4OtfmUk1iTg+KviZ8z7djR3BL+ke3vXGNxXGrtaKYcGK62xoMh7TZNqeCt9VGTVeen5.OfL93.HkmJt2bpllahkkA2wZoC4TwWuqSOFFJOzlQOMFXigiStbkJqCh+eD5HPU1r+yW8WdU9Y2VKr7mLvdkudEGQWQ0DocGfNQeht1m5xYyvalrxdmEgHwP1+3chASMapPhQnv3LQj2KCqX0EUghufFhpDJ4iMUHaZnvE3vvZMajpzN99EuG8whB6Eu1tPyf7Er19nSnLfhDWWk4ZZj0EbaebaJCbtbdvQylpXBA3aJmRM9aB74S5COfovBOQ1KXistyb+17JNOL82I2CQyV6.c3lxM5cXyh9SpVJj0mdZOjuOD4UV8FfQLuIsQr1zYDegm9D0BIrlhkLVs5ysNUP.voL6+lsk0Dbv3Ihyb1qYak6bxaU5xKYmP9gyLyM9D8A8JIxaEkzaPWeQRmjNzrfl7gfCNVOuVb+b3oRoqTsH770sztdx44enUh6mLymmlPDLoqvlkCyURfvxx7un5hK.uV+dMXVWJbIS5aVu7LyjtETzJIY5xS7ewqG8VNGR8mEh34usVwUTqW.REk6JREWCJbRketokm+JbWqbWg6xug4xB22yoW.2aRw3ckBvKzjwO03Ueg3uiydiFAucbFXWyY+uco298qcn7gJn79NC3P1roPNIcfu9aTjdL30v2nHpzeiBnDq7k4B9iFh8hVsmA7EK+r+iVxsZmoPtub6kF48wQXD+PwmYIcw2tU+9eIiNKZdsd4CjAKGyfW3CnByERN2a3icXz33Qf6HsUr4R8lwFK3prYRy0YLmn10DDgfCEudlsHw7ihEMhxC7NDwYA45IQtKMNFIeduhiZby4Fu8biuybiu6bi+j4Feu4Fe+rwouZsHxHoiq4eIyJk6kLAqzCA9sgjsCFmtCpYLihS4ZIdL97TeCzrzHJapgkFf4h15hMlpfOGz5+T8Ep9YM81O9rwud9fZURv3f.UUoSfSvvLBL99vqjIq4jLa9rIGRIznITRfW9yKP7+3wXlI1Kzg1gygiqYy7As5C8YhhMNv+aZcP.A5gJeZfqDWz7J+wEK740u1QAWWQJP2+2nJ5p+eeUzkQcyciAuY+b9lNxr9tx2U+WHn1mNSj9No.nCTkb.zYfG1rV4Jh5upwMDiE.Z.l3KG7J3mdwlIEVEK1LYQKuDSA9l9eKeOb6UwpOjfn4vPnjcnYHcLz+g.RPwveVP4TjGi98dpKOSf02VNCfRh7+8FUbNTL1sYxMl43zXqFVSgZUeumm3fvsAFtXc19ZnyctF5b2qgNex0Pm6cMz49WCc9sKUGQaB6LiSmpRRBSzaOUfk8doAVqZ8eY0VljDSCRIPT:
Content.makeFrontInterface(1200, 700); //SAMPLER 1 FUNCTIONS const var Sampler1 = Synth.getSampler("Sampler1"); //Sampler 1 - Sample Start Knob inline function onSampleStartControl(component, value) { for(s in Sampler1.createSelection(".*")) { local l = parseInt(s.get(Sampler.SampleEnd)); s.set(Sampler.SampleStart, value * l); } }; Content.getComponent("SampleStart").setControlCallback(onSampleStartControl); //Sampler 1 - Sample End Knob inline function onSampleEndControl(component, value) { for(s in Sampler1.createSelection(".*")) { local l = parseInt(s.get(Sampler.SampleEnd)); s.set(Sampler.SampleEnd, value * 229376); } }; Content.getComponent("SampleEnd").setControlCallback(onSampleEndControl); //Sampler 1 - Loop Start Knob inline function onLoopStartControl(component, value) { for(a in Sampler1.createSelection(".*")) { local r = parseInt(a.get(Sampler.SampleEnd)); a.set(Sampler.LoopStart, value * r); } }; Content.getComponent("LoopStart").setControlCallback(onLoopStartControl); //Sampler 1 - Loop End Knob inline function onLoopEndControl(component, value) { for(s in Sampler1.createSelection(".*")) { local l = parseInt(s.get(Sampler.SampleEnd)); s.set(Sampler.LoopEnd, value * l); } }; Content.getComponent("LoopEnd").setControlCallback(onLoopEndControl); //Sampler 1 - Loop XFade Knob inline function onLoopXFadeControl(component, value) { for(s in Sampler1.createSelection(".*")) { local l = parseInt(s.get(Sampler.SampleEnd)); s.set(Sampler.LoopXFade, value * l); } }; Content.getComponent("LoopXFade").setControlCallback(onLoopXFadeControl); //Sampler 1 - Loop Enabled Button inline function onLoopButtonControl(component, value) { for(s in Sampler1.createSelection(".*")) { local l = parseInt(s.get(Sampler.SampleEnd)); s.set(Sampler1.LoopEnabled, value * l); } }; Content.getComponent("LoopButton").setControlCallback(onLoopButtonControl); //Call "wrong" Sampler for SampleMaps const var Sampler11 = Synth.getChildSynth("Sampler1"); //samplemaps const var sampleMaps = Sampler.getSampleMapList(); //combobox note: cmb = name of combobox const var Samplescmb = Content.getComponent("Samplescmb"); Samplescmb.set("items", sampleMaps.join("\n")); //Note: Sampler = name of Sampler inline function onSamplescmbControl(component, value) { Sampler1.loadSampleMap(sampleMaps[value-1]); }; Content.getComponent("Samplescmb").setControlCallback(onSamplescmbControl); -
RE: Notarisation for dummiesposted in General Questions
@orange Ive gotten to waiting for the email. Ill post update after.
UPDATE: Success. Thanks again!
Latest posts made by soundsync
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
UPDATE: Auto-Detect + Dynamic GUI Sizing
When you download the HISE package, you will not be required to enter the GUI size anymore as it is auto-detected directly in your project. Thanks @David-Healey
Also, the complete HISE package is dynamic and will change dimension based on changing GUI elements (like an expandable keyboard or effect section). Thanks @dannytaurus
For example: Customer didn't pay for their subscription, grace period ends, they are using plugin now with the keyboard extended. The plugin will pause, popup the activation webview, and the webview overlay will still block the entire plugin, not just the original size.
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
@dannytaurus YES! Im adding this now as well. Didnt even cross my mind.
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
@David-Healey I have a position open when you're available lol
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
@David-Healey How did this get missed? Updating it now!
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
@Sifres Thanks for the words!
Yes, for sure, the competition is building. I love it! The motivation is real.
MoR is on the list as well as a couple more big updates that will be implemented in the coming weeks.
Im open to adding anything that developers will find useful! Just let me know and I'll get it taken care of.
Thanks again.
Aaron
-
RE: Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
UPDATE: Serial Validation + Storefront Package and Security.
During the Beta testing, it was brought to my attention that the HISE Validation and the HISE Storefront packages should just be a single package.
I have updated this and also added another secure way to obtain customer products.
Now customers can log in directly to their account via the plugin to view, manage and download products/licenses.
They can also verify via serial code + email verification.
The process is still very straight forward.
-
First and foremost, use the Product Wizard to create a product. It will walk you through step by step.

-
Once that is complete, you can generate a HISE package directly in the developer product view page. Project size is now automatically detected. Unzip and place the SoundSync folder in your HISE projects "Scripts" folder.

-
Open your project and use 1 simple include line to generate the entire package in your project.
include("SoundSync/Runtime/SoundSyncRuntime.js");4 Then your branded validation window will be present. It will pull your logo, brand colors, store name, etc all from your Store/Brand page in the developer profile.

- Use the "Test Connection" button (when connected to the internet) to confirm your connection with SoundSync and to tell the server you have successfully put the package in your project. In your product view (where you downloaded the HISE package) you will see connection status.

Once server connection is verified, simply hide the Test Connection button on your UI. This would complete your setup for live export/compilation.
Now lets test it.
Enter email and password OR serial number and email address. If you sign into your account, the plugin is automatically activated and good to go. If you validate via serial, you will need to verify your email before unlocking the product.

If you had an account and logged in, you will be all set. You can view, manage and download products as well as browse the developer catalog.
User Product Page:

Developer Catalog Page:

Developer Product Page:

If verification was done by serial and email:
The verification will either pass (if serial is already link to customer) or will tell customer to check their email for confirmation. All customer support, verification, etc emails are also branded. If you have set up your custom braded website and domains, they will be used here as well for your from and reply to emails. Soundsync is created to live completely in the background.

Once the customer verifies the license, they will be directed to a confirmation page and the plugin will automatically validate in the background.

Hopefully some of you can find this helpful.
Looking forward to the feedback and thanks to everyone who already signed up!
All the best,
Aaron
-
-
Soundsync Beta: HISE Ecosystem | UPDATE: Auto-Detect + Dynamic GUI Sizingposted in General Questions
Hey Gang,
I wanted to start a cleaner updated thread for SoundSync and keep this one focused specifically on the HISE ecosystem/workflow we’ve been building around it.
SoundSync started as a platform to help audio/plugin developers handle the pieces around releasing a product: licensing, customer accounts, serial activation, product delivery, storefronts, checkout, and customer libraries.
The HISE side has now grown into a much bigger part of the platform, so I want to use this thread to share walkthroughs, updates, screenshots, and short examples of how the HISE workflow is coming together.
The goal is not to replace anything inside HISE.
The goal is to help with everything around releasing, selling, activating, supporting, and managing a HISE-built product.
Some of the HISE-focused pieces currently being tested or polished:
Product setup and delivery files
Storefront and checkout testing
Customer library / download access
Serial generation and activation
Plugin-side validation
Offline grace handling
Suspend / deactivate / reactivate flows
Reseller, imported, and unassigned serial activation workflows
Branded activation UI
WebView-based in-plugin storefront
“My Products” customer view inside the plugin
Developer support links/pages
Customer/product ownership checks
Basic customer and purchase managementRight now the platform is still in test/beta mode. Stripe checkout is in test mode, so no real payments are processed.
For checkout testing, Stripe’s test card is:
4242 4242 4242 4242
Any future expiration date and any CVC should work.
What I’m mainly looking for from HISE developers:
Does the setup flow make sense?
Is the HISE package/drop-in workflow clear enough?
Does the activation/licensing flow feel reliable?
Does the WebView storefront/customer area feel useful inside a plugin?
Are the customer/product/storefront tools helpful or too much?
What would make this safer, clearer, or easier before real launch?
What support/docs/walkthroughs would make the HISE side easier to trust?This is still not meant to be a polished public launch thread. I’m mostly looking for a few HISE developers willing to test the workflow, create a demo product, run a fake checkout, generate/activate a serial, and give blunt feedback.
If you’re actively building or selling HISE plugins and want to test it, you can sign up here: https://soundsyncsolutions.biz/developer
You can also schedule a meeting with me here for any questions, walk-throughs, etc: https://www.soundsyncsolutions.biz/demo
I’ll keep posting HISE-specific walkthroughs and updates in this thread as the package gets cleaned up.
Best,
Aaron -
RE: Is the HISE REST server ready for use?posted in AI discussion
I havent used Claude but Codex works better than expected as well.
Ive used it with VS Code and linked it directly to my HISE projects.
No GUI creation or anything but with effects, scriptnode, debugging, etc it has been a huge time saver.
-
RE: Trading DSP's!posted in Scripting
@Chazrox I've got a Rhythmic glitch delay / scatter processor dsp I could swap.
Grid timing, drift warp, swing offset, random jitter, scatter repeats, impact burst, clang feedback, output filtering