ORCΛ: an esolang for audio-visual live coding

栏目: IT技术 · 发布时间: 5年前

内容简介:This application

ORCΛ

ORCΛ: an esolang for audio-visual live coding

Orca is an esoteric programming language designed to quickly create procedural sequencers, in which every letter of the alphabet is an operation, where lowercase letters operate on bang, uppercase letters operate each frame.

This application is not a synthesizer, but a flexible livecoding environment capable of sending MIDI, OSC & UDP to your audio/visual interfaces, like Ableton, Renoise, VCV Rack or SuperCollider.

The livecoding environment for the C implementation runs in a terminal. It's designed to be power efficient. It can handle large files, even if your terminal is small. If you need help , visit the chatroom or the forum .

ORCΛ: an esolang for audio-visual live coding

Install & Run

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

Select Midi Device

To choose your MIDI output device, press F1 (or Ctrl+D ) to open the main menu, and then select 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    │
│                    │
│ > MIDI Output...   │
│                    │
│   Controls...      │
│   Operators...     │
│   About...         │
│                    │
│   Quit             │
└────────────────────┘

Prerequisites

Core library: A C99 compiler (no VLAs required), plus enough libc for malloc , realloc , free , memcpy , memset , and memmove . (Also, #pragma once must be supported.)

Command-line interpreter: The above, plus POSIX, and enough libc for the common string operations ( strlen , strcmp , etc.)

Livecoding terminal UI: The above, plus ncurses (or compatible curses library), and floating point support (for timing.) Optionally, PortMidi can be used to enable direct MIDI output.

Build

The build script, called simply tool , is written in bash . It should work with gcc (including the musl-gcc wrapper), tcc , and clang , and will automatically detect your compiler. You can manually specify a compiler with the -c option.

Currently known to build on macOS ( gcc , clang , tcc ) and Linux ( gcc , musl-gcc , tcc , and clang , optionally with LLD ), and Windows via cygwin or WSL ( gcc or clang , tcc untested).

There is a fire-and-forget make wrapper around the build script.

PortMidi is an optional dependency. It can be enabled by adding the option --portmidi when running the tool build script.

Mouse awareness can be disabled by adding the --no-mouse option.

Build using the tool build script

Run ./tool help to see usage info. Examples:

./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/

Build using the 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/

The make wrapper will enable --portmidi by default. If you run the tool build script on its own, --portmidi is not enabled by default.

orca Livecoding Environment Usage

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

Example: build and run orca liveocding environment with MIDI output

$ ./tool build --portmidi orca           # compile orca using build script
$ build/orca                             # run orca

orca Livecoding Environment Controls

┌ 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+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 │
│          ( and )  Resize Grid (Horizontal)          │
│          _ and +  Resize Grid (Vertical)            │
│          [ and ]  Adjust Grid Rulers (Horizontal)   │
│          { and }  Adjust Grid Rulers (Vertical)     │
│          < and >  Adjust BPM                        │
│                ?  Controls (this message)           │
└─────────────────────────────────────────────────────┘

cli command-line interface interpreter

The CLI ( cli binary) reads from a file and runs the orca simulation for 1 timestep (default) or a specified number ( -t option) and writes the resulting state of the grid to stdout.

cli [-t timesteps] infile

You can also make cli read from stdin: sh echo -e "...\na34\n..." | cli /dev/stdin


以上所述就是小编给大家介绍的《ORCΛ: an esolang for audio-visual live coding》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

谷歌时代的柏拉图

谷歌时代的柏拉图

[美] 丽贝卡·戈尔茨坦 / 李鹏程 / 中信出版集团·新思文化 / 2017-12-10 / 69.00元

我愿意用我所有的科技去换取和苏格拉底相处的一个下午。 ——史蒂夫•乔布斯 谷歌时代,科技昌明,众声喧哗,哲学提出的许多问题,科学似乎都已经给出了答案。若是如此,为什么我们今天还需要哲学?这个由古希腊城邦时代的哲人苏格拉底和柏拉图开创的学科,真的过时了吗? 已经2400岁 的柏拉图对此有话要说。哲学家兼小说家、美国国家人文奖章获得者戈尔茨坦史海钩沉,从经典著作中复活了柏拉图,让他来......一起来看看 《谷歌时代的柏拉图》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具