Orca adalah bahasa pemrograman esoterik dan editor langsung yang dirancang untuk membuat sequencer prosedural dengan cepat. Setiap huruf alfabet adalah operasi, huruf kecil dijalankan pada *bang*
, dan huruf besar mengeksekusi setiap frame.
Ini adalah implementasi C dari bahasa ORCΛ dan lingkungan pengkodean langsung terminal. Ini dirancang agar hemat daya. Itu dapat menangani file besar, bahkan jika terminal Anda kecil.
Orca bukanlah synthesizer, tetapi lingkungan livecoding fleksibel yang mampu mengirimkan MIDI, OSC, dan UDP ke antarmuka audio/visual Anda seperti Ableton, Renoise, VCV Rack, atau SuperCollider.
Repo git utama | Cermin GitHub |
---|---|
git.sr.ht/~rabbits/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
Untuk memilih perangkat output MIDI Anda, tekan F1
(atau Ctrl+D
) untuk membuka menu utama, lalu pilih 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... │
│.....................│
Pustaka inti: Kompiler C99 (tidak diperlukan VLA), ditambah libc yang cukup untuk malloc
, realloc
, free
, memcpy
, memset
, dan memmove
. (Juga, #pragma once
harus didukung.)
Penerjemah baris perintah: Di atas, ditambah POSIX, dan libc yang cukup untuk operasi string umum ( strlen
, strcmp
, dll.)
UI terminal livecoding: Di atas, ditambah ncurses (atau pustaka kutukan yang kompatibel), dan dukungan floating point (untuk pengaturan waktu.) Secara opsional, PortMidi dapat digunakan untuk mengaktifkan output MIDI langsung.
Skrip build, yang disebut tool
, ditulis dalam POSIX sh
. Ini harus bekerja dengan gcc
(termasuk pembungkus musl-gcc
), tcc
, dan clang
, dan secara otomatis akan mendeteksi kompiler Anda. Anda dapat menentukan kompiler secara manual dengan opsi -c
.
Saat ini diketahui dibangun di macOS ( gcc
, clang
, tcc
) dan Linux ( gcc
, musl-gcc
, tcc
, dan clang
, opsional dengan LLD
), dan Windows melalui cygwin atau WSL ( gcc
atau clang
, tcc
belum teruji).
Ada pembungkus make
-and-forget di sekitar skrip build.
PortMidi adalah ketergantungan opsional. Ini dapat diaktifkan dengan menambahkan opsi --portmidi
saat menjalankan skrip pembuatan tool
.
Kesadaran mouse dapat dinonaktifkan dengan menambahkan opsi --no-mouse
.
tool
Jalankan ./tool help
untuk melihat info penggunaan. Contoh:
./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
wrapper make release # optimized build, binary placed at build/orca
make debug # debugging build, binary placed at build/debug/orca
make clean # removes build/
Pembungkus make
akan mengaktifkan --portmidi
secara default. Jika Anda menjalankan skrip pembuatan tool
sendiri, --portmidi
tidak diaktifkan secara default.
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
dengan output 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
CLI ( cli
biner) membaca dari file dan menjalankan simulasi orca untuk 1 langkah waktu (default) atau angka tertentu (opsi -t
) dan menulis status grid yang dihasilkan ke stdout.
cli [-t timesteps] infile
Anda juga dapat membuat cli
membaca dari stdin:
echo -e " ...na34n... " | cli /dev/stdin