From bfd41d6c0b48a6bdc8a78870aea20b9b7f972aa1 Mon Sep 17 00:00:00 2001 From: Andrew Westberg Date: Tue, 26 Jul 2022 19:54:42 +0000 Subject: [PATCH] Music Token Metadata CIP --- CIP-0060/README.md | 126 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 CIP-0060/README.md diff --git a/CIP-0060/README.md b/CIP-0060/README.md new file mode 100644 index 0000000000..e1eee36032 --- /dev/null +++ b/CIP-0060/README.md @@ -0,0 +1,126 @@ +--- +CIP: 60 +Title: Music Token Metadata +Authors: Andrew Westberg
Ryan Jones
Justin Morgan
Ian Singer
Anthony Eizmendiz
Session Cruz
Jimmy Londo
Gudbrand Tokerud
Kevin St.Clair +Comments-URI: no comments yet +Status: Draft +Type: Informational +Created: 2022-07-26 +License: CC-BY-4.0 +--- + +# Abstract + +This proposal defines an extension to CIP-25 for token metadata specific to music tokens. + +# Motivation + +Music tokens on Cardano can be either NFTs or FTs and contain links to audio files. In order for players, indexers, and wallets to be able to properly search and categorize a user's music collection, we need to define a common schema for creating music on Cardano. If all parties creating these music tokens follow similar patterns, apps can consume this information and make proper use of it. The existing CIP-25 is a good base to build upon, but for a good music experience, we need to standardize additional fields that will be required specifically for music tokens. + +# Specification + +This CIP divides the additional metadata parameters into two categories of `Required` and `Optional`. When minting a music token on Cardano, you are expected to include ALL of the required fields. If you choose to include one or more of the optional fields, they must be named exactly as defined in this CIP. This will properly allow indexing apps and music players to utilize as much of your token metadata as possible without issues. + +## Required Fields ### +| Field | Type | Example(s) | Notes | +| -------- | -------- | -------- | -------- | +| artists | Array\ | "artists": ["Freddy Mercury"]
*or*
"artists": [
"Stevie Nicks",
"Tom Petty"
] | | +| album_title| String | "album_title": "Mr. Bad Guy" | | +| track_number | Integer | "track_number": 1 | | +| song_title | String | "song_title": "Let's Turn it On" | | +| song_duration | String | "song_duration": "PT3M21S" | ISO8601 Duration Format | +| genres | Array\ | "genres": ["Rock","Classic Rock"] | Limited to 3 genres total. Players should ignore extra genres. | +| copyright | String | "copyright": "℗ 1985 Sony Records" | | +| music_metadata_version | String | "music_metadata_version" : "v1" | Players should look for the presence of this field to determine if the token is a Music Token | +| release_type | Enum\ | "release_type": "Single" | Must be one of "Single" or "Multiple". Multiple includes anything that will have multiple tracks: Album, EP, Compilation, etc...| + +### Optional Fields ### +| Field | Type | Example(s) | Notes | +| -------- | -------- | -------- | -------- | +| contributing_artists | Array\ | "contributing_artists": ["Dolly Parton"]
*or*
"contributing_artists": [
"Brad Paisley",
"Keith Urban"
] | | +| series | todo | todo | | +| set | todo | todo | | +| collection | todo | todo | | +| mood | String | "mood": "Empowered" | | +| lyrics | URL | "lyrics": "ipfs://QmSmadTEhB9bJQ1WHq58yN1YZaJo4jv5BwVNGaePvEj4Fy"
*or*
"Lyrics": "https://website.com/song_lyrics.txt" | | +| special_thanks | Array\ | "special_thanks": ["Your mom","Your grandma"] | | +| visual_artist | String | "visual_artist": "beeple" | | +| distributor | String | "distributor": "https://newm.io" | | +| release_date | String | "release_date": "2022-07-27" | ISO8601 Date Format | +| publication_date | String | "publication_date": "2022-07-27" | ISO8601 Date Format | +| catalog_number | Integer | "catalog_number": 2 | | +| bitrate | String | "bitrate": "256 kbit/s" | | +| mix_engineer | String | "mix_engineer": "Robert Smith II" | | +| mastering_engineer | String | "mastering_engineer": "Michael Tyson" | | +| producer | String | "producer": "Simon Cowell" | | +| featured_artist | String | "featured_artist": "The Temptations" | | +| recording_engineer | String | "recording_engineer": "Sharon Liston" | | +| co_producer | String | "co_producer": "Shavaun Dempsey" | | +| release_version | Integer | "release_version": 2 | | +| parental_advisory | String | "parental_advisory": "Explicit" | Explicit/Censored/Non-Explicit +| explicit | Boolean | "explicit": true | | +| isrc | String | "isrc": "US-SKG-22-12345" | | +| metadata_language | String | "metadata_language": "en-US" | https://tools.ietf.org/search/bcp47 | +| country_of_origin | String | "country_of_origin": "United States" | | +| language | String | "language": "en-US" | https://tools.ietf.org/search/bcp47 | +| derived_from | String | "derived_from" : "Some other work" | | +| links | Map\ | "links" : {
"website": "https://website.com",
"twitter": "https://twitter.com/username",
"discord_invite": "https://discord.gg/TEzXxjsN",
"TikTok": "https://www.tiktok.com/@knucklebumpfarms",
"discord_username": "MusicianPerson#8537",
"instagram":"...",
"facebook":"...",
"soundcloud": "...",
"bandcamp": "...",
"spotify": "...",
"apple_music": "...",
...
...
} | | + +## Examples ## + +### Single ### +``` +{ + "721": + { + "123da5e4ef337161779c6729d2acd765f7a33a833b2a21a063ef65a5": + { + "SickCity354": + { + "name": "SickCity354-Phil z'viel", + "image": "ipfs://QmQ13Cv9Wouf4rcwtNsuFhEeJVK9bEYjCYo6AN986takiu", + "music_metadata_version": "v1", + "release_type": "Single", + "album_title": "C.H.I.L.L.", + "song_title": "C.H.I.L.L.", + "song_duration": "PT3M6S", + "track_number": 1, + "mood": "chillout", + "artists": + [ + "Phil z'viel" + ], + "collection": "C.H.I.L.L.", + "genres": + [ + "Guitar Live Looping", + "Progressive Ambient" + ], + "copyright": "℗ 2022 Phil z'viel", + "distributor": "https://sickcity.xyz", + "files": + [ + { + "mediaType": "audio/mp3", + "src": "ipfs://QmfY4ugNdYYJxpbn5BnN8yt5EmiUCznexQoQi6RTEu9SuC" + } + ], + "links": + { + "discord_user": "Phil z'viel#4711", + "twitter": "@Phil_zviel_CNFT", + "website": "www.philzvielcnft.com" + } + } + } + } +} +``` + +# Rationale + +Implementing this simplifies and commonizes the process for creating music tokens on Cardano. It greatly simplifies the work that apps have to make when consuming such tokens. + +# Copyright + +This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode)