Search This Blog

Thursday, 3 October 2024

Audio over video

Or: How I learned to stop worrying and love the Fast-Fourier-Transform

 

This is the demo video of the Audio-over-STFT system. The Git repository can be accessed here. I'm currently working on a re-write in rust, until then the system is fairly limited.

At some point I'll put on a pilot exhibition to demo the tool an art installation.

Upon a real "version 1", I'll do a proper blog post describing the maths at work here, although the demo video should give a good idea of this...

Saturday, 10 February 2024

Aggregated a lot of files on a sunday

Route One - automation for bulletins

Pretty endpoint page (minimalism)

After discovering the ease of the command line YouTube downloaders, i set out to create a very quick aggregator for football content which would automatically get audio files ready for Monday mornings Route One Podcast.

Note: this project is in no way endorsed or used by anyone other than me.

First we get the channel file, listing the channels we want to draw from:

with open("channels.json", "r") as f: channels = json.loads(f.read())

Then, for each channel, we download the metadata of the last 80 videos:
for channel in channels:

id = channel["url"]
os.system(f"./yt-dlp -q --progress --skip-download --write-info-json -I 0:80:1 {id} -o 'data/%(id)s'")

Then we gather the data, sorting it and trimming off any irrelevant videos. In this case we measure "relevance" by the metric of comments on the video.

data = []
for f in [file for file in os.listdir("data") if os.path.isfile(f"data/{file}")]:
    with open(f"data/{f}", "r") as raw:
        file = json.loads(raw.read())
    #os.remove(f"data/{f}")
    if "duration" in file.keys():
        video = {
            "id":file["id"],
            "title":clean(file["title"]),
            "description":clean(file["description"]),
            "uploader":file["uploader"],
            "views":file["view_count"],
            "likes":file["like_count"],
            "comments":file["comment_count"] if "comment_count" in file.keys() else 1000
        }
        data.append(video)
# sort and trim the list of videos
data.sort(key=lambda x: x["comments"]) # sets the variable we sort by
data = data[-10:]
# delete the previously gatered audio files
for f in [file for file in os.listdir("audio") if os.path.isfile(f"audio/{file}")]:
    os.remove(f"audio/{f}")

We then download the chosen files and update the website where the audio files are available for myself.

for video in data:
    os.system(f"./yt-dlp -x --audio-format mp3 {video['id']} -o 'audio/%(id)s'")
#write the index file
with open("index.html", "w") as f:
    # get the template file
    with open("template.html", "r") as t:
        template = t.read()
    f.write(template)
    for video in data[::-1]:
        path = f"audio/{video['id']}.mp3"
        f.write(f"""
            <div class="container">
                <audio controls src='{path}'></audio>
                <p class="title"><b>Title:</b> {video['title']}<br><em>@ {video['uploader']}</em></p>
                <p><b>Views:</b> {video['views']}</p>
                <p><b>Likes:</b> {video['likes']}</p>
                <p><b>Comments:</b> {video['comments']}</p>
            </div>
        """)
    f.write("</body></html>")

Monday, 25 December 2023

100GHz

A collection of photos of my 100GHz horn antenna built from riveted aluminium.

Friday, 8 December 2023

Supermax sitcom

Introduction

Fade-in

Black to fade to cheery title sequence into a supermax sitcom world where nothing changes. Such is the life of the evergreen show, The Simpsons, Family Guy, Friends etc etc etc. But where all of NBC's horses and men cant keep Mat LeBlanc lookin' young, the same can't be said for Maggie Simpson (36).

Fifty-thousand years

‎26/‎02/‎2023

Actor is sitting on a stool on a plain, empty stage. Modern aluminum crochet hook in one hand, ball of wool of an arbitrary colour in the other.

Our tools. This is what we had. Pre-history.

A hook,

Actor holds the hook up.

Carved from wood in the gap between two roots, sheltered from the wind not rain. Carved from bone, chipped and snapped from a leg not far enough through its fifty-thousand rotations. Cast from steel only re-heated in the heart of a furnace

Just as it has been moved and twisted by my hands, mux my fifty-thousand year brothers and sisters, my hands mould to it in twin grooves.

Our tools.

Sunday, 3 December 2023

Another Year of Bodies

 Short Film Week [7]

Another Year of Bodies is in my opinion, my best short film. It was submitted twice to the Into Film of the Month festival, coming runner up.

Friday, 1 December 2023

070420

 Short Film Week [5]



The unnamed 070420 was me taking advantage of my, for the first time ever, clean room, containing only a set of draws, bed, glass and telephone.

Thursday, 30 November 2023

There's Somebody at the Door

 Short Film Week [4]

For the jelly eating noises i bought 4 small packs of 70p jelly from the co-op and ate them while mic'd up. It was one of the most terrible things I've ever done.

-Will, Assessment submission 

Wednesday, 29 November 2023

KRONOS

 Short Film Week [3]


[KRONOS_automateddistress_2200.21.2.2301] [Priority:10] 

KRONOS is an idea that was meant to have actors and visuals and polish. Unfortunately all those plans fell through and years later I decided just to go for it. Simple. Solo.
So…
It's 2200 hours on the 20th February 2301, and a meteor has just hit earth, no one saw it
coming.
Half the population died instantly, the other half died the day after save from a handful of
survivors left huddled in bunkers across the world to pick up the pieces. propped
apocalypse.
But this is the future, and they have the Time machine.
Within three years the machine is done and everyone is ready to go.
Three military personnel are chosen, the best in the world to be the first people to change
history.
The day arrives and with a flash the machine is gone, everyone has their fingers crossed.
The machine tears through history, everything is going smoothly.
Calm before the storm, because things start to brake, red lights flashing and the machine
starts to fall out the sky. Whenever this thing crashed, it's going to make a big bang.
Estimated crash time?
2200 hours 20th February 2301, let's hope it crashes somewhere out of the way.
The machine plows straight into 2301,
In the resulting explosion half the population died instantly, the other half died the day after.
But don't worry because this is the future, we've got the time machine.

-Taken from my notes (19/09/2019) 

The original storyboard can be found here.


You can watch it on YouTube.

Tuesday, 28 November 2023

Meatball

Short film week [2]

For the Christmas of 2020, my parents brough me a large bottle of liquid latex.

Monday, 27 November 2023

The Next Day

 Short film week [1]

After winning the Hinterlands Film festival short film competition, and getting £200 cash in an envelope for it, I bought a couple 2x4" planks and some 4x8ft facing and built 2 large 8ft square walls.


Sunday, 26 November 2023

Short Film Week

Starting the 27th November! (tomorrow)


It's Short Film Week! Each day ill post an old short film that I like, some of which have never been seen my non-will, human, eyes.
Monday - The Next Day
Tuesday - Meatball
Wednesday - KRONOS
Thursday - There's Somebody at the Door
Friday - 070420
Saturday - Mr Parrots Strange dream
Sunday - Another year of Bodies

Saturday, 25 November 2023

2.5D Printer

 

I taped a pen onto a 3D printer to draw a picture of my cat.

Watch the timelapse on YouTube.

Used a free web photo to 3D model converter, which I could then slice to produce the required G-Code.

Monday, 20 November 2023

Mechanical Tongue Drum

Mechanical Tongue Drum is a art piece that I created in 2022.


Tristar panoramas

 Where we're going we don't need the Garden Gnome Package Viewer


A long long time ago, Tristar boats hired a man to take some 360 degree photos inside their boats and produce a panorama tour.
For some reason he chose to use the Garden Gnome Package Viewer.

This involved the potential clients having to download a 3rd party application called the Garden Gnome Package Viewer and they were left with a ton of stupid high-quality images.

The Garden Gnome Package Viewer.

Why is it called that.



I ended up using an amazing tool called Panolens and using a neocities site to host it.

Along the way I also built a simple python program to allow me to click on a point on the unprocessed image and get the cartesian coordinates that Panolens takes.

Broadcasting in the Æther

A Handbook for antenna design for use in sigil magick by William Greenwood.

BitÆ is an idea that has stuck with me for a long time. Originally written as a research paper, then later a zine (2022) and finally a radio package (2023)

The radio package can be found on my Soundcloud, or streaming on XMDV Radio.

DARWIN

My body is a river

My name is Darwin and my body is a river is a zine that I wrote about departure boards.


During its creation, I wanted to accurately show the LED readout of a departure board. I thought the easiest way of doing this would be to create by own font, which turned out easier than I though I would be.
For some reason I seemed to have subconsciously known this was going to happen and had been taking photos of every departure board I saw for the last couple months.
Armed with this substantial set of reference images I created: DARWIN regular.
You can download the font here.




Invest in Wheat

 A test run.

A map of the streetlights in Salford. Highlighted are the ones on Cross Lane
A map of the streetlights in Salford. Highlighted are those used in the route.

A series of sickers, placed around the salford, on lampposts or other stickable surfaces. Each sticker has a more outlandish message: starting with small scale, local, messages and ending with esoteric outbursts.
[...]
This is a random act designed only to make someone see a sticker out of the corner of their eye and just think "What the fuck did that sticker mean... oh is that another one?" If no-one where to see this it wouldn't matter to me. Importantly, i will not be able to see the effects of this project, and this is not the larger goal. Sometimes something weird has to happen to someone and my god-given goal is to make that thing happen, to give someone an experience that they'll tell to someone and that person wont believe them.
Excerpt from my notes (26/01/2023)

Invest in Wheat was me terrorising Jack again.

Pressure Cooker

 

Jack Christian walks you through a full 3 course meal (and a drink) prepared entirely within a hotel room, armed with only a knife, ingredients and a cheap suit.

Pressure Cooker is a cooking show. Produced in whole by me and Jack.

Dreamed up near the end of our first year of uni, we hastily purchased a room in a unnamed budget hotel.

You can watch it on YouTube.

And check out The music of pressure cooker playlist on Spotify.

For a couple months, it screened as part of the Lift-Off Global Network (we got a laurel somehow).