This repository contains the source code, Ableton remote script and hardware design for the Pulsar Heavy Industries Cenx4 controller.
The main features are (some of which are already fully implemented):
- Easy to use: Automatic mapping of selected device's parameters (as seen in the image below). Getting this to work requires almost no setup and no manual mapping in Ableton (just selecting the right remote script).
- Modular: The thing you see is actually two modules connected togeter using CAN bus.
- Updateable: Support firmware update over MIDI and over CAN. The master unit takes care of updating the slaves automatically.
- Open source: Can be used as a basis for many other controllers.
I am still in the process in documenting everything, but please refer to the following posts for more information:
Basic steps in getting this to run
- You will need the following:
- The pinout of the Debug cable is as following (see page 2 here for where pin 1 is on the flat cable):
- VCC: Pin 1
- GND: Pin 2
- NRST: Pin 6
- UART_RX: Pin 7 (currently unused)
- UART_TX: Pin 8 (currently unused)
- SWCLK: Pin 9
- SWDIO: Pin 10
- If using an STM32F4DISCOVERY board as JTAG, remove the jumpers on CN3 (labeled "ST-LINK"), and connect the following to CN2 (labeled "SWD" - pin 1 marked with a dot):
- 1: VCC (Pin 1 on TagConnect flat cable)
- 2: SWCLK (Pin 9 on TagConnect flat cable)
- 3: GND (Pin 2 on TagConnect flat cable))
- 4: SWDIO (Pin 10 on TagConnect flat cable)
- 5: NRST (Pin 6 on TagConnect flat cable)
- 6: Unused
- There is a tiny adapter board inside
misc/st-tag-adapterthat makes it easier. You can order it from OSH Park.
- You will need at least one Cenx4 in Master configuration - this means CAN terminator jumpers installed (labeled CAN_TERM) and a USB connector soldered on.
- Download and extract ChibiOS 16.1.7 into
- Download and extract uGfx 2.7 info
- Make you you have a working ARM toolchain in your path
- Build the bootloader by running
- Start openocd by running
openocd -f stm32f4discovery-chibios.cfginside the
- Use GDB to download the bootloader:
% arm-none-eabi-gdb build/ch.elf GNU gdb (GNU Tools for ARM Embedded Processors) 220.127.116.1160616-cvs Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> ... Reading symbols from build/ch.elf...done. (gdb) target remote 127.0.0.1:3333 Remote debugging using 127.0.0.1:3333 0x00000000 in ?? () (gdb) monitor reset init Unable to match requested speed 1000 kHz, using 950 kHz Unable to match requested speed 1000 kHz, using 950 kHz adapter speed: 950 kHz target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080001a0 msp: 0x20000400 Unable to match requested speed 8000 kHz, using 4000 kHz Unable to match requested speed 8000 kHz, using 4000 kHz adapter speed: 4000 kHz (gdb) load Loading section startup, size 0x1a0 lma 0x8000000 Loading section .text, size 0x9d84 lma 0x80001a0 Loading section .data, size 0x4bc lma 0x8009f28 Start address 0x80001a0, load size 41952 Transfer rate: 22 KB/sec, 8390 bytes/write. (gdb) continue Continuing.
- The bootloader should now be running.
- TODO: Instructions on how to use it to load the firmware
- Build the application by running
- Once again use gdb, similar to the bootloader but use the ELF file
bl-ch.elfis in the format the bootloader expects, so your application would run even when not using the debugger)
cenx4/ableton/Cenx4into Ableton's Remote Scripts directory. On Mac, this would be
/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts.
- Start Ableton, and configure the MIDI devide. Make sure to use the Cenx4 remote script.