Documentation

Extensions and packages

Themes, layouts and extensions all come as a single .tpkg file. You install, turn off and remove them all the same way.

Getting extensions

Open View ▸ Get Extensions... to browse the Store, or Browser ▸ Extensions ▸ Get Extensions for the same list in the sidebar. More about getting extensions.

What a package is

A package is a .tpkg file. It can hold any mix of:

Themes, layouts and icons are just data; they can't run anything. Extensions contain code, so Transcend treats them differently. It tells you before installing one, and it runs the code in a sandbox that only reaches what the package was allowed.

Transcend comes with some packages built in: its standard themes (including Walnut, Midnight and Moss), the Clip Launcher, Chord Practice and a Circle of Fifths panel. You can turn built-in packages off but not remove them.

Getting extensions

View ▸ Get Extensions... opens the Store over the window: featured extensions at the top, then every extension by kind (themes, layouts, pages and panels, tools), with a search box and lists of what you have installed and what has an update. Browser ▸ Extensions ▸ Get Extensions shows the same list in the sidebar. Click Get on a card to install it, or Update when a newer version is out.

The list has two sections:

The list itself is signed, and every listed file is checked against the exact file that was listed before it installs, so a file swapped afterwards is refused. An extension that needs a newer Transcend than yours says so on its card instead of offering Get.

Install from a link

If someone shares an extension that is on GitHub, paste the address of its GitHub release, or just owner/repository, into the Install from a link box at the top of the Store or on the sidebar list. Transcend downloads the release's .tpkg and shows you what it asks for before installing.

Installing a package file

Either:

If the package contains code, Transcend first tells you so, shows the author name the package gives and lists the permissions it asks for. A package file can carry any author name, so only install files from people you trust. Nothing is written until you click Install, and Cancel leaves nothing behind. Packages that only hold themes, layouts or icons install without asking, because there's nothing to approve.

Installing a theme or layout doesn't switch to it. It is added to the list; to use it, select the package in Settings ▸ Packages and click Use This Theme or Use This Layout. An extension is different: its script starts the moment it's installed, and again every time Transcend launches.

To update a package, install the newer .tpkg over it. The old version is replaced, and anything the extension saved is kept.

If an install is refused

Transcend explains why in one sentence. The common ones:

Managing packages

Everything lives in Settings ▸ Packages ▸ Installed. Select a package to see what it is, who made it, what it contains, what it's allowed to do and any error it hit.

ButtonWhat it does
Install Package...Installs a .tpkg file.
Load Folder...For people writing packages: runs one straight from a folder. See Build a package.
New Package...For people writing packages: creates a ready-to-edit extension, set up for VS Code, and loads it. See Build a package.
RescanRe-reads the packages folder, for a package you copied there by hand.
Disable / EnableTurns a package off or on without removing it. A disabled extension stops right away.
RemoveDeletes the package and anything it saved. Built-in packages can only be disabled. For a package loaded from a folder this says Unlink: it only stops loading it and never deletes the folder.
Export .tpkg...Saves the package as a .tpkg file you can share.
Use This Theme / LayoutSwitches to the theme or layout in the selected package.
Reload ScriptsRestarts an extension from scratch. Mostly useful when you're writing one. A package loaded from a folder also reloads by itself when you save a file in it.
MIDI Devices...Chooses which MIDI outputs an extension may send to. See Permissions.

Buttons that don't apply to the package you've selected are hidden.

Turning scripting off

Scripted extensions are on in every copy of Transcend. To run Transcend with no extension code at all (themes and layouts still work), start it with the TRANSCEND_EXTENSIONS environment variable set to 0. Packages containing code then can't be installed either.

Windows

Open Command Prompt and run:

setx TRANSCEND_EXTENSIONS 0

Then quit Transcend completely and open it again. To switch scripting back on, run setx TRANSCEND_EXTENSIONS 1 and restart.

macOS

Quit Transcend, then open Terminal and run:

open -a Transcend --env TRANSCEND_EXTENSIONS=0

This applies only to that launch.

For a one-off, hold Shift while Transcend starts instead: that is safe mode, where no packages load at all. Settings ▸ Packages ▸ Console says whether scripting is on.

Permissions

An extension lists the permissions it wants, and you see that list before installing. Anything it didn't ask for is refused, even if the script tries it anyway.

PermissionWhat it allows
(none)Reading the open project, running Transcend's commands, adding commands of its own, reacting to events like playback starting, drawing a panel or a page, reading and setting plugin parameters, mapping MIDI controller knobs to commands, and saving its own settings. Most extensions need nothing more.
midi.outSending notes and controller messages to MIDI hardware, but only to devices you pick with MIDI Devices.... Until you pick one, it can't send anything. It can never send system-exclusive messages, which can rewrite a device's firmware. When an extension stops, Transcend sends All Notes Off to its devices so nothing is left hanging.
files.read, files.writeReading or writing files outside the package. The beta has no way to grant these yet, so an extension can't touch your files even if it asks.
network, process.spawnNot available yet. The install prompt marks them as having no effect in this version.

Using extensions

Commands

Extensions can add commands. Open the command palette with Ctrl+P on Windows or Cmd+P on macOS and start typing a command's name. Extension commands can be bound to a key in Settings ▸ Shortcuts, just like built-in ones, and extensions can make them undoable.

Panels

Some extensions draw their own view, such as the built-in Circle of Fifths. Open View ▸ Extension Panels. Panels appear in a dock under the arrangement, one tab per panel. Hidden panels cost nothing, and a panel that gets too slow is automatically slowed down so the rest of Transcend stays smooth.

Some extensions put their panel on the Browser's home screen instead, as a card you click to open.

Pages

An extension can also add a whole page, which fills the workspace beside the arrangement, the piano roll and the mixer. Its button sits in the main bar next to theirs. Open a page with that button, from View ▸ Extension Pages and Windows, or from the command palette (type Open Page and its name), which also lets you give it a key in Settings ▸ Shortcuts. Click the button again, or the arrangement button, to go back. A hidden page costs nothing.

Windows

An extension can also open a floating window above Transcend, which remembers its size and place. Windows open only when you ask: from View ▸ Extension Pages and Windows, from the command palette, or from a button in the extension itself.

Right-click menus

Extensions can add their own entries to the right-click menu of a clip, a track header or a mixer strip, and to the piano roll's Tools menu. They are grouped under Extensions.

The Extension Console

Settings ▸ Packages ▸ Console shows everything extensions print, plus every error they hit, labelled by package. You can filter it to one package, copy lines, or save it to a text file, which is the most useful thing to attach to a bug report about an extension.

When something goes wrong

Safe mode

Hold Shift while Transcend starts. In safe mode no packages load at all, including any theme that came from a package. Open Settings ▸ Packages, disable the package causing trouble, and restart Transcend normally.

Extensions protect themselves

Turning scripting off entirely

Set TRANSCEND_EXTENSIONS to 0 and restart, as described under Turning scripting off. Installed extensions stay on disk but none of their code runs.

Where packages are stored

SystemInstalled packages
Windows%APPDATA%\Transcend\Transcend\packages
macOS~/Library/Application Support/Transcend/Transcend/packages

Each package is a folder named after its id. What extensions save is kept in a hidden .state folder next to them, so updating a package keeps it and removing a package deletes it. Settings ▸ Packages also shows these paths.

Not in the beta yet