Skip to main content

Licenses

Future-proof music NFTs

Most important piece of code to ensure the longevity of music NFTs. From small licenses (sampling, remixes...) to multimedia use, this section resolves all potential issues of improper use of music in web3.

SyntaxDescription
LicensesAdditional info to future-proof song NFTs.

Creators fees for secondary sales, sampling & remixes​

Add this information if you'd like to limit certain licenses. This might be the case when creators want to limit exclusivity in a particular metaverse, or even to give permission to irl explotation for a limited period of time (ie radio broadcast, retail licenses...)

SyntaxDescription
creator_feesresale: same as "seller_fee_basis_points".
remix: percentage points to be paid to original creators of the song used for sampling/remix/cover version.
Resale Fees

While this will appear duplicated, once the legacy metadata system (minimum requirements) has been globally upgraded, "seller_fee_basis_points" will be obsolete.

Having this data added to your NFTs now will future-proof your NFT and avoid the need to update metadata in the future.

NFT minimum requirements
{
"creator_fees": {
"resale": 0,
"remix": 0,
}

License: personal use vs. media​

This section is to offer provisions based on the usage permissions. Only use personalUse or mediaUse - not both.

License option: Personal Use​

SyntaxDescription
personalUseCreators may set the startDate the same as the commercial release date. Add an endDate if creators want to limit how long the audio is available or keep blank to allow unliited time permissions.

startDate: yyyy/mm/dd hh:ii:ss
endDate: yyyy/mm/dd hh:ii:ss
territory Territorial limits for this license. Use "worldwide" to include all countries. Add country names on "exclude" to add exceptions.
Marketing Ideas

Creators could use "startDate" for pre-sale campaigns where NFTs are sold in advance to selected fans and make songs available for every holder at the time of official release.

NFT minimum requirements
"license": {
"personalUse":
"period": {
"startDate": "",
"endDate": ""
}

"territory": "worldwide"
}

License option: Media use​

SyntaxDescription
mediaUsemode: specifies the type of media permissions. For action based permissions (i.e. streams, radio plays) use "units" (plays) and "number" (numeric value). For time based permissions (i.e. months, years) use "period".
licensePrice: a numeric value of the total license cost for the "mode" conditions.
currency: currency used for this transaction (USD, SOL, ETH...). Recommended to use USD for international use.
territory Territorial limits for this license. Use "worldwide" to include all countries. Add country names on "exclude" to add exceptions.
scopeLicense permissions limited by a media type. If no limits, use "all media" as default.
priorityLicense priority in ascending order. This filed is important if there are territorial, media or licensing restrictions of any kind.
NFT minimum requirements
"license": [{
"mediaUse": {
"mode": "radio plays/years",
"units": "",
"number": 0,
"mediaLicensePeriod": {
"startDate": "",
"endDate": ""
}
"licensePrice": 0,
"currency": ""
}

"territory": "worldwide",
"scope": "all media"
"priority": 0,
},
...
]

Sharing revenue with holders​

An optional addition. Include this data on the NFT metadata to offer provisions for revenue share. These are provisions for holders revenue share as an optional addition.

Add this information when generating the creators metadata.

SyntaxDescription
holder_shareholderAddress: a trasury wallet to receive a holder share
holderPercentage: percentage of creator royalties to be paid to holders.
Holders Payout

Add a middleware (treaury) wallet on the creators list that receives the payout for holders. Once the revenues are collected, take a snapshot and distribute royalties from that middleware wallet.