How We Built C4

TL;DR we made music, we made art, we built tech, we minted CDs, we wrote to disc, we celebrated. :)

Two weeks ago we released C4 - the fourth major experiment out of Songcamp. Five songs were released across streaming platforms as the C4 EP. They were simultaneously released via a custom mint experience on the Songcamp app, where listeners could mint blank CD tokens and choose one of the 5 songs to write to their discs. After the 7-day mint closed, 2372 CDs were minted and the project crossed 17 ETH in mint revenues—split onchain instantaneously with all participating artists.

The following essay walks through the different components that brought the C4 songwriting camp and collection to life.

Camp 4 Design

It all started with an idea.

An idea dating back to 2021, when @matthewchaim began to play with the notion of onchain CDs as a format to contextualize music nft mint experiences. This idea grew and morphed and changed multiple times, finally arriving as a fitting mold for Songcamp’s Camp 4 (or C4) collection.

As the follow up to Songcamp’s 3rd camp which brought together 77 artists to create a headless band called Chaos, the idea with Camp 4 was to move away from complexity and towards simplicity. Go back to basics as it were. Thus the idea was to bring together a much smaller cohort of super talented musicians to participate in the C4 online songwriting camp, and build out a simple yet innovative minting experience around the resulting music.

C4 Songwriting Camp

Applications & Curation

Our intention was to create 5 groups of 3 musicians each, thus curating 15 musicians total. We created a simple submission form that hooked into an Airtable spreadsheet for those interested in applying to be a musician in C4. The submission window remained open for about 3 weeks, with the link shared mainly in our Discord server, weekly community Heartbeat Calls, and on Twitter. We had over 120 musicians apply to be a part of the camp.

C4 Application Form
C4 Application Form

The primary criteria was the quality of music submitted. Alongside that was ensuring a diverse group of musicians that spanned different backgrounds, cultures, and geographic locations. Our applicant base was mostly in North America, but we managed to include a handful of artists from outside the US & Canada. After that it came down to group curation, and who we thought would gel well with who. Video chat interviews were held with our shortlist, and final artists and groups were formed.

To confirm participation in the camp, all the musicians first ensured that the online camp dates worked with their schedule, informally agreed to a terms sheet, and then formally joined the camp by signing a long form agreement. The agreement outlined the participation terms of the camp, and gave Songcamp the distribution rights of the resulting songs for both nft and streaming distribution.

After all was confirmed and signed, we had our lineup of 15 musicians: Alan Lili, Alvaro Delgado, Forrest Mortifee, GRL, Iman Europe, Jon Waltz, Kathleen Regan, Keyon Christ, Mark Johns, Nate Fox, PHINISEY, Rabitt, Reo Cragun, Three Oscillators, and Upper Reality.

Compensation & Royalties

Within the long form agreement, musicians also agreed to the economic structure of the camp. This constituted 3 main components: an upfront artist payment, NFT royalties, and streaming royalties.

  1. Upfront Payment: each musician received a 1000 USDC upfront payment upon signing the C4 agreement — compensation for their participation in the camp.

  2. NFT Royalties: With the sale of Blank CDs, we would be generating and splitting revenues from the project as a whole, as opposed to per-song revenues. The split for this income was agreed to as follows: 20% to Songcamp, 8% to generative artist reelaesthete, and 4.8% to each of the 15 musicians.

  3. Streaming Royalties: Unlike the NFT revenues, streaming revenue would be generated on a per-song basis. The split for that being 80% to the 3 musicians on each track (default split evenly across at 26.7% each) and 20% to Songcamp for each song. We distributed the songs via Soundcloud For Artists, and set up Automatic Splits such that these percentage breakdowns would automatically be paid out to each participant from the distributor.

Camp Schedule & Comms

On Day 1 of the C4 Songwriting Camp, all 15 musicians met for the first time on a Zoom call. We walked through an orientation presentation, outlining the scope of camp. Musicians learnt what groups they were in, i.e. the other 2 musicians they would be working with to create a song from scratch over the internet in the subsequent weeks. Groups were each given a letter (Groups A through E), and then split into breakout rooms on Zoom to meet one another and make a schedule for their ensuing collaboration. Each group was supplied with a Google Folder to share files and submit mixes, a collaborative Spotify playlist to share inspiration with one another, and a Notion dashboard where all relevant links and information resided.

Group A's Notion Dashboard
Group A's Notion Dashboard

The C4 groups were given 2 weeks to create a song from scratch together. We had a weekly camp-wide call every Wednesday, where we listened to demos / final mixes and went over any necessary updates. We ended up giving the groups 1 extra week after the original submission deadline, to allow for some more mixing time before sending off the tracks for mastering.

The 5 Songs

This creative process resulted in the 5 songs that make up the C4 EP. They are:

  • One (Me Trago Al Sol)

  • Scar Spangled Banner

  • Either Way

  • I Don’t Need You (2 Like Me)

  • Mistakes Were Made

The online songwriting camp itself took place about six6weeks before the actual release of the project. On December 1 2023, the C4 songs were released on all streaming platforms. On that same day, the C4 collection was released at Now let’s dive into the creation and release of the C4 collection.

The C4 Collection: Mint Blank CDs & Writing to Disc

The Concept

The main concept for the C4 collection and mint experience is to collect blank CDs and write/burn a song to those discs. Blank CDs each have the same artwork. They do not have any audio on them yet, and have enough memory to hold 1 song each.

The main concept for the C4 collection and mint experience is to collect blank CDs and write/burn a song to those discs. Blank CDs each have the same artwork. They do not have any audio on them yet, and have enough memory to hold 1 song each.

Blank CD collectors then have the option to choose 1 of the 5 released songs to write to their disc. Writing to disc has 2 main consequences. The first is that it inscribes the chosen song onto the CD. The second is that the CD’s artwork evolves from the uniform blank design into a unique 1-of-1 generative artwork. Upon writing to disc, the user’s song choice, token ID and wallet address are all used as input variables to create this generative artwork. We brought on creative coder reelaesthete to build out the CD generative art canvas.

Let’s jump into the various facets which bring this mechanic and collection to life.

Art Direction (by peace_node)


“Simplicity contains complexity. … If you make a beautiful stock in cooking, it comes from all the flavors of the food boiled down to a cupful; that is the most beautiful simplicity but it’s very complex. Simplicity is the other face of complexity. ”

-Glenn Murcutt, discussing the Simpson-Lee House

C4, and its silver laden low contrast light mode, is a response to the blitz & battery of yester years crypto products leveraging flowy glowing saturated colors & countless stock lava lamp gradients. C4 is a response to contrast my own practice that often relies on textures and scans of real world objects. C4 is a skeuomorphic demonstration of harmony between the compact disc & today’s browser native experiences. C4 is an attempt at simplicity.Aesthetically I had been soaking up European gaming magazines from 1999/2000, and software box & disc art from all of the 1990’s. Looking at colors and layouts I would never even dare use. It felt so deeply forbidden, and I knew it was the exact arena we wanted to take our inspiration from. So knowing that reelaesthete was in for the ride on C4, I put together some snips from the magazine next to some of her works to illustrate how I was seeing the connection.

C4 Early Moodboard
C4 Early Moodboard

The discs themselves are created with p5.js & svg artwork, in the neo-material style of web art skeuomorphism. Playing at the physicality of the net, visually hinting at a new medium of music distribution. What happens when identity is directly introduced into artifacts of a listener’s collection? Reflective, abstract, iridescent and shockingly literal, the C4 collection artworks are a piece of speculative fiction on creator & fan software.

Art Generator

One of the important goals of this project was for the art to be as close to the medium as possible. We love image and video based collectibles, but what could be more internet-native than code rendered directly in the viewer’s browser.

For that reason, we reached out to an incredible code artist - reel aesthete - who meticulously crafted a collection of different patterns and shapes using p5.js. When compiled, these layers of shapes and patterns take the familiar form of a CD, as represented through the less familiar medium of browser-based code.

Tray Liner → Mirror Band → Inner Hub → Rings & Center Dot → Overlay → Title Imprint
Tray Liner → Mirror Band → Inner Hub → Rings & Center Dot → Overlay → Title Imprint

Each CD token’s visual and audio elements are rendered via a unique webpage. The URL of this web page is listed in the metadata for each token, under the animation_url property. In this way, the page itself is the NFT’s content. You can view an example here:

The page knows what traits, colors, and song selection to render by checking the metadata for that specific token when the page loads. It then conditionally renders the different traits based on the information included in the metadata.

This begs the question - how is the metadata generated, and how does the user’s song selection impact the results?

Metadata Generator

The metadata for C4 is a little bit different than the metadata for most other projects. We made a few key design decisions early on that necessitated an alternative approach.

First, we wanted to make sure the blank CD token was, in fact, the same exact token that becomes the written CD token upon the ‘write-to-disc’ transformation. This is in contrast to methods we’ve used in previous camps, where original tokens were burned to receive new tokens. This meant that the metadata traits needed to be malleable, so that the token could change visual state, based on the onchain decisions of the user.

Additionally, we decided that there would be three inputs which would be used to determine which visual traits would be generated:

  1. the token ID

  2. the user’s song selection

  3. the wallet address of the user who “wrote-to-disc”

To achieve this, we wrote a custom metadata API using next.js API routes. You can view an example here, which corresponds to the same token for the art renderer linked above. When called, these API routes fetch data about that specific token from the C4 smart contract, which is deployed on the Zora Network. The URL of this API route is stored in the contract as the tokenURI.

We’ll get more into how the data from the smart contract is turned into the metadata that is served via the API, as well as how that metadata determines the properties of the generative art - but first, you need to understand how exactly the smart contract stores the data for each token!

Smart Contract

The contract is a simple and standard ERC721 contract, with a few small add-ons. The most important one, though, is the ability to “write to disc” and to read what information was written to each disc.

For that, we created a “CdMemory” struct, which contained three pieces of data that store information about each disc:

  1. the wallet address of the user who wrote to that disc

  2. the ID of the song that was selected (a number in the range of 1-5, corresponding to the 5 possible song selections)

  3. a “true or false” boolean value indicating whether or not the disc was written

struct CdMemory {
        address writerAddress;
        uint256 songChoiceId;
        bool written;

    mapping(uint256 => CdMemory) public readCdMemory;

Then, by using a mapping, the token ID of each CD was paired with one of these CdMemory structs which holds the data for that specific token. You can read the memory of any CD by calling the ‘readCdMemory’ function on the contract.

Metadata Generator (cont.)

This reading of CdMemory is exactly what the metadata generator does! When the metadata API routes are visited/called for a given tokenId, a function executes which fetches the CdMemory for that token from the contract, using the popular ethereum javascript library ‘viem’.

const data = await client.readContract({
      address: "0x38898cAdB5241121620A81e7BcA47eaB8a87402A",
      abi: C4,
      functionName: "readCdMemory",
      args: [tokenId],

This information is combined into a single string that is used to generate a pseudo-random ‘seed number’. In a similar manner, this seed number is then used to determine what value each metadata trait will have for that specific token.For example, below we have an array of all the possible “Mirror Band” values:

For example, below we have an array of all the possible “Mirror Band” values:

const mirrorBands = ["Smoke", "Rolled Candy", "Haze", "Pixelated", "Holoprint"];

By using a pseudorandom javascript function, the seed number for a given token is used to select which of the five Mirror Band options is chosen for that token.

function generateMirrorBandIndex(seedNumber) {
  var seedrandom = require("seedrandom");
  const rng = seedrandom(seedNumber.toString() + "mirrorBand");
  const mirrorBandIndex = Math.floor(rng() * (4 - 0 + 1)) + 0; //max-min+1)) + min
  return mirrorBandIndex;

This is repeated for each of the traits, and even generates additional “unseen” metadata that helps the art generator pick out details for the generation, including the unique color palettes for that token.

All of these selections are then formatted into a final metadata JSON for each token, which is then read by the art generator, custom website, Opensea, Zora, and all other places the CD is displayed.

Songcamp App UI

We brought on Neesh (aka losingmyego.eth) to design our web product along with peace_node, and Daniel Rojkind on frontend development. Together with the Songcamp Studio team, they created a custom UI at where people could mint blank CDs, listen to the C4 tracks, write to disc, and explore their own inventory and the entire collection.

From peace_node on the app’s art direction:

Akin to an editorial photoshoot that plays with perspective to the point of surrealism, the C4 application is a snapshot that attempts to demonstrate deep style with a knowing wink. As if the app itself, is the music manufacturer’s pressing plant reflected back in a high fashion, mod pop, funhouse mirror, with all its silvery industrial equipment and you? Well, whatever year you think you’re in, it’s now the year 2000 and you’re 4 hours deep on a ten strip of pure love & sunshine.

Layer-2: Zora Network

We wanted to experiment for the first time with an L2 deployment in C4. Especially knowing that we wanted to make it possible to write to disc to multiple CDs in one batch transaction,we knew it would be essential to choose a network where transactions would be quick and inexpensive.

Zora felt like the right choice for the C4 project. As a community and ecosystem that deeply prioritizes art & imagination, Zora felt like a super aligned Layer-2 network to hook this collection into.


Cross Chain Minting: Decent

We partnered with Decent to bring another new feature to the Songcamp app: crosschain minting. By implementing ‘The Box’, Decent’s crosschain offering, users didn’t have to go through the often friction-full experience of needing to bridge funds to a new network before minting. Instead, we were able to meet users where they’re at - allowing them to mint blank CDs with ETH from a number of popular L2s (or Ethereum mainnet). Unique to C4, Decent also added the functionality to pay the gas for the ‘writeToDisc’ transaction from any chain. C4 is a fully cross-chain experience, giving us a glimpse into a future world without the complexity of bridges and network swapping.

The C4 Release

Livestream Release Party: Pleasr House

On release day, we threw a livestreamed release party via Pleasr House, Pleaser DAO’s web3 livestreaming product. Fit with wallet sign-in, live in-chat tipping, and NFT minting notifications, the livestream experience felt incredible. With the participating artists on stage, plus DJ and vocal performances from Songcamp fam & friends, the party felt like the perfect kickoff to C4’s release.

Mint Details & Results

The mint launched on Friday December 1st at 5pm ET. Blank CDs minted at 0.01 ETH, with allowlist pricing set at 0.008 ETH. The mint was open for 7 days total, closing on Friday December 8 at 5pm ET.

At mint close, 2372 blank CDs were minted. At the time of this writing, 834 of those CDs are written to, while 1538 are still blank.

We also shipped a website called CDROM — a leaderboard and achievements dashboard for the C4 collection.


The onchain music community seemed to really enjoy both the music and mint experience for C4. Here are some of the Twitter reactions from C4 collectors we caught during release, as well as an exciting takeaway from C4 participating musician Iman Europe:

Thank you to all those who participated!

Don’t forget to write to disc, and see you in 2024 :)

Subscribe to Songcamp
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
This entry has been permanently stored onchain and signed by its creator.