Believotron Beta Getting Started Tutorial


Hello and welcome to the beta.

I wanted to share with you our release notes as well as help you get started with your Believotron Wanderlust.

Release Notes:
OLED Skew: The current OLED Jig sets the height, but not the rotation. We’re working on a next-gen solution, but we will also be 3D Printing or lasercutting a better solution.

OLED Update rate: The current code implements static updating, rather than real-time control. We need to run some timing debugging to figure out what part of the code is slowing down the OLED refresh.

Joystick Interference with Enclosure: Due to a mismatch between the lab laser cutter and the production laser cutter, the joysticks don’t have full motion. They should be travelling ±64 units, but they only make ~50 because the enclosure is stopping full travel. We’re going to experiment on an enclosure design that fixes this. In the meantime, you can scale your joysticks by MAX_VAL/64 to get full control.

Knobs: None of the current patches support a default value that remains until a knob is changed. We have code for this, but need to refactor the patches. As-is, your patch may make no noise, bad noise, or amazing noise, depending on the position of the knobs before you load the patch.

Quick Start Guide
Your synth should come with an SD card pre-installed. Plug in headphones or a mixer, maybe a midi controller, and connect the USB Micro to power (or to a computer).

Follow the prompts on the synthesizer and use the joysticks to select the starter patches.

Because each patch is dependent on the value of the Knobs, please explore their positions to understand how the sound is shaped.

If you don’t have a midi controller, you should be able to press a joystick to trigger a simple pattern.

When you’re ready to make your own patches head over here to install the patcher software:

Our codebase is located here:

When you have questions, comments, or just want to share, please head over here:

This tutorial is a work in progress. Please ask questions to help improve it!


Building your own patches

Download the Believotron Wanderlust code repo

Head over to and either clone the repo (If you know what that means), or download it as a zip file. Place the files where you think they should go. We will refer to this as YOUR_PATH.

Link the library location

Open the Axoloti Patcher software.
Open file->preferences

Add the folder for the Believotron library:

Add two include directories to the makefile

Before you build your first Wanderlust patch, you have to add another two paths.

  • Make sure all Axoloti patcher windows are closed
    -Open this file using a text editor. Your location will vary depending on OS and where you installed the Axoloti Patcher software
    C:\Program Files (x86)\Axoloti\app\firmware\Makefile.patch

  • Find the line with CCFLAGS and add two include directories
    – add “-IYOUR_PATH\Believotron\objects\script” to the end of the CCFLAGS,
    – add “-IYOUR_PATH\Believotron\objects\OLED” to the end of the CCFLAGS.
    – Here is an example of ours:
    CCFLAGS = -nostdlib -fno-exceptions -fno-rtti -mcpu=cortex-m4 -O3 -fomit-frame-pointer -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Wunused-parameter -DCORTEX_USE_FPU=TRUE -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB -std=c++11 -DARM_MATH_CM4 -D__FPU_PRESENT -fno-math-errno -fno-threadsafe-statics -fno-use-cxa-atexit -Wno-unused-parameter -IC:\Users\danie\Documents\WIP\Believotron\Believotron-Github\Axoloti-Patches-Dev\Believotron\objects\script -IC:\Users\danie\Documents\WIP\Believotron\Believotron-Github\Axoloti-Patches-Dev\Believotron\objects\OLED

Save the file. You may have to make a copy somewhere else, modify the file, and then copy it into the correct location.

Verify it works

  • Open YOUR_PATH/Believotron/Wanderlust/Wanderlust_Core_Test_Jig.axp using the Axoloti patcher.
    – Click on Live to see if the code will compile. If the code successfully compiles, you will see writing on the OLEDs.

We’re going to do a cold install and try to do a screen capture video to help you understand better how to do this. We’re also working on a more permanent solution to avoid changing the file.

As always, please let us know if you have questions.


Hi. I’m having problems compiling Wanderlust_Core_Test_Jig.axp. Each time I update the axoloti/build/xpatch.cpp, reload the patch, and try to compile, the xpatch.cpp appears to be overwritten with original and incorrect values for the includes defined beginning on line 1196. I’m not sure where the overwrite is coming from. The specific error I get is as follows:

! /Users/seannverde/Documents/axoloti/build/xpatch.h.gch
/Users/seannverde/Documents/axoloti/build/xpatch.cpp:1196:126: fatal error: C:\Users\danie\Documents\WIP\Believotron\Believotron-Github\Axoloti-Patches-Dev\Believotron\objects\script\knobs.c: No such file or directory

Operating system Mac OSX 10.13.2. Any suggestions on how to handle this?


Excellent question Seann. It looks like the compiler is tripping over the path used to point to some of our core .c libraries.

Try the “Hello World” first

The best way to isolate the fault is to try and compile the Axoloti equivalent to “Hello World”.

Run this patch.

If it compiles and you hear a sine wave output then the problem is the path. If it doesn’t compile, please post the sine log and we can troubleshoot from there.

Troubleshooting the path

Can you verify that you followed the steps of the December 17th post in this thread?

Would you post a screenshot of your path-add dialog (example below)?

Did you update the Makefile.patch located here?

Make sure you follow the instructions above to add the two directories to your CCFLAGS in the Makefile.patch

Here is an example of our paths, based on where we cloned the Axoloti-Patches repo:
/Users/dazzlingdukeoflazers/Documents/Believotron/Axoloti-Patches/Believotron/objects/script /Users/dazzlingdukeoflazers/Documents/Believotron/Axoloti-Patches/Believotron/objects/OLED


Update! I forgot to push the update that took out the relative paths.

Grab the Feb 10th update on github.


This update fixed the problem. Thanks for the fast response!