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 orcaorca ┌ 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