kevin's website

uxn on esp32 for a hardware orca sequencer

NOTE: I HAVE NOT MADE FURTHER PROGRESS ON THIS AS OF WRITING. PLEASE CHECK OUT MAX22's UXN ESP32 PORT

edit: It may also be simpler to port orca-c directly and not attempt to port the entire UXN virtual computer.

inspiration

I have recently been quite inspired by old tracker software and the few hardware trackers that are out now.

After hanging around on merveilles i discovered orca and the uxn virtual computer (both by hundred rabbits) and thought that it might be possible to run orca as a rom on an esp32 using uxn. Especially since the esp32 is such a capable microcontroller (even IBM PC DOS has been emulated on it!)

Orca is an esoteric programming language used to sequence midi devices and is often used in livecoding (video example) (wikipedia).

It is possible to build any style sequencer you can imagine even including things like randomness and euclidean rhythms (video explanation) (wikipedia). Tracker style sequencers have also been made with Orca

resources

luckily there was already a well documented uxn tutorial. The screen and mouse has already been implemented but audio and keyboard are still in progress.

hardware

I already had an esp32cam dev board with an sd card slot and a 128*64 i2c oled, but not all the pins are made available on this dev board and this screen is too small for most uses in uxn and is also only black and white.

processing

an esp32 dev board will be used as the main processor

output

A better alternative would be to use an ILI9341 based (or similiar) SPI TFT LCD since SPI TFT displays are supported through the use of the TFT_eSPI library

input

For user input USB keyboard/MIDI could be added with a MAX3421

software

eps32 uxn port is a port of uxnemu to the esp32 platform.

UXN uses sdl and portmidi to provide a cross platform interface (on computers) and midi device usage.

Unfortunately sdl and portmidi are not available for esp32 so something else will have to take it's place:

some other libraries that can be used to take the place of sdl and port midi:

design

controls

Option 1

Inspired by the LARGE multifunction encoder (knob) on the polyend tracker I thought it might be useful to use a rotary encoder with push button. It moves left/right when not pressed down and up and down when the encoder is pressed.

a few common keys like

as well as a numpad with layers so that all 36 keys needed can be pressed without the need for a full size keyboard (though the ability to plug in a full size keyboard in the future would be nice.)

Option 2

Use a PS2 keyboard or serial

interface

The visual user interface on the LCD will be provided by the UXN roms

usage

The idea would be to be able to use it to sequence midi devices or use as part of a modular synth (if used in conjunction with a midi to cv device)

todo

last resort (just use a pi)