Orca 是一种深奥的编程语言和实时编辑器,旨在快速创建程序音序器。字母表中的每个字母都是一个操作,小写字母执行*bang*
,大写字母执行每一帧。
这是ORCΛ语言和终端实时编码环境的C实现。它的设计是为了节能。即使您的终端很小,它也可以处理大文件。
Orca 不是合成器,而是一个灵活的实时编码环境,能够将 MIDI、OSC 和 UDP 发送到您的音频/视频接口,例如 Ableton、Renoise、VCV Rack 或 SuperCollider。
主要 git 仓库 | 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
要选择 MIDI 输出设备,请按F1
(或Ctrl+D
)打开主菜单,然后选择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... │
│.....................│
核心库:C99 编译器(不需要 VLA),加上足够的 libc 用于malloc
、 realloc
、 free
、 memcpy
、 memset
和memmove
。 (此外,必须支持#pragma once
。)
命令行解释器:以上,加上 POSIX,以及足够的 libc 用于常见字符串操作( strlen
、 strcmp
等)
Livecoding 终端 UI:以上,加上 ncurses(或兼容的 curses 库)和浮点支持(用于计时)。也可以使用 PortMidi 来启用直接 MIDI 输出。
构建脚本,简称为tool
,是用 POSIX sh
编写的。它应该与gcc
(包括musl-gcc
包装器)、 tcc
和clang
一起使用,并且会自动检测您的编译器。您可以使用-c
选项手动指定编译器。
目前已知可在 macOS( gcc
、 clang
、 tcc
)和 Linux( gcc
、 musl-gcc
、 tcc
和clang
,可选地使用LLD
)以及 Windows 上构建通过 cygwin 或 WSL ( gcc
或clang
, tcc
未经测试)。
构建脚本有一个即发即忘的make
包装器。
PortMidi 是一个可选依赖项。可以通过在运行tool
构建脚本时添加选项--portmidi
来启用它。
可以通过添加--no-mouse
选项来禁用鼠标感知。
tool
构建脚本进行构建运行./tool help
查看使用信息。示例:
./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/
make
包装器默认启用--portmidi
。如果您单独运行tool
构建脚本,则默认情况下不会启用--portmidi
。
orca
Livecoding 环境使用 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
livecoding 环境$ ./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
命令行界面解释器CLI( cli
二进制文件)从文件读取并运行 orca 模拟 1 个时间步长(默认)或指定的数字( -t
选项),并将网格的结果状态写入标准输出。
cli [-t timesteps] infile
您还可以让cli
从 stdin 读取:
echo -e " ...na34n... " | cli /dev/stdin