Mayke 2025

For a few months I tried to emulate @jasonmade's wonderful year-long project where he made a thing every day. Later on it morphed into part of #makevember and Mayke (making a thing a day in November and May respectively).

Older stuff is here, 2025 is below.

Ma(y)ke Manifesto
------------------------------

Grasp the means of production 
and
Make something, big or tiny, every day in May
unless 
You want to slack off for the day.

There is no fayle, only mayke

Mayke 1: Play wav file using Circuitpython on a pico

These first few are going to be part of a larger thing. I want to play birdsong on a small cheap device and I had a pico 2 to hand. I followed this guide from Adafruit as I happened to have a MAX98357A handy. Adafruit do a nice pdf book on Circuitpython and the pico. I needed to fix the sample rate on my file (which came from the Merlin app for bird identification) using ffpmeg - I used this as a guide for the bitrate and mono and sampling, and the command was ffmpeg -i birds_sm.wav -b:a 22K -ac 1 bird_mono_22k.wav

# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
CircuitPython I2S WAV file playback.
Plays a WAV file once.
"""
import audiocore
import board
import audiobusio
audio = audiobusio.I2SOut(board.GP0, board.GP1, board.GP2)
wave_file = open("birdsong.wav", "rb")
wav = audiocore.WaveFile(wave_file)
audio.play(wav)
while audio.playing:
    pass
a jumbled pile of different coloured ripstop fragments, mostly greens, yellows and blues

Mayke #2: Materials

Choosing some ripstop offcuts from the Scrapstore for my birdsong project, working title "mental health umbrella" or "spring simulator" (£2, need more green).

I missed a day!

Which is definitely fine and within the rules!

a clear umbrella with one blue panel

Mayke #3: Umbrella re-cover

I really wanted to reuse a dead umbrella, but the leaves for the spring simulator will need a substrate so I ended up fixing an umbrella badly. It's really difficult - new respect for umbrella makers. Onwards!

vivid acid green 'leaves' cut from ripstop fabric offcuts gluegunned to a clear plastic umbrella panel. They overlap creating darker areas like real leaves.

Make #5: Leaves

Experimenting with overlapping leaves on my umbrella. It's not too bad but I wonder if tissue paper might be better than ripstop.

The umbrella from the inside with pleasing leaf overlaps

Mayke #6: Tissue

Trying out tissue paper for the leaves instead of fabric. It's maybe a bit better (and gluegun works better with paper than with fabric), though I couldn't get the acid green colour I was looking for.

2 picso attached to I2S amps via jumper wire and thence to small flat speakers

Mayke #7: 2 * birdsong

I want to make a primitive surround sound of birdsong so I found another pico (1 this time) - all worked happily as before.

Mayke #8: Dappled light

Kind of works? The flickering is coming from not supplying enough power to the LEDs, I think, so, bonus. With 200 brightness the later ones went yellow, I think because of 'red shift', but with 100 you get some quite nice gentle flickering. I also tried FastLED library instead of the Adafruit one but the flickering was too rapid and I couldn't get it to slow down.

#include 
#define PIN        13
#define NUMPIXELS  50

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);
#define DELAYVAL 500

void setup() {
  pixels.begin();
  pixels.setBrightness(100);
  pixels.clear();
  for(int i=0; i>NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(255, 255, 255));
    pixels.show();
    delay(DELAYVAL);
  }
}

void loop() {}
  
A fan cable-tied to a lamp, which is shining on an umbrella on a desk. the umbrella has a load of paper leaves stuck to it.

#Mayke 9: More dappled light

Would a powerful lamp + a crappy fan simulate leaves moving gently? not really.

a grey circle on a white background, containing a heptagon in orange, white text saying 'an unclassifiable winter event'

#mayke 10: You Have Been Watching

I can't do anything more on the spring umbrella till my new umbrella arrives. So back to cubecinema accounts music. This is a WIP for the 'you have been watching' section for end of year music (original music, mr_hopkinson enhanced version for December 2024).

Backstory: having accidentally become involved in the accounts department at the Cube, I wanted to make music out of the data we were collecting, inspired by Douglas Adams's Anthem in Dirk Gently's Holistic Detective Agency. It's written in p5.js and tone.js.

Looking at some non-Cube data to turn it into music. As a result discovered some issues with my code because of the different shape of the data, requiring some maths assistance from my partner 😬

I do the data processing to midi notes in python to ensure no sensitive data leaks out. It's simple though I'm not sure it's the best route: basically map a range of raw data values to a range of key values (in midi) - so solving a linear equation, then map specific values to the nearest value. So this data bumps along the bottom for a while then gets more interesting. But below middle C gets very muddy so it's tricky to increase the range.

#mayke 11: Different data, more music

Code by Damian

raw_min = 5
raw_max = 758
    
key_min = 60
key_max = 96

k = (raw_max - raw_min) / (key_max - key_min)
c = raw_max - k * key_max
    
def f(x):
    return k * x + c

print(f'{key_min} -> {f(key_min)} (should be {raw_min})')

print(f'{key_max} -> {f(key_max)} (should be {raw_max})')
some blue, yellow and white rhombuses against a brownish background. They are 0.25 opacity so when they overlap, it's darker.

Mayke 12: Different data

Adapting my code for some different data. It bings every 1000! play.

A load of more or less circular blobs against a red-brown background. They get bigger over to the right. The colours are a mixture of pinks, blues and reds and they overlap pleasingly.

Make #13 - blobs

Same data as yesterday but as blobs - the numbers of sides to the blob is the number of sites recruiting people and the radius is related to the number of people recruited. Bings are 1000 recruits (it's for a charity). demo.

Background is dark pinkish red, near-circular blobs go from blue to orange to yellow, overlapping nicely.

Mayke 14: Different colours

Just trying some different colours to make it on-brand for my chum, demo. Also bonus #mayke blog post.

Bonus mayke 14: blog post about #mayke

Based on my microtalk at Dorkbot

a pinkish background containing circles of different sizes overlaid on yeah other with the text 'that's all folks' in the middle in pinkish

Mayke 15: you have been watching

#mayke 15 Adding some "you have been watching" type text using p5.js (this is a colloboration with the data provider :-) Might have a go at something else tomorrow. demo.

a Pi 4 attached to a senheiser speaker mic on a wooden background A screenshot of birdnet pi's web interface, no detections yet

Mayke 16 - setting up birdnetpi

Setting up birdnetpi (again)- don't know what I've done with the other one - bit of a struggle / fayle as either my pi3b or my SD card is knackered. Luckily I had another SD card and a pi4.

a vaccum cleaner head completely taken apart on a wooden table acommpanied by an electric drill and a laptop

Mayke 17: vacuum repair

A fyxe / fayle. Vaccum cleaner got clogged with my hair and a replacement roller didn't fix it. Neither did I (it spins but not if it's touching the floor, so it's something subtle)

A mosly black cat with a white bib and whiskers, sitting on patched grass, looking at me (not the camera)

Mayke 18: Acoupi

installed acoupi birdnet but didn't really do anything with it yet (except figure out my mic's sample rate) cos I had to play with this cutie instead

Mayke 19 - a github issue :-(

Mayke 20: handcream dislodger

I'm stuck waiting for something on my birdlistener and procrastinating about the Spring Simulator, so I made a lego + servo thing that shakes this bottle of facecream to get all of it out. It's a badly designed bottle for the viscosity of the cream. Kinda worked!

Mayke 21 Acoupi-birdnet

Got acoupi-birdnet working thanks to the nice person who made https://github.com/mbsantiago/audioclass fixing the link to birdnet's moved tflite model really quickly. Not much to show yet but it's not crashing!

Mayke 22: workie!

acoupi _is_ sending me mqtt data, I'd just misconfigured my mosquitto server

mosquitto_sub -v -h my_ip -p 1884 -t '#'

acoupi {"id":"3257fa02-c6cc-42d6-869b-a98d7a739337","name_model":"BirdNET"
......
"tags":[{"tag":{"key":"Scientific Taxon Name","value":"Cyanistes caeruleus"},"confidence_score":0.9491026997566223}]}],"created_on":"2025-05-22T08:30:06.243632"} 

[a blue tit!]

  
Squares and triangles of different sizes in green and purple are overlaid in a line n an orange background

Mayke 27

More data blarps. Needs a bit of work this one, though the end is good.

An audiomoth mic attached to a raspberry pi 4 with a short flat usb cable against a brightly coloured rug

Mayke 28: audiomoth

Got my new audiomoth working (thanks to @grajohnt for the 'not usb' switch trick). All very smooth and impressive. Now I await the bat(s) (I know there's at least one, I've seen it 🏏)

[2025-05-28 21:02:15,579: INFO/MainProcess] Task detection_task[f68d7a0d-0c58-4559-8dbf-16a62a6a41aa] succeeded in 7.850580198999978s: None
A cardboard box with a pi, mic, battery in it

Mayke 29: portable bat identifier (unfinished)

and not working.

half an umbrella on a garden cane in a garden with weighted stainless steel wire threaded through it. A black and white cat is playing with it.

Mayke 30: more spring

Back on my Spring Simulator Made an accidental cat toy but solved the power for my birdsong. Not sure about the "leaves", though they do make a good pattern

Mayke 31: Spring Simulator 0.1

Last mayke for now anyway. Spring Simulator v0.1. it's...ok? not very portable and tends to get tangled. It moves nicely in any breeze thanks to @ultrazool's idea. The leaves are tissue paper chains paperclipped on. The "surround sound birdsong" is 2 x pico + amps and speakers powered by 3 AAA batteries. Base is a dead umbrella and a garden cane. Total cost £10 (tissue paper and stainless steel wire), as I had everything else in stock. There is sound - birdsong.

a cardboard box with an audiomoth mic at one end and a pi and screen at the other

#mayke 31a: Bat classifier

Bonus - portable bat classifier. Unfortunately by the time I finished it the bats had gone to bed (or possibly, it doesn't work)

A large blue umbrella with large holes cut in it decorated with green and yellow segments. It's in the garden and a cream cat looks on

5 june mayke

SpringSim is coming along thanks to some sound advice from my chum Jasmine.

a 70cm wide raised trough looking rather like a manger, with x-shaped legs

#junke weekend

Made a raised vegetable trug with my dad using some of his large collection of pieces of wood. We used this video as a starting point