While recovering from Covid, I got a little time to finally sort out the WebMix idea which I also wrote up for Mozfest earlier in the year.
With the incredible and generous help of Mark Boas of Hyperaudio, I was able to use Hyperaudio lite to make clearly mark up a list of tunes in a DJ mix. Its what I’ve been looking to do for ages to move away from Mixcloud,
My finally setup was something I was playing with for ages but mainly via a self installed wordpress on my raspberrypi. I found problems when installing hyperaudio and in the end decided to go with a static website. I choose Publii as it had a linux client and I could just write the HTML easily (so many use markdown and other things, which would have made working with hyperaudio more difficult than it needs to be)
With the site creation out the way, I needed somewhere to host it.
Originally I was going to use Yunohost but I couldn’t find a simple webserver to just host the static files, instead I found a proxy server, which points at my NAS, which is running a very simple webserver. Of course the NAS has plenty of space, its also where the mixes sit, has a excellent redundancy and backup system.
The result of the experiment all sits here – https://cubicgarden.info/mixes
The core part of WebMix (as I’m calling it) sits in hyperaudio’s transcript and webmontization support.
Hacking hyperaudio’s transcripts
Originally I always saw Hyperaudio for its ability to tie a knot between the written word and the audio (& video). It wasn’t till I saw a demo of the WebMon functionality is when I understood it could be the thing I need for DJ mixes.
With correctly written HTML, I can tell Hyperaudio what it should do, and with Mark’s help we had a prototype up and running.
Here is an example of the code from the quiver in the underground mix.
<li class="active" data-wm="$ilp.uphold.com/B69UrXkYeQPr">
<span data-m="0">Activator, I know you can (That kid chris mix) - Whatever girl</span></li>
<li data-wm="$ilp.uphold.com/3h66mKZLrgQZ"><span data-m="127000">Air traffic (Erik De Koning remix) - Three drives</span></li>
<li data-wm="$ilp.uphold.com/B69UrXkYeQPr"><span data-m="445000">Chinook - Markus Schulz pres. Dakota</span></li>
<li data-wm="$ilp.uphold.com/3h66mKZLrgQZ"><span data-m="632000">Opium (Quivver remix) - Jerome Isma-Ae & Alastor</span></li>
Each tune has a time configured using the attribute data-m, this is in milliseconds. As I have all the data in the old CUE files I created a long time ago. Mark helped me out with a nice script which saved me manually copying and pasting. (I also considered writing a XSLT to do the conversion). In between sleeping and relaxing with Covid, I got a number of mixes up, changed the theming and finally got to grips with the static file uploading process, and the results you can see on the site.
Payment and royalties
You will also notice each tune/list item also has data=”wm” attribute with a $ilp (payment pointers). Currently they are pointing to myself and Mark Boas. Obviously I would change them to the payment pointers of the artists/producers/djs involved but I don’t know any which have them so far. Which leads nicely on to the next challenge for WebMix.
I did/do have a plan to do a mix with dance music from artists which have payment providers but that is still in the pipeline. Along side this, myself and Mark thought about some kind of database/airtable/spreadsheet/etc with payment pointers crossed linked to their discogs profile.
Maybe this is something which could be done in the next grant for the web call for participation?
Back to the current experiment, here is Opium (Quivver Remix) – Jerome Isma-Ae Alastor. You could imagine one payment provider decided between all involved which could be used to pay for each time its played on the site. (I am very aware this is very simplex and the royalties of music is a total nightmare!) but the point of the payment pointer is to hide the complexity behind one simple payment pointer, how its divided afterwards is up to each of the parties involved. I’m imagining a management agent, organisation or even dare I say it DAO; responsible for the payment pointer. There’s already things like revshare, which means you can have multiple people/entities behind the payment pointer and theres interest in this space. Long tail economics certainly could benefit here.
Anyway its a long complex area which I’m best staying out of…?
The main point is its all working and expect more updates soon… I know Mark has other ideas, while I still need to get older mixes up. I also would like to tie the whole thing to something federated or at very least setup a activity-pub feed.
Maybe I should be more ill more often?