The Story

Fun and standing out. That’s the story of Partyleft.

The NFT bear market is making the web3 participants increasingly depressed. Especially after the FTX fiasco, people in Crypto Twitter are way more cynical. To top that off, Elon Musk is turning Twitter into Parler, which is making everyone’s social experience worse.

So I wanted to do something fun, and something unique. Plus we’re about to finish the first series of ART PONZI, so I wanted to celebrate it. I hope you all like it.

Mirror doesn't allow uploading videos. For the audiovisual version, please see OpenSea:
Mirror doesn't allow uploading videos. For the audiovisual version, please see OpenSea:

The Concept

“On-chain visual story” is a concept I experimented with while making Mergeleft and Pushersleft before. Mergeleft depicted the story of proof of work switching to an environmentally friendly proof of stake. Pushersleft depicted the story of web3 artists pushing the boundaries of concepts and techniques in the NFT space. Both of these pieces had scenes that changed throughout the animation.

Partyleft doesn’t come with scenes, but it’s rather showing a continuous, ongoing story, much like a loop. But it’s taking what was done before one step further: It has music! It’s an on-chain AUDIO-visual story.

I tried to walk in the footsteps of geniuses before me; mainly Unigrids, EulerBeats, Jonathan Mann, Bleeps, Ocarinas, and In Noise We Trust. These are fantastic pieces, and to me some of the most interesting experiments in web3.

Unigrids (January 2021): First on-chain beats (can be considered first on-chain music too).
EulerBeats (February 2021): First on-chain music**
Jonathan Mann’s “This Song Will Never Die” (August 2021): First on-chain song (depicted with notation).
Bleeps (December 2021):** First fully on-chain sounds. Also first fully on-chain generative sounds.
Ocarinas (January 2022): First fully on-chain music.
In Noise We Trust (April 2022): First fully on-chain audiovisual generative art.

Fully on-chain” in this context refers to the artwork as a file existing on the chain, with no JS or other library dependencies.

I can look at INWT all day
I can look at INWT all day

Bear in mind that most of these are generative, so the visual output is mostly beautiful shapes (except “This Song Will Never Die”, which doesn’t have on-chain visuals). I love generative art, but I find 1/1 and editioned art also beautiful; because these works can tell complete visual stories. So I wanted to do a fully on-chain audiovisual artwork that also tells a full visual story, not only beautiful shapes.

So now we have Partyleft: Possibly the first 100% on-chain audiovisual story. Or as I like to call it: 100% on-chain party 😊 Was this ever done before?


The Visual

As you can tell by now, I love skeleton aesthetics! I promise this is the last time I’m using it (in the first season of ART PONZI 😉). Of course the skeleton resembles the artist symbolism I had in earlier pieces: Findersleft and Pushersleft. I decided to distort it a little more to give a messier party vibe.

One challenge was to make sure I can actually make the skelly look like it’s really dancing. Up & down movement was easy but the largest space in the entire file is taken by the hand and leg movements. That’s because it’s actually quite complex to be able to simulate dancing with pathway animation - it needs to go to a second state, and then return to the initial state again (unlike classical glitch where there is no return, just a restart).

You'll three path destinations here: One for the beginning state, one for the end state, one for the return to the beginning state
You'll three path destinations here: One for the beginning state, one for the end state, one for the return to the beginning state

For falling martinis, I used the motion command technique - the same technique I had used in Dropleft. Another technique borrowed from Dropleft is stroke-dasharray animation: There it was used to create an ever-moving universe tear, but here I’ve used it to replicate fireworks animation. I think it looks pretty cool and it occupies an incredibly low space in the entire file.

Disco lights made me work a little but the answer turned out really simple: A circle that’s blurred with a very high standard deviation. That’s it!

The Audio

I learnt how to play guitar and keyboard when I was a kid, but haven’t touched them for a long time. But I still remember chords and I can tell which note should go after the next (my wife says I have a good music ear).

Still, I’m not a musician and I was clueless about different audio file types before I started this piece. So I had to do a lot of research.

After a few nights of googling & reading, I started exploring what was done in NFTs before. I ended up discarding notation because I wanted the file to be present on the chain with the beats and everything. I wanted people to be able to listen just using the data from the chain.

It became clear that there were two prominent options remaining at that point: WAV and MIDI. The rawer the file, the better it would be. WAV is probably as raw as it gets. It also plays automatically when you put it on HTML which is a streaming advantage; and it can go on a loop forever, much like SVG.

The problem is, WAV is uncompressed, and it takes approximately 1000 times (this is not an exaggeration) more space than MIDI. This is why when you see WAV being used (like with Bleeps or INWT), it’s a single beep sound, or it’s more like a noise than coherent music.

MIDI is optimized and compressed, although it can’t be looped and as far as I understand; you need specific players to play it, i.e. you cannot play it on the browser directly.

I have no problems with noisy audio, but I ended up deciding to go with MIDI to create a true party vibe for this piece. In the future, I’d like to use WAV as well, but perhaps for a different type of piece.

Believe it or not, the bass that you hear within this disco/beat music is an adjusted version of a lullaby for my newborn (now 4 months old) I made up a few weeks ago.

The sequencer I used to make the music
The sequencer I used to make the music

The thing with MIDI is that it may play differently on different tools, apps, or browsers. It depends on what instruments you use for your MIDI. I tested multiple instruments and tried to use only the generic ones where the output would definitely play both on an online sequencer, and offline software. I tested, as well as GarageBand and iMovie. While slightly different, both drums and bass worked in all these tools. I then tried ehubsoft where only the bass played, in piano form, without the drums. So this is the downside of using MIDI: It’s not as commonly accepted as SVG. But it’s the best we have for on-chain music.

The Synchronization

I typically do fast glitches on my pieces, but I noticed that I had to synchronize the music and the glitch animation; so after finishing everything, I had to change animation durations to match the beat’s speed.

That means not only adjusting the skelly’s movements, but even adjusting the fireworks. And adjusting fireworks means an hour of changing the optimum stroke dash offset for the firework to explode perfectly in sync with the beat…

Dasharray determines the dash length and gaps, offset determines where it starts
Dasharray determines the dash length and gaps, offset determines where it starts

The Display

As mentioned before, MIDI may not automatically play on the marketplaces. But almost every computer will run it. But since I want it to work on OpenSea, I recorded the video of the piece (SVG + MIDI) as an MP4 and uploaded the video on Manifold.

Therefore, what you’re seeing on OpenSea is the off-chain fallback file, but both audio and visual files are stored 100% on-chain and can be accessed easily. Not just reproducable through code, the actual files are stored onchain.

Fallback animation_url is used for OpenSea. Image & Audio themselves can be viewed & downloaded from the chain easily
Fallback animation_url is used for OpenSea. Image & Audio themselves can be viewed & downloaded from the chain easily

Final Thoughts

I hope everyone likes Partyleft as much as I enjoyed making it. It took me about 15 days to make it and throughout this time I was mostly sick, so this was an escape for me. It’s incredibly rewarding to be doing unique things in the web3 space. Hopefully the amount of innovation ART PONZI Series 1 brought to the space will be remembered in the distant future.

This was ART PONZI’s 9th drop. Only one more drop left before we finish Series 1, where all the released pieces were stored 100% on-chain. ART PONZI holders: Expect some surprises (and I mean beyond the already promised drops).

Don’t forget; every piece you own in ART PONZI qualifies you an airdrop of the next piece. The final piece in the Series 1 will qualify its holders for a piece from a secret collection. This means; if you keep holding all drops, the final ART PONZI piece (piece #10) will qualify you for a piece from the secret collection.

Subscribe to Chainleft
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.