cXc.world Releases Music NFT Schema Standard built on Atomic Assets 🤘🎸
Published: 2021-06-16 11:18:18

![](https://media.giphy.com/media/y6IUSYmbP0pTvkhzma/giphy.gif)

We built this standard to use in our Music NFT creator coming to cXc.world. Our NFT creator will allow you to fill out a form and mint the NFT to your own collection, or, if you qualify, you can mint to our exclusive collection. 

## So why did we make a whole recommendation?

Here at cXc, we like to get down to the nitty-gritty of how things work. That’s why we invented a whole new [blockchain curation system](https://github.com/currentxchange/purple-explainer) to run cXc.world instead of using an existing algorithm. 

We carried this love over to the NFT scene to offer anyone - project, band, or individual - some suggestions to help structure the data attached to a Music NFT. This will make it easier for low-techy artists to mint their NFTs. Of course, we’ll make it even easier for no-techs to mint using our NFT creator, but releasing the standard separately invites all levels and needs to interact with cXc, Atomic Assets, and the WAX ecosystem. A Win-Win-Win!


> Below you’ll find cXc’s Music NFT Recommendation. 

This recommendation is being updated as new needs are presented, but this article is not, so check out [cXc’s Music NFT Recommendation on Github]() for the latest + greatest music NFTs.  

![Screen Shot 2021-06-15 at 4.29.32 PM.png](https://files.peakd.com/file/peakd-hive/currentxchange/23tS12jtovXXYhg1tiy7u5kCniFzUdrNAA3Picv3UPepyjdhyoTH6uZv3KQEnbtYuZEv2.png)


___


## cXc Music NFT Schema Recommendation 🎸

The cXc Music NFT Schema serves as a recommendation for any individual, collection, or application to publish a music NFT. 

The benefits of using this schema include forward compatibility (Geotags) monetizing NFT plays with traditional platform players, infinite credits and links, and more.

This Schema exists within Atomic Asset's [NFT standard](https://github.com/pinknetworkx/atomicassets-contract) on the [atomicassets contract](https://wax.bloks.io/account/atomicassets).

Feel free to use or modify this schema for your own purposes. 

___ 

## Summary 🗞️
This standard includes:  

Name of the NFT (Can be different than track title)

One audio file   
One video file   
Three images [Main, Back, and Promo]   

Title [If different than name]   
Album name   
Track # [If it's just one track]   

Any number of custom credits   
Any number of custom platform links   

ISO Country code  
Readable locale   
Pin as GeoJson Point   

License   
Rarity   



## Technical Summary ⚙️
All media fields use IPFS.   

All other info fields are strings (except "track" is int64)  

String arrays are used to store unlimited Credits and Platform links.   
Ex.  
credits ["Band":"Boaty & The Boats","Bassist: Tim Leary", "Vocalist: Boaty McBoatface"]  
platform ["youtube.com/v/gf75ja5","soundcloud.com/my/song"] or ["Soundcloud: soundcloud.com/my/song"]


![cXc Music NFT Schema Recommendation Standard (1.0.0) for Atomic Assets on Atomichub](https://files.peakd.com/file/peakd-hive/currentxchange/23t76kXYvsZejeWwmPP1umXqbiH5pEuTEKyeNsrnLXG4pMHeUwvom7753v9eoNbGNXUPB.png)

## Geo 🌍
ISO country codes (ISO 3166-1 alpha-3)

Locale string intended to be used in this format "City, County, State" or corresponding values for a given locality

geotag is a GeoJson point stored as a string


License is for codes like "CC-BY", or possibly declaring some privilege grant upon receiving NFT. 




| Field name | Type | Description | 
| :----:  | :----: | :---- |
| name | string | NFT name |  
| img | string | Primary image / Cover image |  
| audio | string | Audio file IPFS hash |  
| video | string | Music video file IPFS has |  
| backimg | string | Back cover of album / single |  
| promo | string | Extra image for promo poster, QR code, etc |  
| title | string | The actual title of the track |  
| album | string | Title of the album |  
| track | int64 | Number of the track on the album |  
| about | string | Description field with info about |  
| credits | string[] | Array of song credits |  
| youtube | string | Youtube URL |  
| spotify | string | Spotify URL |  
| soundcloud | string | Soundcloud URL |  
| platforms | string[] | How scarce is this NFT? |  
| nation | string | Three-letter ISO (USA, BRA, AUS, etc) |  
| locale | string | Concatanation of lower locales (State, County, City in USA) |  
| geotag | string | GeoJSON Point stored as string |  
| license | string | Declare license if needed, (CC0, etc) |  
| rarity | string | How scarce is this NFT? |  


## To use this Standard 

Paste the following array into the `idata` field using the Atomic Assets [createschema](https://wax.bloks.io/account/atomicassets?loadContract=true&tab=Actions&account=atomicassets&scope=atomicassets&limit=100&action=createschema) action to create your own schema on Atomic Assets, and then create [template](https://wax.bloks.io/account/atomicassets?loadContract=true&tab=Actions&account=atomicassets&scope=atomicassets&limit=100&action=createtemp) from the schema for each NFT you release. Because this standard uses the `string[]` (string array) type, it's currently not possible to use directly on [Atomichub](https://wax.atomichub.io/) UI, but should be in the future.

> ℹ️  Important  

Using this schema does not mean that each template must have every field filled, but you can only choose from fields in your future templates. You may add fields to the schema later, but not remove them. New fields will appear at the end, thus, best modify this standard to your needs before deploying.


## cXc Music Schema 🕺

```javascript
[
  {
    "name": "name",
    "type": "string"
  },
  {
    "name": "img",
    "type": "image"
  },
  {
    "name": "audio",
    "type": "ipfs"
  },
  {
    "name": "video",
    "type": "ipfs"
  },
  {
    "name": "backimg",
    "type": "image"
  },
  {
    "name": "promo",
    "type": "image"
  },
  {          
    "name": "title",
    "type": "string"
  },
  {
    "name": "album",
    "type": "string"
  },
  {
    "name": "track",
    "type": "int64"
  },
  {
    "name": "about",
    "type": "string"
  },
  {
    "name": "credits",
    "type": "string[]"
  },
  {
    "name": "youtube",
    "type": "string"
  },
  {
    "name": "spotify",
    "type": "string"
  },
  {
    "name": "soundcloud",
    "type": "string"
  },
  {
    "name": "platforms",
    "type": "string[]"
  },
  {
    "name": "nation",
    "type": "string"
  },
  {
    "name": "locale",
    "type": "string"
  },
  {
    "name": "geotag",
    "type": "string"
  },
  {
    "name": "license",
    "type": "string"
  },
  {
    "name": "rarity",
    "type": "string"
  }
]
```


# Create a Template  🛠️ 🖼️. 
Use [this example](https://github.com/currentxchange/Music-NFT-Standard/blob/main/Template%20Example.md) (also below) to create a template you can use to drop your own Music NFTs using tools like [Atomichub](https://wax.atomichub.io/) and [Neftyblocks](https://neftyblocks.com/).


# Modify this schema  🛠️

Change any field you wish when making your own schema 

Suggestions:

**Artist** - If you'd rather have your name here than in credits   
**Multiple Audio fields** - Duplicate the audio fields to include all songs on an album (DYOR on support)   
**Metadata** - Add custom metadata like the key, BPM, time, whatever you want   

If you'd rather include all of your links in the Platform field, you can remove the Spotify, Soundcloud, and Youtube field. 

Removing Youtube will also disable Youtube player from showing up on Atomichub and likely other marketplaces.


# Power of the Schema ✨ 🧙‍♂️
There is no magical benefit (yet) of using this standard, just practical ones. Youtube plays can bring extra revenue, as will the links to other players. You may credit all involved, and geographic data opens up new use cases for your NFT.  

In the future it's possible a mapp / dapp (like cXc) to allow users to register their own schemas that adhere to this standard, creating a Music-NFT exclusive platform that doesn't rely on accounts or collection names alone. 


# Evolution of the Schema 🚀 🛸

This schema will grow and evolve. Feel free to open issues on this repo with your suggestions.  

If you translate to another blockchain or NFT standard, please send a pull request adding a file named <chain>.md in the main directory containing the code needed to deploy, or open an issue with the code and I can update the repo if you prefer. 

# Music NFT Template for Atomic Assets

Here is an example of how to format a template according to this reccommendation. You will see not every field is used, as you can use only what you need.


To do this you will have to use the [atomicassets => createtempl](https://wax.bloks.io/account/atomicassets?loadContract=true&tab=Actions&account=atomicassets&scope=atomicassets&limit=100&action=createtempl) action.

[View this template on Atomichub](https://wax.atomichub.io/explorer/template/cxcmusicnfts/166771)

    
    [
      {
        "key": "name",
        "value": [
          "string",
          "Bluebirds 🥇"
        ]
      },
      {
        "key": "img",
        "value": [
          "string",
          "QmP1gc43EsmXoaYuT2XPZFWx9SDKk9JxAzpPMP4AUm3aof"
        ]
      },
      {
        "key": "promo",
        "value": [
          "string",
          "QmYzu7Dz7LqZP3jq4zmt84rpmjWm2AfhH1SF4Et5LbxVJy"
        ]
      },
      {
        "key": "audio",
        "value": [
          "string",
          "QmWGFx5epoiQBJ3CwBQ3VpNKNJ5VFoKoKDbXExiNLF5zAQ"
        ]
      },
      {
        "key": "about",
        "value": [
          "string",
          "Watching a bird opening it’s wings, Bluebirds is a soul’s reflection on the path through this marvelous galaxy. Over a classy beat Douglas expresses an egoic journey, and the desire to look past it while seeking meaning beyond science and religion."
        ]
      },
      {
        "key": "credits",
        "value": [
          "STRING_VEC",
          ["Artist: Sir Douglas Fresh","Beat: Blue Birds by Ours Samplus, live-mixed by Scarfinger"]
        ]
      },
      {
        "key": "youtube",
        "value": [
          "string",
          "youtube.com/watch?v=trpj6qmLflk"
        ]
      },
      {
        "key": "soundcloud",
        "value": [
          "string",
          "soundcloud.com/sirdouglasfresh/bluebirds-beat-by-ours-samplus-live-mix-by-scarfinger"
        ]
      },
      {
        "key": "platforms",
        "value": [
          "STRING_VEC",
          ["music.cxc.world/?id=1948"]
        ]
      },  
      {
        "key": "album",
        "value": [
          "string",
          "The Evolution of Sir Douglas Fresh (Mixtape)"
        ]
      },
      {
        "key": "nation",
        "value": [
          "string",
          "USA"
        ]
      },
      {
        "key": "locale",
        "value": [
          "string",
          "Accident, Garrett County, MD"
        ]
      },
      {
        "key": "geotag",
        "value": [
          "string",
          "[39.555,-79.240]"
        ]
      },
      {
        "key": "rarity",
        "value": [
          "string",
          "Epic"
        ]
      }
    ]


![cxc.world music nft seal.gif](https://files.peakd.com/file/peakd-hive/currentxchange/AK2E5JP8K7TjH5uahtxDH8Mh1WA4DsmUzLUjkHW2vDyJ3fURTJvPpRnVnhadkny.gif)


- - - - - - - - - - - - - - - - - - - - - - - -
## 💥 FIND OUT MORE ABOUT [cXc](https://cXc.world) 💥
- - - - - - - - - - - - - - - - - - - - - - - -

Current X Change is dedicated to harmonizing Humans, Collectives, and Gaia. Our media Mapps are just the start. As we refine Purple, we also seek to redefine what it means to come together as humans and co-create. We hope you'll enjoy the tools already here, and are infinitely stoked for what the future holds. 

## 🗺️ Experience [cXc.world 🌎](https://currentxchange.com/vision)

## 👁️ Step into our [vision](https://currentxchange.com/vision)

## 🎥  [Add Music to cXc.world](https://www.youtube.com/watch?v=7NCaG2ZPHOQ)

## 💸 Get to know our [Economy](https://github.com/currentxchange/purple-explainer)


  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 💰BUY & TRADE PURPLE, BLUx 📈
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


## 🟣 [PURPLE/WAX](https://wax.alcor.exchange/trade/PURPLE-purplepurple_WAX-eosio.token) ~~ 🔵 [BLUx/WAX](https://wax.alcor.exchange/trade/BLUX-bluxbluxblux_WAX-eosio.token) ~~ 🟣🔵 [PURPLE/BLUx](https://wax.alcor.exchange/trade/BLUX-bluxbluxblux_WAX-eosio.token)

Get specifics about these tokens in our [Economic Brief](https://github.com/currentxchange/purple-explainer/blob/master/Economic-Brief.md)


- - - - - - - - - - - - - - - - - - - 
# 🎁 OFFICIAL cXc MERCH 🛍️
- - - - - - - - - - - - - - - - - - - 

👕 Shop cXc [High-fashion](https://artofwhere.com/artists/cxc-world-merch) (Made in 🇨🇦)


🔴 cXc Stickers, shirts + More on [Redbubble](https://www.redbubble.com/people/currentxchange/shop?artistUserName=CurrentXChange&iaCode=all-stickers)

 
 
- - - - - - - - - - - - - - - - - - - - - - - 
# Follow cXc on Social Media 📱🌎
- - - - - - - - - - - - - - - - - - - - - - -


- [🖼️ Instagram](instagram.com/cxc.world)

- [🐦 Twitter](twitter.com/currentxchange)

- **[📺 YouTube](youtube.com/channel/UCBjTUosp2R_FN6AFdHV-v-Q)**

- [🐝 Hive](peakd.com/@currentxchange)

- [🏘️ Hive Community](https://peakd.com/c/hive-179421) 

- **[🔑 Discord Musician Community](https://discord.gg/4fhWgZ5R5s) (Collab + more)** 

- [🔺 Reddit](https://www.reddit.com/r/cXcMusic) 

- **[✈️ Telegram](https://t.me/cXc_world)**

- [🌊 Wavvy Music Accolades](https://medium.com/wavvys) (NFT Music Awards)

- - - - - - - - - - - - - - - - - - - - - - - 
## 💰🤑 Swaps (Instant Liquidity) 🟡🟣 [WAX/PURPLE](https://wax.alcor.exchange/swap?output=PURPLE-purplepurple&input=WAX-eosio.token) ~~ 🟡🔵 [WAX/BLUx](https://wax.alcor.exchange/swap?output=BLUX-bluxbluxblux&input=WAX-eosio.token)
- - - - - - - - - - - - - - - - - - - - - - -

What are BLUx and PURPLE? Find out in our [Purple Explainer](https://github.com/currentxchange/purple-explainer)

## (cXc) [Roadmap 🛣️ ](https://github.com/currentxchange/purple-explainer/blob/master/Roadmap.md)