mirror of
https://gitea.heck.live/heck/Orca-Workshop.git
synced 2024-11-24 16:59:14 +01:00
108 lines
2.9 KiB
Markdown
108 lines
2.9 KiB
Markdown
# Orca-Workshop
|
|
|
|
## Installation
|
|
|
|
### Orca
|
|
|
|
There are many implementations of Orca.
|
|
The ones that work for this workshop are:
|
|
|
|
* JS/electron: https://github.com/hundredrabbits/Orca
|
|
* ANSI-C: https://github.com/hundredrabbits/Orca-c
|
|
|
|
#### Easy setup
|
|
|
|
The quickest way to get started on any platform is to just use the 'fancy' electron framework version. I recommend doing that for the workshop, to avoid the "install-party" effect.
|
|
|
|
* Binary release: https://hundredrabbits.itch.io/orca
|
|
|
|
#### Advanced Setup
|
|
|
|
My favourite setup though, is running the ANSI-C version in [Cool-Retro-Term](https://github.com/Swordfish90/cool-retro-term)
|
|
Orca AND Cool-Retro-Term are available in many package manager, have a look in yours. Maybe you are lucky...
|
|
|
|
### Pilot
|
|
|
|
Orca cant make any sounds, it can only generate MIDI, OSC or UDP output.
|
|
Pilot is a 'companion' program (from hundredrabbits as well) that is a fun little synthesizer and is very easy to use with orca over UDP.
|
|
|
|
* Github/Docs: https://github.com/hundredrabbits/Pilot
|
|
* Binary release: https://hundredrabbits.itch.io/pilot
|
|
|
|
## Language Quick Overview
|
|
|
|
* Esoteric Programming Language
|
|
* 'Frame-Oriented' language
|
|
* 26 operators `A`-`Z`
|
|
* Uppercase operators execute on every frame
|
|
* Lowercase operators execute on a 'Bang'
|
|
* Data is just Base36 numbers '0-9' and 'a-z'
|
|
* I/O: no I just O. MIDI/OSC/UDP
|
|
|
|
|
|
# Tutorials
|
|
|
|
## Tutorial: Bangs and Sounds
|
|
|
|
### 1. Bangs
|
|
|
|
Operators you learn in this chapter:
|
|
|
|
* 'D' - Delay, bang periodically
|
|
*
|
|
|
|
|
|
### 2. Sounds
|
|
Operators you learn in this chapter:
|
|
* `;` - UDP
|
|
|
|
for synthesizing the actual waves we are using 'Pilot', a soft-synth which we control with UDP packets.
|
|
So, the commands we send using the UDP output operator are actually Pilot commands, not orca.
|
|
|
|
Pilot commands are 3-5 'bytes' long, where the first 3 are required.
|
|
The format is: `CH` `OCT` `NOTE` [`VOL`] [`DECAY`]
|
|
|
|
Where:
|
|
* `CH` - Channels 1-f exist, they all sound different (and they are monophonic)
|
|
* `OCT` - Around 8 octaves should definitely exist
|
|
* `NOTE` - Note names where Upper-case are white keys and Lower-case are Black-keys
|
|
* `VOL` - The Volume 0-z (even though the doc says 0-f, but hey we love clipping dont we?)
|
|
* `DECAY` - The 'length' of the note, 0-f (?)
|
|
|
|
Example:
|
|
`;13C` - Pilot plays note 'C' of octave 3 (default volume and length)
|
|
|
|
### Putting It All Together
|
|
|
|
|
|
## Tutorial: Flying East Scope
|
|
|
|
### 1. Arithmetic
|
|
|
|
Operators you learn in this chapter:
|
|
|
|
* `C` - Count (speed / modulo)
|
|
* `I` - Increment (increment / max)
|
|
* `R` - Random (min / max)
|
|
* `A` - Add (operand/operand)
|
|
* `B` - Subtract (operand/operand)
|
|
* `M` - Multiply (operand/operand)
|
|
|
|
### 2. Variables
|
|
|
|
Operators you learn in this chapter:
|
|
|
|
* `V` - Variable r/w single (Write: name / val | Read: - / name)
|
|
* `K` - Kontakt read multiple (Read: count / names)
|
|
|
|
### 3. Flying East
|
|
|
|
Operators you learn in this chapter:
|
|
|
|
* `X` - Write
|
|
* `E` - East
|
|
|
|
### Putting It All Together
|
|
|
|
|
|
|