Orca est un langage de programmation ésotérique et un éditeur en direct conçu pour créer rapidement des séquenceurs procéduraux. Chaque lettre de l'alphabet est une opération, les lettres minuscules s'exécutent sur *bang*
et les lettres majuscules exécutent chaque image.
Il s'agit de l'implémentation C du langage ORCΛ et de l'environnement de livecoding du terminal. Il est conçu pour être économe en énergie. Il peut gérer des fichiers volumineux, même si votre terminal est petit.
Orca n'est pas un synthétiseur, mais un environnement de livecoding flexible capable d'envoyer du MIDI, OSC et UDP à vos interfaces audiovisuelles comme Ableton, Renoise, VCV Rack ou SuperCollider.
Dépôt git principal | Miroir GitHub |
---|---|
git.sr.ht/~lapins/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
Pour choisir votre périphérique de sortie MIDI, appuyez sur F1
(ou Ctrl+D
) pour ouvrir le menu principal, puis sélectionnez 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... │
│.....................│
Bibliothèque principale : un compilateur C99 (aucun VLA requis), plus suffisamment de libc pour malloc
, realloc
, free
, memcpy
, memset
et memmove
. (De plus, #pragma once
doit être pris en charge.)
Interpréteur de ligne de commande : ce qui précède, plus POSIX et suffisamment de libc pour les opérations de chaîne courantes ( strlen
, strcmp
, etc.)
Interface utilisateur du terminal Livecoding : ce qui précède, plus ncurses (ou une bibliothèque de cursus compatible) et la prise en charge de la virgule flottante (pour le timing.) En option, PortMidi peut être utilisé pour activer la sortie MIDI directe.
Le script de construction, appelé simplement tool
, est écrit en POSIX sh
. Il devrait fonctionner avec gcc
(y compris le wrapper musl-gcc
), tcc
et clang
et détectera automatiquement votre compilateur. Vous pouvez spécifier manuellement un compilateur avec l'option -c
.
Actuellement connu pour s'appuyer sur macOS ( gcc
, clang
, tcc
) et Linux ( gcc
, musl-gcc
, tcc
et clang
, éventuellement avec LLD
), et Windows via cygwin ou WSL ( gcc
ou clang
, tcc
non testé).
Il existe un wrapper make
"fire-and-forget" autour du script de construction.
PortMidi est une dépendance facultative. Il peut être activé en ajoutant l'option --portmidi
lors de l'exécution du script de construction tool
.
La détection de la souris peut être désactivée en ajoutant l'option --no-mouse
.
tool
Exécutez ./tool help
pour voir les informations d'utilisation. Exemples :
./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/
Le wrapper make
activera --portmidi
par défaut. Si vous exécutez le script de construction tool
seul, --portmidi
n'est pas activé par défaut.
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
avec sortie MIDI $ ./tool build --portmidi orca # compile orca using build script
$ build/orca # run orca
orca
Livecoding ┌ 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
binaire) lit à partir d'un fichier et exécute la simulation orca pour 1 pas de temps (par défaut) ou un nombre spécifié (option -t
) et écrit l'état résultant de la grille sur la sortie standard.
cli [-t timesteps] infile
Vous pouvez également faire lire cli
depuis stdin :
echo -e " ...na34n... " | cli /dev/stdin