Behind The Paper - Widefield Acoustics Heuristic
In April 2025, after two years of persistent effort and many failed attempts, I finally had a working proof: it was possible to record ultrasounds on a microcontroller. The first prototype of BATSY4-Pro, a multichannel bat recorder built on a Teensy 4.1, was alive. This was no small feat—I had struggled for two years to implement I2S audio at 192 kHz. There was no successful example of multichannel ultrasound recording on an MCU in the open-source world, and almost everyone told me it was probably not possible.
With this breakthrough, I could finally build lightweight microphone arrays and deploy them in the field for behavioural studies. But one question lingered: how accurate are these localisations, anyway? With my earlier 4-channel array, I used the data mainly to support my responsivity framework. Localisation accuracy was never the focus—I used the standard approach of discarding improbable data points and assuming the rest were “good enough.” There was no easy way to cross-check.
Then came the flip in thinking: instead of calculating accuracy after building an array, why not predict accuracy before building it? Wouldn’t it be better to know what a configuration can deliver before investing time and effort?
Read the Article: Widefield acoustics heuristic: advancing microphone array design for accurate spatial tracking of echolocating bats
The project idea was born. To my surprise, I already had most of the building blocks in place. Years of tinkering with synthetic signals, wave propagation, and acoustic simulations—often just weekend boredom projects—suddenly made sense.
There is no such thing as useless curiosity.
The premise was simple: generate a bat call, calculate its travel time to each microphone (including attenuation), reconstruct the received signals with precise delays, and run a localisation algorithm to estimate the source. Compare the estimate with the true source position, and repeat the process systematically across 3D space. The result? Accuracy maps showing where localisation would be reliable. Change the geometry, repeat the tests, and you have a toolkit to design arrays based on desired accuracy rather than trial and error.

At first, I dismissed the idea as too trivial. Surely this is just another GitHub repo no one will notice, I thought. That doubt—the belief that simple solutions must be worthless—is something I fight in every project. When a problem is solved and the solution is obvious, it feels like looking through a clear glass: anyone could have seen it! But I kept digging.
I realised this could matter for field research. Building and deploying arrays is already difficult. Without a way to evaluate localisation accuracy, why even bother recording multichannel data? This felt worth pursuing.
By mid-May, I was nearly finished with my doctoral thesis, ready to submit in a few weeks. It was the perfect moment to dive into something new. Summer was around the corner, BATSY work was in full swing, and within weeks the code matured into the Array WAH toolkit. The first draft went online as a preprint on bioRxiv.
The response surprised me. People were interested. Engagement was better than I expected. Within weeks, I received more than 25 journal invitations—almost all of them predatory, of course, but flattering nonetheless. Despite the noise, I saw enough value in the work to submit it properly.
BMC Ecology and Evolution turned out to be the right home. The first reviews were encouraging, with constructive feedback that pushed me to expand the toolkit to include CF call types and explore the sources of localisation error more thoroughly. The revision improved the scope and clarity.
The editorial and production teams were efficient and supportive. The paper was accepted, the code was updated with the manuscript, and soon it was out in the world.
Today, a few hundred readers have already accessed the paper, and the codebase has been downloaded and tested by others. It feels good knowing that something I built might actually be useful.
So, what’s next? I have several projects underway, but one idea excites me: turning the Array WAH concept around once more—what if we could generate an array geometry given a required accuracy map? That sounds like the perfect challenge for the coming winter months.