Skip to content

reverbrick/orca-picocalc

Repository files navigation

Orca-PicoCalc

A port of the Orca livecoding sequencer to the PicoCalc handheld.

Orca

Features

  • Full Orca VM - All 26 operators (A-Z) plus special operators
  • Built-in Synthesizer - 4-voice polyphonic synth with 4 waveforms (inspired by Pilot)
  • Original Orca Font - Authentic 8x16 bitmap font
  • Flash Storage - Save/load grids to internal flash
  • Undo History - 8-level undo
  • Selection Tools - Copy, cut, paste, fill, slide

Controls

Navigation

Key Action
Arrow keys Move cursor
Shift + Arrows Resize selection
Tab Toggle append mode (cursor moves right after input)
' (quote) Toggle selection resize mode
` (grave) Toggle slide mode (move selection contents)
Esc Reset selection / exit mode

Playback

Key Action
Space Play/Pause
< / > Decrease/Increase BPM (±5)
Ctrl+F Step single frame (when paused)
Ctrl+R Reset tick counter

Editing

Key Action
Ctrl+C Copy selection
Ctrl+X Cut selection
Ctrl+V Paste
Ctrl+Z Undo
Ctrl+A Select all
Ctrl+N New grid (clear all)
Backspace/Del Clear cell(s)

Grid

Key Action
( / ) Decrease/Increase grid height
[ / ] Decrease/Increase grid width

Synth

Key Action
{ / } Volume down/up

File

Key Action
Ctrl+S Save to flash
Ctrl+O Load from flash

Synth Operator (=)

The = operator plays notes on the built-in speaker, inspired by Pilot.

Format: =WAVEFORM OCTAVE NOTE VELOCITY DURATION

*=14Cff
 │││││└─ Duration (1-g, longer)
 ││││└── Velocity (0-f, . = max)
 │││└─── Note (C-B, lowercase = sharp)
 ││└──── Octave (0-9)
 │└───── Waveform (0-3)
 └────── Bang required (*)

Waveforms

Value Type
0 Sine (smooth)
1 Triangle (soft, default)
2 Square (8-bit/chiptune)
3 Sawtooth (bright/buzzy)

Examples

D8..........    Simple beat with triangle wave
*=14Cff.....

D4..........    Chord with different waveforms
*=04Cff.....    Sine bass
*=24Eff.....    Square mid
*=34Gff.....    Saw high

C8..........    Arpeggio using clock + track
.0CDEFGABc..
D8T.........
*=14.ff.....

MIDI Operator (:)

The : operator is reserved for MIDI output over GPIO (not yet implemented).

Format: :CHANNEL OCTAVE NOTE VELOCITY DURATION

All Operators

Output

Op Name Description
: MIDI Send MIDI note (GPIO)
= Synth Play note on speaker
! CC Send MIDI CC
? PB Send MIDI pitch bend
; UDP Send UDP message

Math

Op Name Description
A Add Output sum of inputs
B Subtract Output difference
C Clock Output modulo of frame
D Delay Bang on modulo of frame
F If Bang if inputs are equal
I Increment Increment southward
L Lesser Output smallest input
M Multiply Output product
R Random Output random value
U Uclid Euclidean rhythm
Z Lerp Transition between values

Transport

Op Name Description
E East Move eastward or bang
N North Move northward or bang
S South Move southward or bang
W West Move westward or bang

Memory

Op Name Description
H Halt Halt southward operand
J Jump Output northward operand
K Konkat Read multiple variables
O Offset Read with offset
P Push Write eastward
Q Query Read with offset (multiple)
T Track Read eastward
V Variable Read/write variable
X Teleport Write with offset
Y Yump Output westward operand
G Generator Write multiple operands

Special

Op Name Description
* Bang Trigger operators
# Comment Comment until line end

Building

Requirements

  • Raspberry Pi Pico SDK
  • ARM GCC toolchain
  • CMake

Build Steps

cd orca-picocalc
mkdir build && cd build
cmake ..
make -j4

Flash

Copy orca-picocalc.uf2 to the PicoCalc in BOOTSEL mode.

Credits

  • Orca by Hundred Rabbits - Original livecoding environment
  • Pilot by Hundred Rabbits - Synth inspiration
  • PicoCalc by ClockworkPi - Hardware platform

License

MIT License - See Orca-c for original license.

About

Orca livecoding sequencer port for PicoCalc

Resources

License

Stars

Watchers

Forks

Packages

No packages published