Skip to content

ensonic/octacon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

164 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Octacon

A midi controller tailored for bitwig with 8 endless pots, 8 buttons, 8 leds, 2 displays and a touch sensor.

wip image of the day

The latest video tour can be watched on youtube.

Getting started

Flashing a release

  • download and install pictool
  • download an octacon firmware release or build it yourself
  • connect octacon to usb
  • flash the device using this command under linux:
    stty 1200 /dev/ttyACM0 && sleep 2 && picotool load -f ~/Downloads/firmware.uf2 && picotool reboot

Installing the extension

Download an octacon daw extension or build it yourself and copy it into the Extensions folder of your Bitwig Studio installation:

  • Linux: ~/Bitwig Studio/Extensions/
  • Mac: ~/Documents/Bitwig Studio/Extensions/
  • Windows: %USERPROFILE%\Documents\Bitwig Studio\Extensions\

For Bitwig Studio > 3.4, you can also drag the file from your downloads into the Bitwig Studio window.

In Bitwig Studio, go to Settings > Controller and add a new one. Pick ensonic as the vendor and select Octacon as the hardware. Ensure both midi ports have Octacon or Octacon MIDI 1 selected.

Usage

TODO:

  • extend navigation mode

Hardware & Firmware

  • raspberry pico 2
  • 8 endless dual wiper potentiometers with buttons (RV142FPF-40B1-15F-0B20K-004)
  • 3 analog multiplexers (e.g. CD74HC4051)
  • 8 NeoPixel LEDs (WS2812x)
  • 2 128x64 OLED 2.42" display breakouts connected via SPI
  • 1 capacitive touch control (split pin)
  • 2 7 pin female to female dupont cables (200 mm, 2.54 mm Pitch)
  • 2 17 pin fpc cables (50 mm, 17P, Same Side(A type), 0.5 mm Pitch)
  • 8 knobs for the potentiometers (d-shaft, ⌀ 6 mm)

The pcb subfolder has the the schematics and the pcb files for easyeda. You should be able to import them into the Std Edition. The pcb would have the LEDs and multiplexers already included.

Enclosure

The 3d subfolder has openScad files and rendered STL for 3d printing. You'll need to print front.stl and back.stl in the color of your choice. And you'll need to print led.stl in a transparent material (using a hex infill) 8 times.

The *_test.stl are a quarter of the case that can be used to test-print modifications.

TODO: upload 3mf with all in one.

MIDI implementation

Under Linux you can watch the communication using asqedump:

aseqdump -l | grep Octacon
 32:0    Octacon                          Octacon MIDI 1
aseqdump -p32:0
Source  Event                  Ch  Data
 32:0   Control change          0, controller 9, value 51
 32:0   Control change          0, controller 9, value 52

Control changes

The encoders send 7bit values on cc 9 to 16. In 14-bit mode, the lsb is send on cc 41 to 49. The encoder buttons send values {0=off, 64=on} on cc 17 to 25.

Sysex

Since Octacon uses usb midi and is a hobby project, we're using the 7D (prototyping, test, private use and experimentation).

The following commands are implemented:

  • 00: (recv) parameter names: 00 + <ix> + <len> + <name>
    • id: 0...7
    • len: len of name, truncated to fit the display
    • name: ascii string data
  • 01: (recv) pretty parameter value: 01 + <ix> + <len> + <name>
    • id: 0...7
    • len: len of name, truncated to fit the display
    • name: ascii string data
  • 02: (recv) daw connected? : 02 + <connected>
    • connected: 0 = off, anything else = on
    • when off, parameter names and pretty values are generated
  • 03: (recv) led pattern: 03 + <pattern>
  • 04: (recv) info string: 04 + <len> + <text>
  • 05: (recv) param ticks: 05 + <ix> <value>
  • 06: (recv) param flags: 05 + <ix> <flags>
    • flags: bit field of:
      • 0: hasAutomation

Code

Firmware

The code uses platformIO. See platformio.ini for the used libraries.

alias pio=$HOME/.platformio/penv/bin/pio
pio test
pio run -t upload

With regards to flashing from command-line, see:

DAW Extensions

The daw extension for Bitwig is written in java.

cd daw/bitwig
mvn install

Debugging

Since we're using usb-midi, we can't use it for serial logging at the same time. I am simply using a nodemcu esp8266 as serial2. On the nodemcu connect EN to GND to disable the ESP. Then connect the nodemcu to the pico2 as follow:

nodemcu esp8266 raspberry pico2
GND GND
3.3V 3.3V (optional)
TX UART1 TX, pin 6
RX UART1 RX, pin 7

Now plug the nodemcu to usb and open /dev/ttyUSB0 to see the serial log.

Links

I've got inspiration from many other places. Let me mention a few similar projects:

About

midi controller tailored for bitwig with 8 endless pots, 8 buttons, 8 leds, 2 displays and a touch sensor.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors