a bug found in _transcribe_ code

_transcribe_ is a midi to rs232 bridge – for performance control of old video mixers and switchers – it has been available from since our launch in 2023.

by default _transcribe_ comes with mappings to control the panasonic ave55 video mixer however it was designed to be tinkered with and reflashed to map to other devices also (there is code available for mapping to other video mixers and switchers )

recently – due to some diligent debugging between myself and Robert LaPorte – we discovered there is a bug introduced when users modify the default transcribe code that maps the onboard din5-serial-midi input and output to different pins than how they are defined on the circuit.

a fix has been released now so if you are modifying firmware taken from github now this shouldnt be a problem. if you have a transcribe circuit and need any help updating firmware feel free to email me – i am happy to support you with this.

below i will explain what the issue was and why it went undetected:

mapping serial ports

the pro-micro-controller on the _transcribe_ circuit uses three different serial ports:

  • Serial – this connects over the built in usb-port and is used for monitors and debugging
  • Serial1 – this connects to pins 1=Tx, 0=Rx and is used to write to (and can also read from) the Rs232 port
  • AltSerial – this uses PaulStoffregens AltSoftSerial library to add another serial port to the pro-micro – it is used to read / write midi to the din5-serial-midi ports on transcribe:

the sparkfun pro-micro-controller we use is a breakout board for the ATmega32U4 – which is also the uC chip used on Arduino Leonardo

if we take a look at the pin table in AltSoftSerial documentation we can see that the pro-micro is not mentioned but that for Arduino Leonardo the serial pins are set to Tx=5, Rx=13:

however this is a problem for us since the sparkfun-pro-micro does not expose pin13.

in fact if we check _transcribe_s schematic we can see that din-midi-serial in and out are set to Tx=9, Rx=4: (D4 = 4 & B5 = 9)

inside the AltSoftSerial/config/AltSoftSerial_Boards.h L95-L105 we can see an alternative setup using timer1 and TX = 9, RX = 4:

and if i inspect this code on my local machine i can see that yes this config has been modified to switch the altSoftSerial pins to ones that we can use on a pro-micro board.

this means that every time that i upload firmware onto transcribes from my computer it is getting the correct altSoftSerial pin configurations, however – since this modified code sits in the AltSoftSerial package and not in transcribe code – any time someone else pulls down the transcribe firmware themself and uploads the code they are getting the default (unmodified) AltSoftSerial package so are getting that default mapping.

din-midi in and out worked on my machine! but wouldnt on anyone elses – it is my suspicion that only a fraction of transcribe users modify the firmware and also only a fraction use the din-midi ports (since it also supports usb-midi-hosts and usb-midi-devices) so i guess this bug went undetected until now.

the fix is quite easy – i only needed to fork the AltSoftSerial repo – you can see it here – cyberboy666/AltSoftSerial – make these config changes here – and then update the library being linked inside the transcribe code platformio.ini to point to this fork:

lib_deps = 
	felis/USB-Host-Shield-20 @ ^1.3.2
	blokaslabs/USBMIDI @ ^1.1.5

one small thing is that now platformio may ask you to install git on your computer so it can pull directly from this repo – but this can be done quite easily by following the steps here

the main lessons on my side is to:

  • be careful modifying code that is not in your domain – if you are experimenting take notes of what you change and do a compete reinstall of packages before release
  • always test atleast once the install process from another machine – to eliminate any local changes not being reflected in source (i now how a windows ssd in my laptop i can boot into for these and other kinds of tests)
shop update restocked & back from hiatus !

heres some new updates about whats been happening / whats coming up at

after a summer hiatus spent working festivals / installations in new zealand (+ quality holiday time with friends and family) we moved to melbourne, australia in march 2024

current catalog restocked

since being unavailable in the shop since late last year we now have back in stock as pcbs, kits and assembled units for:

plus at least a few of everything else (theres only a couple _transcribe_ units left and these are unlikely to get a restock since i have plans for a newer version of this that will supersede it)

raspberry pi zero w’s in stock

also for the first time i am now stocking a limited number of raspberry pi zero w for recurBOY – if you order one along side an assembled recurBOY i will solder on the 2×20 and 1×2 headers and test the complete unit before sending out to you

a few foundations of analog video on breadboard

i am currently preparing for the second session of my interactive six part online coursea few foundations of analog video on breadboard – the last one we did was a lot of fun – you get a kit with this vga-breadboard module and all the parts to explore a number of circuit designs online with me and others.

the next one will be running this june/july, likely followed by another session in september/october if there is still enough interest. people on the waitlist (found at bottom of the link above) will get offered spots first before a general release of remaining tickets after that – so sign up now to be part of the first release (tickets on sale end of april)

WORKS IN PROGRESS – artist talks / behind the scenes at underscores

i have been doing monthly online talks showing various WIP projects – theres still a couple more of these upcoming – you can find the details here – also check out the recordings of the talks that have been to get an idea of whats coming up:

scanlines x polyphase community showcase

every year in april we celebrate the birthday of community space and forum with an open-call and livestream of recent works – its a fun time to come together and share what everyone is up to! for this one we are combining our screening with the seasonal showcase- check out the forum post / polyphase page for info on how to submit

upcoming releases

i have just built and tested the v1_0_0 release version of two_point_one_colorizer circuit – which i have written about already here – so this should be available in the shop within the next few months (just need to order parts, make kits, write documentation and film a demo video for this)

after this i hope next to release my installation-based software/hardware for tv wall and addressable led mappings followed by some new hardware designs tba

if you want to help support this research into developing open source video instruments please consider buying assembled units, spreading the word or donating directly

shop update updates & summer hiatus

heres a short update about whats been happening and whats coming up here at

summer hiatus

i have decided to effectively close the shop for 2-3 months over the summer here in new zealand starting from monday 27th november. i will be on and off the road for festival work and holidays plus moving out of my studio (and home) to relocate to melbourne.

there wont be any underscores releases or restocks during this time but for any remaining stock it will still be possible to place an order with the understanding that your items will ship by end of feburary 2024 at the latest – i will update here and on the mailing list when we get restocked and settled on the other side.

plans and projects for the new year

once we are settled and im back working in a studio space again i have a lot of projects i want to finish and share with you. heres a few of them:

works in progress

im also planning a monthly series of online talks hosted by where i share and discuss various works in progress from behind the scenes at

as you may have noticed by the sporadic updates, teasers and ideas thrown around here and elsewhere online, im much better at starting new projects than i am at following though, finishing and sharing current ones. im also not that comfortable with sharing too much about upcoming things publicly since it makes me feel bad when i cant meet the self-imposed deadlines or end up shelving them because i get overwhelmed. i want to get better at sharing the process and allowing room for feedback and discussions in these stages though. hopefully this informal format will help with this – would be nice to see you there!


recurBOY update

since the underscores soft-launch there has been a few updates to the recurBOY project:

hardware update

the recurBOY circuit depends on more harder-to-source components than others in the underscores catalog. This is because it was originally designed only to be built together in group soldering sessions – where we would source all the parts for the workshop beforehand.

Now that it is a fully open diy project (with some people sourcing the parts for themselves) I have updated the build guide with more information about selecting these parts

recurBOY uses a 1.8 inch tft display (ST7735S) in a form-factor commonly found on ebay/amazon/aliexpress – unfortunately this is not compatible with the waveshare version – who i have found to be a reliable supplier of display hardware in the past (perhaps a future hardware revision should somehow allow this version of the display to be used also ?)

a bunch of screens to test

based on some feedback from users + my own exploration of testing these displays, I found that some of them were not working on the recurBOY r0.6 pcb. However when i tested the same (faulty?) displays with pin-jumpers wired to the pi directly they would always work!?

A laborious process of trial and error discovered that in particular the SDA pin ie SPI data input between screen and rpi was the problem – soldering a floating wire to this was enough to consistently fix this issue across all the “faulty” screens i tested.

the DISPLAY_SDA trace between PIN38 on pi and PIN5 on display is the problem!

I couldnt really see any difference to the signal before and after this “fix” on the scope, but my best guess is that the trace on the pcb is a bit too weak for some screens to read it.

example of part of the SPI message on SDA pin

I updated the pcb to make this trace much bolder – bumping circuit from v0_6 to v0_7_1 (v0_7_0 fixed it also but accidentally broke a trace on the rca out – whoops) and now every screen that I have tested works

same schematic -> different pcb !

all of this could have been avoided if we had selected a more reliable part from a reputable supplier – however this could incur also a large increase in price for the project + ( potentially ) more difficulty for diy-er to source in small batches.

for as long as we design with hacky parts occasionally we will need to make hacky updates – and i stand by this decision !

open projects have the flexibility to adapt to their changing surroundings and this is a good example of that!

software update

recurBOY was designed to distill some of the best parts of a r_e_c_u_r video sampler while running on cheaper hardware (a rpi_zero) and keeping the interface simple.

one feature of r_e_c_u_r that i use often and miss with my recurBOY is processing live-video feed (eg from a camera or another video-synth)

processing live input

running input from a piCamera over csi into recurBOY proved to be too much for the pi_zero to handle. To my surprise however it could seem to handle input from a usb-video device like EasyCap capture cards

i cant guarantee it will work with any usb-video-input , but now if recurBOY detects a device on startup you will get access to a third source mode that allows you to preview that input and apply effects to it !

self-portraits w recurBOY digitial effects !

img file & other updates

you can download new image file and see the full list of changes on the v2.1.0 release page but in short, a few of the other ‘quick wins’ i also added in this release:

  • usb_midi support – including independent shaderParam and effectParam controls
  • sampler mode now plays images – jpeg/jpg, png & gif (single image only) supported
  • output sd over hdmi – defaults to 640×480 and seems to handle this without lag

please let me know if you have any issues or find bugs in this release – it has only been tested by me so far (i will keep old image up too if you need the stability)

when looking for things to update i rely on the issue tracker on github – no promises but putting your suggestions here is the best way to have them noticed!