Orca es un lenguaje de programación esotérico y un editor en vivo diseñado para crear rápidamente secuenciadores de procedimientos. Cada letra del alfabeto es una operación, las letras minúsculas se ejecutan en *bang*
y las letras mayúsculas ejecutan cada cuadro.
Esta es la implementación en C del lenguaje ORCΛ y el entorno de codificación en vivo del terminal. Está diseñado para ser energéticamente eficiente. Puede manejar archivos de gran tamaño, incluso si tu terminal es pequeño.
Orca no es un sintetizador, sino un entorno de codificación en vivo flexible capaz de enviar MIDI, OSC y UDP a sus interfaces audiovisuales como Ableton, Renoise, VCV Rack o SuperCollider.
Repositorio principal de git | Espejo de GitHub |
---|---|
git.sr.ht/~conejos/orca | github.com/hundredrabbits/Orca-c |
sudo apt-get install git libncurses5-dev libncursesw5-dev libportmidi-dev
git clone https://github.com/hundredrabbits/Orca-c.git
cd Orca-c
make # Compile orca
build/orca # Run orca
Para elegir su dispositivo de salida MIDI, presione F1
(o Ctrl+D
) para abrir el menú principal y luego seleccione MIDI Output...
┌ ORCA ───────────────┐┌ PortMidi Device Selection ─────┐
│ New ││ > (*) #0 - Midi Through Port-0 │
│ Open... ││ ( ) #2 - ES1371 │
│ Save │└────────────────────────────────┘
│ Save As... │
│ │
│ Set BPM... │
│ Set Grid Size... │
│ Auto-fit Grid │
│ │
│ OSC Output... │
│ > MIDI Output... │
│ │
│ Clock & Timing... │
│.....................│
Biblioteca principal: un compilador C99 (no se requieren VLA), además de suficiente libc para malloc
, realloc
, free
, memcpy
, memset
y memmove
. (Además, se debe admitir #pragma once
).
Intérprete de línea de comandos: lo anterior, más POSIX y suficiente libc para las operaciones de cadenas comunes ( strlen
, strcmp
, etc.)
Interfaz de usuario del terminal Livecoding: lo anterior, más ncurses (o biblioteca de curses compatible) y soporte de punto flotante (para sincronización). Opcionalmente, PortMidi se puede usar para habilitar la salida MIDI directa.
El script de compilación, llamado simplemente tool
, está escrito en POSIX sh
. Debería funcionar con gcc
(incluido el contenedor musl-gcc
), tcc
y clang
, y detectará automáticamente su compilador. Puede especificar manualmente un compilador con la opción -c
.
Actualmente se sabe que se basa en macOS ( gcc
, clang
, tcc
) y Linux ( gcc
, musl-gcc
, tcc
y clang
, opcionalmente con LLD
) y Windows a través de cygwin o WSL ( gcc
o clang
, tcc
no probado).
Hay un contenedor make
de disparo y olvido alrededor del script de compilación.
PortMidi es una dependencia opcional. Se puede habilitar agregando la opción --portmidi
al ejecutar el script de compilación tool
.
La detección del mouse se puede desactivar agregando la opción --no-mouse
.
tool
Ejecute ./tool help
para ver información de uso. Ejemplos:
./tool build -c clang-7 --portmidi orca
# Build the livecoding environment with a compiler
# named clang-7, with optimizations enabled, and
# with PortMidi enabled for MIDI output.
# Binary placed at build/orca
./tool build -d orca
# Debug build of the livecoding environment.
# Binary placed at build/debug/orca
./tool build -d cli
# Debug build of the headless CLI interpreter.
# Binary placed at build/debug/cli
./tool clean
# Same as make clean. Removes build/
make
make release # optimized build, binary placed at build/orca
make debug # debugging build, binary placed at build/debug/orca
make clean # removes build/
El contenedor make
habilitará --portmidi
de forma predeterminada. Si ejecuta el script de compilación tool
por sí solo, --portmidi
no está habilitado de forma predeterminada.
orca
Usage: orca [options] [file]
General options:
--undo-limit <number> Set the maximum number of undo steps.
If you plan to work with large files,
set this to a low number.
Default: 100
--initial-size <nxn> When creating a new grid file, use these
starting dimensions.
--bpm <number> Set the tempo (beats per minute).
Default: 120
--seed <number> Set the seed for the random function.
Default: 1
-h or --help Print this message and exit.
OSC/MIDI options:
--strict-timing
Reduce the timing jitter of outgoing MIDI and OSC messages.
Uses more CPU time.
--osc-midi-bidule <path>
Set MIDI to be sent via OSC formatted for Plogue Bidule.
The path argument is the path of the Plogue OSC MIDI device.
Example: /OSC_MIDI_0/MIDI
orca
con salida MIDI $ ./tool build --portmidi orca # compile orca using build script
$ build/orca # run orca
orca
┌ Controls ───────────────────────────────────────────┐
│ Ctrl+Q Quit │
│ Arrow Keys Move Cursor │
│ Ctrl+D or F1 Open Main Menu │
│ 0-9, A-Z, a-z, Insert Character │
│ ! : % / = # * │
│ Spacebar Play/Pause │
│ Ctrl+Z or Ctrl+U Undo │
│ Ctrl+X Cut │
│ Ctrl+C Copy │
│ Ctrl+V Paste │
│ Ctrl+S Save │
│ Ctrl+F Frame Step Forward │
│ Ctrl+R Reset Frame Number │
│ Ctrl+I or Insert Append/Overwrite Mode │
│ ' (quote) Rectangle Selection Mode │
│ Shift+Arrow Keys Adjust Rectangle Selection │
│ Alt+Arrow Keys Slide Selection │
│ ` (grave) or ~ Slide Selection Mode │
│ Escape Return to Normal Mode or Deselect │
│ ( ) _ + [ ] { } Adjust Grid Size and Rulers │
│ < and > Adjust BPM │
│ ? Controls (this message) │
└─────────────────────────────────────────────────────┘
cli
La CLI ( cli
binario) lee un archivo y ejecuta la simulación de orca durante 1 paso de tiempo (predeterminado) o un número específico (opción -t
) y escribe el estado resultante de la cuadrícula en la salida estándar.
cli [-t timesteps] infile
También puedes hacer que cli
lea desde stdin:
echo -e " ...na34n... " | cli /dev/stdin