Skip to content

Basic Concepts¤

This page dives deeper into the basic concepts of Nendo Core:

Resource¤

The NendoResource encapsulates a physical file that resides either on local or remote storage and structures all relevant information for storing it in the nendo library.

Fields

Field Type Description
id uuid The unique ID of the resource.
resource_type str Denotes what kind of an object is stored. Possible values are audio, image, model and blob.
src str The full disk to the actual file. Can be a path on disk or a URL to a bucket storage, for example.
location str The (physical) location of the file. Possible values are original (somewhere on disk), local (inside the nendo library path, which is configured as Nendo.config.library_path), gcs and s3.
meta dict A dictionary that can be used to store additional metadata related to the resource.
Files with location = original

Nendo never changes anything about files that reside at their original location. Only local files can be changed, deleted, etc.

Track¤

In Nendo Core, a track is represented by the class NendoTrack and serves as the fundamental building block of your next-gen audio processing workflows. In simple terms, it

Refer to the NendoTrack user guide for more information.

Collection¤

A collection is represented by the class NendoCollection and, in summary, it

  • must always have a name,
  • can contain an arbitrary number of tracks that are ordered inside the collection,
  • can have relationships to other collections, and
  • can be processed by a nendo plugins.

Refer to the NendoCollection user guide for more information.

Relationship¤

The basic objects in Nendo Core can be related to each other by means of the class NendoRelationship. Relationships allow to add additional structure to your audio library, by e.g. grouping tracks into collections, saving which track was generated based on which other track, from which track a collection of stems was derived, and so forth.

Fields

Field Type Description
id uuid The unique ID of the relationship.
source_id uuid The unique ID of the source object of the relationship.
target_id uuid The unique ID of the target object of the relationship.
relationship_type str A free-form type descriptor that can be used by developers to further differentiate between different kinds of collection objects. Unless explicitly set by the developer, "relationship" is used as a placeholder value.
meta dict A dictionary that can be used to store additional metadata concerning the relationship.
Derived NendoRelationship types

While all relationships in Nendo Core inherit from the NendoRelationship base class, in practice most relationships you'll encounter will be either of class NendoTrackTrackRelationship, class NendoTrackCollectionRelationship, or of class NendoCollectionCollectionRelationship, depending on the class of the source and target objects. The reason for this lies in relational DB implementations of the nendo library, that must store the relationships in separate tables in order to know where to perform the lookup for the SQL JOIN operation. As a user, this should rarely matter and so is only mentioned as a side node here.

Plugin¤

The plugin is a fundamental concept in Nendo Core and allows developers to flexibly extend nendo's capabilities. In summary,

  • plugins must be installed separately in addition to Nendo Core,
  • must be enabled in the nendo configuration in order to be usable at runtime,
  • can be run on both tracks and collections, and
  • can be chained to realize complex audio processing pipelines.

Learn all albout how plugins work in the plugin user guide.

Plugin Data¤

Some plugins in Nendo Core, upon being run on a track or a collection, produce objects of class NendoPluginData that are saved to the nendo library and attached to the track for which they have been computed. This way, tracks can be enriched with all kinds of information that facilitates their further processing, filtering and recommendation.

Accessing a track's plugin data

To learn more about how to read a track's plugin data, check the NendoTrack user guide.

Fields

Field Type Description
id uuid The unique ID of the plugin data.
track_id uuid The ID of the track to which the plugin data belongs.
plugin_name str The name of the plugin that created the plugin data object.
plugin_version str The version of the plugin that created the plugin data object.
key str The key of the plugin data object.
value str The value of the plugin data object.

That's all!

Now you should have a solid birds-eye view on all the important basic concepts in Nendo Core. In theory, you could start working with nendo right away but to get a better understanding of all of Nendo Core's powerful features, we recommend you to check out the in-depth guides on the concepts introduced above: