All Projects → hundredrabbits → Orca C

hundredrabbits / Orca C

Licence: mit
Live Programming Environment(C Port)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Orca C

Orca
Esoteric Programming Language
Stars: ✭ 3,636 (+1008.54%)
Mutual labels:  midi, osc, livecoding, udp
orca
Lua port of @neauoire orca for monome norns
Stars: ✭ 75 (-77.13%)
Mutual labels:  midi, livecoding
tinyspec-cling
tiny spectral synthesizer with livecoding support
Stars: ✭ 31 (-90.55%)
Mutual labels:  osc, livecoding
braid
Polyrhythms in Python: a sequencer and musical notation system for monophonic MIDI synths
Stars: ✭ 34 (-89.63%)
Mutual labels:  midi, livecoding
Pedalino
Smart wireless MIDI foot controller for guitarists and more.
Stars: ✭ 105 (-67.99%)
Mutual labels:  osc, midi
osmid
osmid is a tool to bridge MIDI and OSC. It is currently in use in Sonic Pi
Stars: ✭ 63 (-80.79%)
Mutual labels:  osc, midi
linux-show-player
Linux Show Player - Cue player designed for stage productions
Stars: ✭ 147 (-55.18%)
Mutual labels:  osc, midi
Iannix
IanniX is a graphical open-source sequencer, based on Iannis Xenakis works, for digital art. IanniX syncs via Open Sound Control (OSC) events and curves to your real-time environment.
Stars: ✭ 238 (-27.44%)
Mutual labels:  midi, osc
facet
Facet is a live coding system for algorithmic music
Stars: ✭ 72 (-78.05%)
Mutual labels:  midi, livecoding
MidiGyver
No description or website provided.
Stars: ✭ 67 (-79.57%)
Mutual labels:  osc, midi
alive
experimental livecoding environment with persistent expressions
Stars: ✭ 29 (-91.16%)
Mutual labels:  osc, livecoding
Chataigne
Artist-friendly Modular Machine for Art and Technology
Stars: ✭ 251 (-23.48%)
Mutual labels:  midi, osc
recurse
re<urse is a declarative language for generating musical patterns
Stars: ✭ 32 (-90.24%)
Mutual labels:  midi, livecoding
ManosOsc
(Eyebeam #13 of 13) Output OSC, MIDI, and After Effects/Maya animation scripts from the Leap Motion controller.
Stars: ✭ 53 (-83.84%)
Mutual labels:  osc, midi
Midimonster
Multi-protocol control & translation software (ArtNet, MIDI, OSC, sACN, ...)
Stars: ✭ 241 (-26.52%)
Mutual labels:  midi, osc
ofxOscMidi
Midi in, OSC out with Midi thru. Based on openFrameworks
Stars: ✭ 66 (-79.88%)
Mutual labels:  osc, midi
Xrnx
The official Renoise Lua Scripting repository
Stars: ✭ 165 (-49.7%)
Mutual labels:  midi, osc
Arduino Applemidi Library
Send and receive MIDI messages over Ethernet (rtpMIDI or AppleMIDI)
Stars: ✭ 177 (-46.04%)
Mutual labels:  midi, udp
melrose
interactive programming of melodies, producing MIDI
Stars: ✭ 130 (-60.37%)
Mutual labels:  midi, livecoding
TouchOSC
A collection of examples and modules for TouchOSC MK2
Stars: ✭ 30 (-90.85%)
Mutual labels:  osc, midi

ORCΛ

Orca is an esoteric programming language and live editor designed to quickly create procedural sequencers. Every letter of the alphabet is an operation, lowercase letters execute on *bang*, and uppercase letters execute each frame.

This is the C implementation of the ORCΛ language and terminal livecoding environment. It's designed to be power efficient. It can handle large files, even if your terminal is small.

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

Main git repo GitHub mirror
git.sr.ht/~rabbits/orca github.com/hundredrabbits/Orca-c

Quick Start for Debian/Raspbian (Raspberry Pi)

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

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     │
│                     │
│   OSC Output...     │
│ > MIDI Output...    │
│                     │
│   Clock & Timing... │
│.....................│

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 POSIX sh. 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 livecoding 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+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 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:

echo -e "...\na34\n..." | cli /dev/stdin

Extras

  • Discuss and get help in the forum thread.
  • Support this project through Patreon.
  • See the License (MIT) file for license rights and limitations.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].