Granular Sampler

Granular Sampler

We are going to demonstrate how to implement a new, completely different type of synthesis (or maybe better called a sound processing as the sound is not really synthesized). You can control parameters interactively (start, length of grain and number of voices), and replace the grain source material (or part of it) in real time. In result, this creates very interesting sounds and is a lot of fun to play.

The hardware is capable of sampling up to 1 second of stereophonic sound, and playing pieces of it back in parallel, as up to 40 grains per ear. The rest of the memory is reserved for echo/loop buffer, if that's not required, sampling time can be increased.

Drum Sequencer

Drum Sequencer

The channel #234 has been printed on the quick-start sticker, but left to be implemented later, as I thought it will give excellent opportunity to demonstrate how can you expand Gecho's functionality. It is relatively easy to do and a lot of fun!

Basic Operation

The goal here is to make a channel where you can create and play back sequences, using the four built-in drums (at least for starters). You will learn how to play back a sample stored in MCU's FLASH memory, detect triggering of proximity sensors, and control LED lights. The whole operation could be described in one sentence: Drive individual drums by four sensors, store these events into memory and play back on the next loop.

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


Please note this guide is for v1 Gecho (made in 2018 and earlier), in v2 the box is removable and requires no assembly.

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.