Skip to content

Licensing and Delivery

This document describes the available levels of copy protection and how licensing works for Gorilla Engine powered products.

Product Hub - Licensing and Delivery System

Section titled “Product Hub - Licensing and Delivery System”

Product Hub is a comprehensive licensing and delivery platform available to all manufacturers signed up for the Gorilla Engine Product Hub Add-On. It provides:

  • License Management: Create, assign, and track licenses for your customers
  • Trial Activations: Configure and manage time-limited trials for your products
  • Product Delivery: Upload installers, manage releases, and distribute updates to your user base
  • User Management: Connect to your existing authentication system (WorkOS, Auth0 or custom) for end-user login
  • Reseller Support: Distribute licenses through resellers and let customers claim them using serial codes

The community-maintained Product Hub for WooCommerce plugin connects a WooCommerce store to Gorilla Engine Product Hub so purchases can be associated with Product Hub products and licenses. Review the repository’s installation and configuration instructions before integrating it into a store.

The Product Hub web frontend allows you to configure your products and their releases, manage licenses, and monitor activations. Contact UJAM to set up your manufacturer account and get started.

The @gorilla-engine-sdk/ge-product-hub client library provides everything you need to integrate licensing into your plugin:

  • Product activation with license (email & password)
  • Claiming reseller-distributed licenses using serial codes
  • Trial activation and time tracking
  • Local persistence for offline validation
  • Built-in signature verification
  • Hardware fingerprint detection

Note: You need to implement the activation overlay in your product using JavaScript.

Gorilla Compiler provides tools to encrypt your application logic code files (JavaScript and others). This ensures that the code you wrote to create the unique UX for your product does not get installed in readable plain text on an end user’s machine.

Important: The encryption provided by Gorilla Compiler is a basic level of protection. It prevents low-effort piracy of your products. For manufacturers for whom the highest level of security is paramount, we recommend using PACE / iLok copy protection and licensing on top of the basic encryption.

For manufacturers who require strong copy protection, PACE Anti-Piracy provides industry-leading security including physical USB dongle support (iLok).

With the required Eden Tools SDK and PACE credentials, you can add your details into Gorilla Compiler to gain copy protection by wrapping your plugin.

In order to utilize their copy protection and licensing, you need a contract with PACE and additional costs will accumulate.

PACE iLok Copy Protection & Licensing Pricing

Note: If you want to ship a valid AAX product that gets listed in Pro Tools, you are required to sign your product using PACE. Signing and wrapping are not the same, so make sure to apply the correct setting in the Gorilla Compiler “PACE” tab.

In case you want to only PACE-sign your AAX and not use the PACE / iLok copy protection and licensing, please refer to our chapter on creating valid AAX plugins.

Developers working with the Gorilla Engine SDK get content encryption for their audio samples. Enable blob encryption in Gorilla Compiler’s Copy Protection tab.

For this workflow, export from Gorilla Editor with Separate Headers and Include Preload enabled:

  • Blob part 1 contains the instrument configuration and the start (attack) portion of each sample. Only this part is encrypted.
  • Blob part 2 contains the remaining sample audio and is not encrypted. Keeping the sample starts in the encrypted part protects that essential portion without encrypting the entire sample library.

Note: This content encryption is maximally effective when your product is additionally protected with a strong copy protection like PACE. If you are interested in maximum security, get in touch and we help you find the appropriate solution for your use case.

Match Export and Runtime Preload

The Preload setting in Gorilla Editor’s preferences determines how many milliseconds from the start of each sample are included in blob part 1 when exporting with Include Preload enabled.

After loading the blob in your JavaScript or TypeScript application, activate its instrument with GorillaEngine.setActiveInstrument(). Its optional second argument, streamBufferSizeSeconds, sets the runtime streaming buffer size used for sample preloading, in seconds, not milliseconds.

Manufacturers should match the runtime preload duration to the Editor preload used for the export. For example, if the Editor preload is 100 ms, pass 0.1 seconds when activating the loaded instrument:

const preloadMilliseconds = 100;
GorillaEngine.setActiveInstrument(instrument, preloadMilliseconds / 1000);

If the runtime preload is longer than the sample starts stored in part 1, the engine must read additional audio from blob part 2 to fill the preload buffers. Matching the durations avoids these unnecessary part 2 reads during preloading. If you change the intended preload duration, update both the Editor export setting and the application value, then re-export the blob.

CI/CD Blob Exports

When exporting with the Blob Export Tool in a CI/CD pipeline, set the preload explicitly with --preload <msec>. For the same 100 ms preload used in the runtime example above:

Terminal window
blob-export --preload 100 MyInst.inst MyBlob.blob

This places the first 100 ms of each sample in blob part 1 and the remaining audio in part 2. Without --preload, the tool stores all sample audio in part 2, so encrypting part 1 alone does not protect the sample starts.

Keep the CI/CD export value and the application’s runtime preload in sync: --preload 100 corresponds to GorillaEngine.setActiveInstrument(instrument, 0.1). Prefer a shared project configuration as the source of both values, converting milliseconds to seconds for the runtime call. If you also export manually from Gorilla Editor, use the same preload duration in its preferences.

When changing the preload, perform a full blob export rather than using --update-inst, which retains the existing blob’s sample layout and export settings. Enable blob encryption in Gorilla Compiler’s Copy Protection tab when packaging the exported files; --preload controls sample placement, not encryption.