The Chameleon System

A Eurorack hardware module with digital flexibility.

Similar projects worth following

The CHAMELEON System is based around a 26HP eurorack module, a CHAMELEON, that can be flashed with software files to decide its functionality. The modules communicate with each other via the Chameleon Communication protocol (C²P) using standard stereo 3.5mm cables to send and receive 11-bit data and 3.3V gate signals, a digital equivalent to CV (Controlled Voltage).

There are two types of software files for this system;

CHAMELEON.SONIC with three channels of C²P as well as two-channel audio I/O. These files are used for generating and processing audio. Requires an audio adapter.

CHAMELEON.SIGNAL with four channels of C²P. These files are used for data processing. Requires no audio adapter.

These are the software files currently available for the system:

CHAMELEON.SONIC POLY4 - Polyphonic Synthesizer Module

Four voices polyphony. Six waveforms. True polyphonic with dedicated filters and amplifiers. Modulation input. Pulsewidth modulation.

CHAMELEON.SONIC PANTHER- Monophonic Synthesizer Module

3 voices, Noise and Mixer. Semitone, Detune and Glide. State Variable Filter with resonance. Pitch LFO, pulsewidth LFO, filter LFO and amplitude LFO. Pitch envelope, filter envelope and amplitude envelope.

CHAMELEON.SONIC NAMAQUA - Quad Oscillator Sound Source

MIDI Note, Velocity and modulation output. Four voices monophonic. Eight waveforms. FM synthesis. Each voice has separate semitone adjustments, mixer and left/right output assignment. Modulation input. Pulsewidth modulation and FM input.

CHAMELEON.SONIC NAMIBIA - two channel Filter and Level Shaper

Stereo or dual mono mode. Resonant state variable filters. Reverb with time and amount parameters. 3 x Chaos Designer with Low/High and mode parameter that outputs data when triggered by gate signal.

CHAMELEON.SIGNAL JACKSON - 4 x Low Frequency Oscillators

Four individual Low Frequency Oscillators with fast, medium or long mode. Four waveforms including Sample&Hold. Four LFO tempo output via gate.

CHAMELEON.SIGNAL TIGRIS- 4 x Envelope Generators 

Four individual ADSR Envelope Generators with fast, medium or long mode. Peak output via gate.

TECHNICAL SPECIFICATION: ARM Cortex-M4@180MHz (PJRC Teensy 3.5) 2-channel audio I/O (with PJRC audio adapter). TFT 2.2"-screen. Four potentiometers. One rotary encoder with switch. 3xC²P I/O (with PJRC audio adapter). 4xC²P I/O (without PJRC audio adapter). PCB 100x100mm.

POWER DISTRIBUTION: Power is supplied to a Chameleon connected to power via its USB-port.

PERFORMANCE CONTROLLERS: The four analog potentiometers on each module work as controllers for real-time control of key parameters.

PCB DIMENSIONS: 100x100mm.

  • 1 × PJRC Teensy 3.5 USB Development Board
  • 4 × Alpha 10K potentiometer Performance Controllers
  • 1 × 2.2" TFT Screen with SPI interface and ILI9341 driver.
  • 1 × PJRC Audio Adapter Teensy Audio board add-on for the Teensy 3.x line development boards.
  • 16 × 3.5mm audio jack Audio, Gate and Data I/O.

View all 11 components

  • Chameleon Framework

    Johan Bilén11/28/2019 at 15:22 0 comments

    Chameleon Framework

    readGates() Check for signals coming into gate input 1-4.

    switchGateOut1_ON() Set gate out 1 to HIGH
    switchGateOut1_OFF() Set gate out 1 to LOW
    switchGateOut2_ON() Set gate out 2 to HIGH
    switchGateOut2_OFF() Set gate out 2 to LOW
    switchGateOut3_ON() Set gate out 3 to HIGH
    switchGateOut3_OFF() Set gate out 3 to LOW
    switchGateOut4_ON() Set gate out 4 to HIGH
    switchGateOut4_OFF() Set gate out 4 to LOW

    readConnections() Checks to see if a cable from another module has been inserted into data in 1-4.

    receiveUART1() Reads data in 1 (UART1) and places the value in valueToRX1.
    receiveUART2() Reads data in 2 (UART2) and places the value in valueToRX2.
    receiveUART3() Reads data in 3 (UART3) and places the value in valueToRX3.
    receiveUART4() Reads data in 4 (UART4) and places the value in valueToRX4.

    TransmitUART1() Sends value (0-2048) via data out 1 (UART1).
    TransmitUART2() Sends value (0-2048) via data out 2 (UART2).
    TransmitUART3() Sends value (0-2048) via data out 3 (UART3).
    TransmitUART4() Sends value (0-2048) via data out 4 (UART4)

    readPotentiometers() Reads the position of the four performance controllers.
    readEncoderSwitch() Check if the encoder switch has been pressed, encoderSwitchActivate=TRUE.
    readEncoderParameter() If the encoder switch has been pressed this function reads the encoder rotation and displays the corresponding parameter and the value of that parameter.

  • Everything's working!

    Johan Bilén10/05/2018 at 09:26 0 comments


    Having tested all the modules I'm now ready to complete the project.

    MIDI module NAMIBIA is working!

    Data Out 1-3: MIDI-Vel-PB/MIDI Arpeggio/Chaos Notes/Chaos Freq.
    Data Out 4: Mod. Wheel/Perf. 1
    Arp Mode: Up/Down/Up-Down/Random
    Arp Speed: Manual/Gate In 1
    Chaos Trig: Manual/Gate In 1
    Pitchbend: 0-10

    Four oscillator module NAMAQUA is working!


    Data input 1: Note/Frequency/Performance/Performance+
    Waveform 1-4: Sinewave/Sawtooth/Ramp/Squarewave/Triangle/Pulsewave/White Noise/Pink Noise
    Audio Out 1-4: Left Ch./Left/Right Ch./Right Ch.
    Audio Level 1-4: 0-10
    Semitones 1-4: -24/+24
    Detune: 0-100hz
    Glide: 0-100

    Stereo filter and amplifier module TIGRIS is working!

    Type L: Lowpass/Bandpass/Highpass
    Frequency L: Data In 1/Performance/Performance+
    Type R: Lowpass/Bandpass/Highpass
    Frequency R: Data In 2/Data In 1/Performance/Performance+
    Amplifier In: Data In 3/Bypass

  • Yet another change of plan

    Johan Bilén09/12/2018 at 18:58 0 comments


    Analog potentiometers as devices for entering values are not suitable for this project since I cannot seem to get steady readings. The four potentiometers will therefore be used as PERFORMANCE CONTROLLERS controlling the "tweakable" parameters like filter frequency, oscillator frequency etc.

    The rotary encoder will take over the role as data entry device. One click to enter, change value, then one click to exit.

    So now I'll have to come up with a new UI.

    Also the five UARTS I mentioned in a previous post is not possible on the SIGNAL modules since UART 2 pins are used for the TFT. Bummer...

  • Change of plan

    Johan Bilén09/09/2018 at 18:48 0 comments

    Now three Core modules are assembled apart from the 3.5mm jacks. The Xtend module did not work, I had switched VCC and GND for the OLED and probably missed other things as well when designing the PCB.

    So I decided to skip the Maple Mini and use the PCBs I have for the Core modules. The audio I/O jack can easily be replaced by two more UART connections (TX/RX2 & TX/RX3). So the XTEND module be similar to the CORE modules except the audio I/O will the replaced by two more data I/O=5 UARTS!

    CORE is now SONIC.

    XTEND is now SIGNAL.

  • First Core module assembled

    Johan Bilén09/06/2018 at 19:24 0 comments


    The first Core module is assembled with some spare parts lying around and is now tested, all gates I/O, all data I/O, encoder switch and rotation, all four potentiometers, the TFT-screen and power pins are working!

    I'm going to skip the LEDs because of space issues. I have to use straight 3.5mm cables instead of angled for the same reason.

    My decoupling cap (01uF) that I placed between signal and ground on the potentiometers did absolutely nothing to smooth the incoming signal so I'll have to implement a software solution.

    The next step is to wait for headers and 3.5mm jacks to arrive from China so that I can assemble and test the Xtend modules.

  • Third version of PCBs has arrived

    Johan Bilén09/04/2018 at 07:45 0 comments


    I received my PCBs from JLCPCB, top quality as always. I changed the size of the holes for the pots and the 3.5 jacks for this iteration and now they fit perfectly. As soon as my shipment of header pins and sockets arrive I will begin to assemble the boards.

View all 6 project logs

  • 1
    Step 1

View all instructions

Enjoy this project?



Sophi Kravitz wrote 02/20/2019 at 17:49 point

Now we need to hear how it sounds :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates