Acoustic Location

Where is that sound coming from?

For a while now I was wondering how hard is it to find out. Smart speakers are doing it with arrays of microphones and sophisticated DSP algorightms, but how complicated is it really? Is Gecho's hardware and CPU power enough to get at least some meaningful results? How complex code do we need?

In Theory...

Sound travels at around 343 m/s in the air at 20 degrees celsius (this speed varies with the temperature rather than atmoshperic pressure, here is a handy calculator). In other units that are easier for us to imagine, this is about 1235 kilometres or 767 miles per hour. Or, the other way around: what time it takes for sound to travel for example 10cm? It is 0.1 / 343 = 0.00029 seconds, or 290 microseconds. Is that too short? Perhaps our processors operate at that scale. Let's see.

Gecho and Friends

Gecho is a collaborative lizard

Kickstarter has been fulfilled, shops open and recently sold out as I've ran out of certain material. There are still some boards left so the plan is to re-open early next year.

This allows me to get back to expanding the firmware for the time being. The list is quite long, but one feature that you guys were asking about a lot was syncing with other devices. I'm starting experimenting with my humble but growing collection of prevailingly DIY synths, most of them have some kind of clock input or output.

The Shop

After Kickstarter has been fulfilled, here is your chance to grab one of the remaining units!

If you feel like putting some effort in, there is similar spectrum of DIY options as it was in KS campaign. Also, for hard-core soldering fans, a new type of DIY kit is available, consisting of bare PCB board and SMD/THT elements. By constructing it, you will earn the rank of "Master Gechologist". The advantage of this kit (apart from lots of fun) is option to mount LEDs in any colour scheme you like, and choose between black or dark turquoise-blue circuit board.

Raw boxes (without finish) are not available anymore, however the "Light Oak" version is light enough, allowing for additional coatings of your choice.

DIY Kit - Wiring the Box

Got the box? That's great!

If your Gecho board also requires some soldering, please follow this guide first.

Drilling holes for wires

If you find it handier to drill from the battery side, it is a good idea to put some thick cardboard between the lid and rest of the box, to not damage the lid. Or do it other way round, and put a cardboard under the box, to not damage the table.

About Channels

About Channels, or how Math is not really that hard

What are those "channels" anyway?

It's just a fancy name for program - kind of like washing machine has a program. Gecho has relatively large memory for code - 1MB, of which currrent firmware occupies

Some channels are passive, have no interaction - you can just listen to them. Other react to your input in various forms. Some are for testing and some for settings or programming your own content. The list is long and expanding.

From Random Signal to Arrangemements

Generating Chord Progressions from Random Signal

Few articles with original writing appeared recently with their own interpretation of Gecho, not always entirely consistent with the truth.

In a fraction of them I noticed one misconception being perpetuated: reportedly, Gecho can "compose music out of chaos", i.e., invent melodies and chord progressions that sound nice. But wait, this sounds like a problem for A.I.! It can't really fit into a single-chip synthesizer. Or can it?

There are known rules about what sounds good toghether and what does not. Machine learning or genetic algorithms come to mind - why not try to apply few simple principles and see where it goes.

Tutorial - Changing sample pitch in real time

Implementing New Voice Type for Melody - Sampled Instrument

Objective: Demonstrate how to expand the functionality using the framework, showing examples of how to:

  • add a new type of voice, played by a real instrument
  • use this voice for melody, by changing pitch in real time


If you haven't done so, please start with the first tutorial in the series to make sure you have all equipment and software ready.

Get Started

Let's assume you got the IDE installed, board connected to SWD and you tried the flashing utility to see that it communicates well.

Find a sample you want to use for the new instrument, it should be a WAV file, mono, 16bit. The sampling rate is not too important here.

Tutorial - How to upload arbitrary data to STM32F4 Flash Memory

Uploading binary data to a desired address


Gecho has one megabyte of FLASH memory, and only a fragment is occupied by standard firmware.

You might need to use this process, if:

  • you wish to extend the functionality
  • you need to store larger amount of data
  • it is not handy to pack data into source files (as constants etc.)
  • you want to be able to replace this data without interfering with firmware

Connect your SWD Programming Adapter and start STM32 ST-LINK Utility.

Into the "Size" field, enter 0x100000 - this is a full range of FLASH memory available in our MCU - and click "Connect to the target" icon.

Tutorial - How to implement new channel

Implementing New Channel - A Rudimentary Drum Machine

Objective: Demonstrate how easy is it to expand the functionality using the framework, showing examples of how to:

  • add a new channel with any numeric code we want
  • enable or disable standard features that are available, to borrow some functionality from other channels
  • upload arbitrary data into FLASH memory and access it, this is handy for lot of other things too
  • decode binary 16-bit PCM sample data from a standard WAV format
  • play multiple instruments in parallel, from FLASH memory with zero waiting state and no need for buffering in SRAM
  • bind this new functionality to existing controls
  • mix the signal output from our custom function into the loop with or without delay/echo

Requirements for any Gecho firmware programming

Gecho Loopsynth - Little bit of background

Making of the Synth

Pocket-size subtractive, hackable DYI synth

Making of the Synth

I have been fascinated by synthesizers from very early age. My best friend's dad ran a wedding-playing band and he owned Roland JX-3P (just guessing the exact model now, from my memory of silver buttons with red LEDs inside). When he allowed us to touch it after lots of nagging, and we powered it on, my ears immediately noticed it was something out of this world. I was born in Czechoslovakia, a country run by communists, where we spent our days duplicating 10th copy of illegally imported tapes through cheap "International" branded double decks.