Communicating binaries

One binary for each resource composite

To indicate that a binary (a.k.a. Resource file such as an AAC-encoded sound recording) is being communicated as part of a Release delivery, the Message Sender needs to provide a TechnicalDetails (in ERN-3: TechnicalSoundRecordingDetails) composite for the relevant Resource with the IsProvidedInDelivery flag set to true. Conversely, the absence of a TechnicalDetails composite for a specific Resource (or a TechnicalDetails composite with the IsProvidedInDelivery flag set to false) indicates to the recipient, that no binary is being delivered at this stage. The most typical case for this is an update to a previously sent NewReleaseMessage.

However, to simplify the processing, DDEX has agreed rules as to what binaries can be communicated and/or omitted under which circumstances. These rules are as follows:


DDEX distinguishes between "primary" and "secondary" Resources.

The former are  "Resources that are a main Resource of a Release" whereas the latter are "Resources that are not a main Resource of a Release supporting the Primary Resources (examples are lyrics, cover art etc)". Whether a Resource is deemed to be primary or secondary for a given Release is communicated in the ResourceGroup with the appropriate flag.

  • Typically, a first NewReleaseMessage about a new Release would contain all primary and secondary binaries. Therefore all Resource composites would contain one TechnicalDetails composite each (if multiple encodings are available, there would be multiple such composites for each sound recording);

  • It is permissible that a Release delivery does not contain any binaries; in that case, the NewReleaseMessage must not contain any TechnicalDetails composites either;

  • If, however, a binary for a primary Resource needs communicating (e.g. because it was corrupt in an earlier delivery), binaries for all primary Resources must be be communicated; it is not necessary to also communicate binaries for secondary resources in this case; and

  • If a binary for a secondary Resource needs communicating, binaries for all secondary Resources must also be communicated; it is not necessary to communicate binaries for primary resources in this case.

This approach has been chosen to simplify implementations – it is acknowledged that this approach may lead to an increased amount of  data to be transferred.

Multiple encodings

There is an exception to rule (3): If a ten-track Release is provided in multiple encodings (e.g. all ten sound recordings are available in stereo MP3s at 128 kbps, in multi-channel AAC at 64kbps/channel and Dolby Atmos, it is permissible to only send the set of files belonging to the same encoding and to omit all other encodings.
If, for example, one Atmos file needs replacing, the Message Sender should communicate TechnicalDetails composites for all encodings but only the ones for the Atmos encodings should have the IsProvidedInDelivery flag set to true and, consequently, only the ten Atmos encoded resource files should be provided as part of the delivery.

Multiple resource files for each resource composite

It is possible, that more than one binary needs providing for a single Resource composite. This allows offerings with different sound quality levels or with DRM-protected and unprotected files for a single Release.

To indicate that multiple binaries are communicated for a single Resource, the Message Sender must provide  one TechnicalDetails composite for each binary. Thus a delivery of a Release with ten sound recordings plus one image, where all sound recordings are provided in (lossy compressed) MP3 and (losslessly compressed) FLAC, would contain of 2*10+1 = 21 binaries.

The above rules about sending binaries to all primary Resources when one primary Resource needs to be communicated is still in force and needs extending:

  • If a binary for a primary Resource needs communicating, all binaries for all primary Resources must be communicated; it is not necessary to also communicate binaries for secondary resources in this case; and

  • If a binary for a secondary Resource needs communicating, all binaries for all secondary Resources must also be communicated; it is not necessary to communicate binaries for primary resources in this case.

The same rule applies to secondary Resources.