HARDWARE GUIDE · AXOLOTI CORE REV 1.x

Make the old board sing again.

The practical route from an unpowered Axoloti Core to a running SoundGraph patch—plus every connector, the microSD rules, the programming pipeline, legacy patchers, expansion pins, and MIDI Learn.

Top-view mechanical drawing of the Axoloti Core revision 1.0 circuit board
Mechanical top view · PCB Rev 1.0 · not a wiring diagram

First sound, no development tools.

If your Core arrived with a prepared SoundGraph microSD card, this is the shortest safe path. A prepared card has a start.bin file at its root.

  1. Turn the listening level down.Lower the headphone, mixer, interface, amplifier, or powered-speaker gain before connecting anything.
  2. Insert the microSD card while power is off.Use a FAT32 card. The gold contacts face the PCB; align it carefully and never force the slot.
  3. Connect one audio output.Use the 6.35 mm stereo line output for a mixer or interface, or the 3.5 mm headphone output for headphones.
  4. Connect a controller if the patch expects one.Use DIN MIDI IN, or plug a class-compliant USB MIDI controller into the USB-A host port.
  5. Apply power.For a first test, use a known-good micro-USB data cable from a computer or USB supply. For standalone use, a correct 7.5–15 V center-positive DC adapter also works.
  6. Wait for the boot patch, then raise the level slowly.The stock firmware loads /start.bin at power-on. MIDI Program Change selects entries from a baked SoundGraph bank.

What every port does.

The three audio jacks are easy to misread: line input and line output are each stereo on one 6.35 mm TRS jack; the smaller jack is a separate stereo headphone output.

ConnectionConnector and cableUse
Power / programmer Micro-USB device portMicro-USB data cable Powers the board, programs it, carries the Axoloti vendor USB connection, and exposes class-compliant USB MIDI.
USB host USB Type-A socketThe cable supplied with the MIDI controller Connects a class-compliant USB MIDI keyboard, pad controller, or control surface directly to the Core.
DC power 5.5 × 2.1 mm barrel jackRegulated 7.5–15 V DC, center-positive adapter Runs the board without a computer. Never use AC, center-negative power, or more than 15 V.
Audio input 6.35 mm (¼-inch) TRS stereo jackStereo TRS or TRS-to-dual-TS breakout Two channels of line-level audio on one jack. It is stereo TRS, not a balanced mono input.
Audio output 6.35 mm (¼-inch) TRS stereo jackStereo TRS or TRS-to-dual-TS breakout Two channels of line-level audio on one jack. Begin with the downstream gain turned down.
Headphones 3.5 mm (⅛-inch) TRS stereo jackOrdinary stereo headphones or a 3.5 mm stereo cable Headphone-level stereo monitoring. Start quietly when loading an unfamiliar patch.
MIDI input 5-pin DINStandard 5-pin DIN MIDI cable Receives note, controller, clock, and program-change messages from conventional MIDI gear.
MIDI output 5-pin DINStandard 5-pin DIN MIDI cable Sends conventional DIN MIDI from a patch.
Storage microSD slotmicroSD card; a card reader is useful for preparing it Stores a boot patch, SoundGraph patch banks, samples, and other patch data.
Expansion I/O Labeled 2.54 mm pads / optional headers0.1-inch headers, jumpers, or a purpose-built shield Breaks out GPIO, ADC, two DAC outputs, SPI, I²C, UART, ground, 3.3 V, analog 3.3 V, and 5 V rails.

USB is easiest. DC is specific.

Input
7.5–15 V DC
Plug
5.5 mm outer / 2.1 mm inner
Polarity
Center positive
Alternative
5 V through micro-USB

Use a regulated DC adapter. The board schematic connects the barrel center contact to the protected VIN path and the sleeve to ground. Choose an adapter with enough current for the Core and anything drawing power from its USB host port.

  • Never use an AC-output adapter.
  • Never use a center-negative supply.
  • Never exceed 15 V at the barrel jack.
  • Do not inject power into the expansion rails unless you understand the board’s power path.
  • When a USB controller causes resets, test without it or use a controller with its own power.

Small, ordinary, FAT32.

Recommended 32 GB or smaller · FAT32 · name-brand · Class 10 / UHS-I is already more than fast enough

The stock Axoloti 1.0.12-2 firmware uses a FatFs configuration without exFAT. A 64 GB-or-larger SDXC card normally arrives as exFAT and will not work until reformatted; a native FAT32 SDHC card avoids that friction. Speed class is not the bottleneck for this workflow.

For a standalone SoundGraph bank, the card contains:

/start.bin             boots at power-on
/index.axb             lists bank entries
/<patch-name>/patch.bin
/<patch-name>/b0.raw  optional sample or speech data

Program Change 0 selects the first bank entry. Out-of-range program numbers fall back to /start.bin. Power the board off before inserting or removing the card.

What “program the board” means.

  1. 1GraphSave the SoundGraph patch as JSON.
  2. 2ResolveSoundGraph expands modules, checks the graph, and fixes execution order.
  3. 3Generatesgaxo turns supported nodes into Axoloti C++.
  4. 4CompileThe ARM toolchain links a patch binary against stock firmware symbols.
  5. 5InstallUpload over micro-USB for development, or copy a baked bank to microSD.
  6. 6RunThe firmware starts the binary; the card can boot it without a computer.

Prepare the developer tools

From a SoundGraph source checkout, first build the graph validator. Then prepare the Axoloti SDK and Python environment. The package-install line below is for macOS with Homebrew; use equivalent packages on Linux.

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target sg-validate

cd embedded/axoloti
brew install libusb arm-none-eabi-gcc arm-none-eabi-binutils
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
tools/fetch-sdk.sh

Compile one graph

.venv/bin/python sgaxo/codegen.py ../../examples/patches/first-synth.json

The compiled files land in embedded/axoloti/sgaxo/build/. This command proves the patch compiles; the current repository’s hardware-in-the-loop tools perform tethered USB upload and start.

Bake a standalone card

.venv/bin/python tools/bake-bank.py ./card \
  ../../examples/patches/first-synth.json \
  ../../examples/patches/plucked-string.json

Copy the contents of ./card to the root of a blank FAT32 microSD card. A card reader is fastest. Advanced users can add --board to write through a connected Core, but USB card writes are much slower.

Open the current Axoloti backend and test notes

Two patchers, one important firmware choice.

Original

Axoloti Patcher

The original Java patcher and the best historical reference for .axp, .axs, .axo, and .axh files. Connect the Core by micro-USB, choose Board → Select Device, connect, open a patch, and enable Live.

Going Live generates compatible code, compiles it, uploads the binary, and starts it. Leave Live mode before changing the graph; only one patch can run on a board at a time.

Axoloti 1.0.12-2 release

Maintained fork

Ksoloti Patcher

The standalone Ksoloti Patcher has legacy support for original Axoloti Core boards. It can work with only one board family at a time, so select Axoloti rather than Ksoloti when configuring it.

Firmware warning: SoundGraph’s current backend targets stock Axoloti 1.0.12-2. Do not accept a firmware replacement prompt unless you mean to switch this board to the Ksoloti workflow and are prepared to restore stock firmware later.

Ksoloti installation guide

The labeled edge pads.

Axoloti names expansion pins by STM32 port: PA0 means MCU port A, pin 0. The board exposes the groups below. Use the labels printed on the PCB and the official schematic for physical placement; this responsive table describes electrical function, not left-to-right pad position.

PinsAnalog functionCommon alternate function
PA0–PA3ADC1 IN0–IN3General-purpose digital I/O
PA4ADC1 IN4DAC OUT1 · SPI NSS · GPIO
PA5ADC1 IN5DAC OUT2 · SPI SCK · GPIO
PA6ADC1 IN6SPI MISO · GPIO
PA7ADC1 IN7SPI MOSI · GPIO
PB0–PB1ADC1 IN8–IN9General-purpose digital I/O
PB6–PB7—UART TX / RX · GPIO
PB8–PB9—I²C1 SCL / SDA · GPIO
PC0–PC5ADC1 IN10–IN15General-purpose digital I/O
VDD—3.3 V digital rail
VDDA—3.3 V analog rail
+5V / GND—5 V supply rail and return

The board also exposes SWD test points and separate MIDI test points; those are service and hardware-development connections, not ordinary user I/O. See sheet 6 of the schematic for the expansion pads and sheet 7 for MIDI.

Open the Axoloti Core v1.0 schematic

Remap by moving the control you mean.

Bind a hardware CC to a face knob

  1. Connect the controller before opening SoundGraph. The desktop editor opens the operating system’s MIDI inputs automatically.
  2. Open the patch’s Rack view. The target knob must already be exposed on the patch’s Face.
  3. Hold Ctrl and click the SoundGraph knob you want to control.
  4. When the status message says MIDI Learn is armed, move the desired hardware knob, fader, or pedal.
  5. The next MIDI Control Change message replaces that control’s prior binding. Save the patch to keep the mapping.

Press Escape before moving a controller to cancel Learn. Incoming CC values use the SoundGraph control’s own range and scaling, so a logarithmic frequency control still feels logarithmic.

Use a MIDI CC as a graph signal

Add a MIDI CC node when the controller should become a cableable modulation source instead of directly turning a face knob. Press Learn on that node, then move the desired hardware control. The node stores:

CC
The controller number. CC 1 is normally the modulation wheel; set this field to 128 manually when you want pitch bend.
Low / high
The output range produced by MIDI values 0–127.
Resting
The value used before that controller has sent anything.
Glide
Smoothing that removes abrupt steps from knob movement.

The attached mechanical references.

These files help with enclosure fit, cutting, and CAD. They do not define power requirements or signal pinouts; use the schematic for electrical work.

Six-up vector cutting layout for Axoloti Core enclosures
Six-up enclosure cutting layout · blue vectors are intentionally hairline-thin

Start with the boring causes.

The computer does not see the Core.

Replace the micro-USB cable with one known to carry data, not just charging power. Disconnect the USB-host controller, reconnect the Core directly to the computer, and confirm the board LEDs come on. In legacy Axoloti, use Board → Select Device before Connect.

The board resets when I play the USB controller.

The controller may draw more power than the board or upstream USB port can comfortably provide. Test with the controller disconnected, use DC power with the correct specification, or power the controller separately if its design permits.

The microSD card is ignored.

Confirm it is 32 GB or smaller and formatted FAT32, then confirm start.bin is at the card root rather than inside another folder. Power down, reseat the card, and try a second name-brand card.

The patch compiles on desktop but not for Axoloti.

The Axoloti target intentionally supports a tested subset of SoundGraph nodes and has a small patch code window. Read the compiler’s named refusal; remove or replace the unsupported node instead of assuming the graph was uploaded.

The patch runs but produces no sound.

Check that you used stereo line output, not input; confirm the patch reaches a Stereo Output node; send a MIDI note if the patch expects one; and increase downstream gain slowly. For a bank, send Program Change 0 or reboot to load start.bin.

Primary sources.

Scope: original Axoloti Core revisions 1.0 and 1.2. The downloadable mechanical files on this page identify PCB Rev 1.0; compare any enclosure work against the physical board in front of you.