Introduction: Simple Synth - Axoloti Controller and Software Intro
Axoloti is a versatile sound board which is programmable very much like an Arduino, just with a nodebased sound development environment. Patches programmed there are uploaded once finished and then running autonomously on the board. It has multiple analogue and digital I/O pins, to connect everything you also know from the Aduino. Furthermore it has MIDI IN and OUT, a USB plug for MIDI keyboards or similar,a 3.5 audio jack and 6.35mm IN and OUT plugs.
The software enables you to build anything you can imagine in the realm of sound, may it be your own synthesizer, a sequencer, a beat machine, guitar FX, ... you name it. After building the patch in the software, which is similar to Pure Data, vvvv or MAX/MSP (aka nodebased) you upload and have your own independent device.
This intro is supposed to show how you can build your own basic hardware controller with buttons and knobs to later design your first sound and test it immediately with the inputs you have. No need for MIDI keyboards anymore, everything can be your input.
Step 1: Hardware
What you´ll need:
- the Axoloti board
- two acrylic or wooden plates
- some buttons
- some potentiometers
- connector cables and pins to plug to the board
- small pcb prototyping board to make the power distribution easier
- some screws and nuts
- soldering iron and shrinking tubes
- a multimeter
- a USB cable to get started with the sound patches
Step 2: Buildup
We start with arranging the knobs and buttons the way we want them to be placed. Usually the acrylic has some protecting cover, where you can easily write on. So after marking the positions we drill the holes. Don´t forget to add the holes for the distancing screws. In my case I took a bigger piece of acrylic to be able to extend the project later with other sensors. Like with any other microcontroller multiplexing can help if you run out of I/O pins.
After placing the potentiometer knobs I test them with the board once to remember how to wire them. As visible on the picture with the pcb the buttons only need plus from the voltage source, since their second pin is connected to one of the digital inputs to close the circuit and give the signal (debouncing the signal is briefly discussed in the next step). The potentiometers are connected with one of the outer pins to the same row for the positive voltage supply and because they´re nothing else than voltage dividers they need the other outer pin to be connected to the ground. The middle pin will give us the analogue signal, where the direction of increasing and decreasing the signal with the knob is depending on the arrangement of the plus and minus on the outer pins. Something that can easily be tested with the multimeter in a minute. The power comes directly from the Axoloti board, since the I/O pins of the board are limited to 3.3V signals. The resistance of the potentiometers is secondary, they just split the voltage they get, so the range will be fine.
To attach the knobs to the potentiometers you have to cut them on the according height. The next crucial step is to find out the middle position of each poti to have the knob attached right. Take the multimeter, put it to the according resistance range of the poti, turn the poti fully in both directions and then, after halving the maximum, leave them there.
The second acrylic plate is drilled accordingly with some holes for the Axoloti attachment.
After having all cables soldered together with the pins (in my case the signal cables are gray and green) and connecting them to the Axoloti pins we can take the long screws and put everything in position. Choose a fitting height with the nuts and tighten everything together.
This setup now is also modular. You can unscrew the upper plate and connect the cables to any microcontroller you want. And with leaving some place on the acrylic you can add other sensors in the future.
Step 3: Software
Start here to download the software and follow the instructions for your operating system. As described there you need to plug the USB cable and headphones. After that you can open the first patch.
The workflow within the software environment is pretty easy. A doubleclick into an empty gray area will bring up the node browser, typing in the node you need brings up a preview and another doubleclick places the node. Inputs and outputs are connected via "cables" with drag and drop. You can read the names from my screenshot or just download the files attached below. Once you open a patch another terminal window opens, which shows you some status information and a checkbox which is usually already selected to "connected". When a patch is ready you select the "Live" checkbox. The patch is then being compiled and uploaded to the board. When in live mode you can either see the action of your buttons by placing some "display" (disp/) nodes or interact with the software buttons.
You can see a first introduction here as well.
I added the two patches shown in the pictures. For any further question the forum is very helpful and the community is also very active.
The first patch (testBoad.axp) is a simple test with display nodes and without sound to see if the buttons and knobs are working. The Axoloti has internal resistors for which we use the option "pulldown" to get the right signal. Because buttons are technically very noisy we have to debounce the signal. There´s a plethora of circuitry to do it the hardware way, but in this case it´s done within the software. In this patch the dial button lets you choose the duration before a second push can be triggered, in my case it´s 100ms.
The second patch (midi_test.axp) is an example how to use a button to trigger a midi note and choose the pitch/note with the potentiometer position.
Have fun exploring the world of sound synthesis!