들어가며
Orca 언어를 배우기 위한 한국어 자료가 너무 없어 혼자 정리해 봤습니다.
정의
Orca는 100r 그룹, 정확히는 Hundred Rabbits라는 팀에서 개발한 독특한 프로그래밍 언어이자 도구입니다. Orca는 라이브 코딩을 위해 설계된 에소테릭(특수 목적) 프로그래밍 언어로, 각 알파벳 글자가 특정 작업을 나타내며, 이 작업들을 조합하여 절차적 시퀀서를 만들 수 있습니다. 특히 MIDI, OSC, UDP와 같은 신호를 생성하여 Ableton, Renoise, VCV Rack과 같은 음악 소프트웨어와 상호 작용할 수 있게 합니다.
Operators
The base operators are present in every version of Orca, no matter the platform:
- A (Add): 두 입력값의 합을 출력합니다.
- B (Subtract): 두 입력값의 차이를 출력합니다.
- C (Clock): 프레임 수를 기준으로 모듈로 값을 출력합니다.
- D (Delay): 프레임의 모듈로 값을 기준으로 bang을 발생시킵니다.
- E (East): 동쪽으로 이동하며, 도중에 bang을 발생시킵니다.
- F (If): 두 입력값이 동일할 때 bang을 발생시킵니다.
- G (Generator): 다수의 오른쪽 값을 아래줄에 전달한다.
- H (Halt): 남쪽으로 향하는 연산자의 동작을 멈춥니다.
- I (Increment): n배씩, m까지 증가되는 값을 출력합니다.
- J (Jumper): 북쪽 값을 남쪽으로 전달합니다.
- K (Konkat): 여러 변수를 읽습니다.
- L (Lesser): 두 입력값 중 작은 값을 출력합니다.
- M (Multiply): 두 입력값의 곱을 출력합니다.
- N (North): 북쪽으로 이동하며, 도중에 bang을 발생시킵니다.
- O (Read): 특정 위치의 연산자를 읽습니다.
- P (Push): 동쪽 값을 한 칸 아래로 전달합니다.
- Q (Query): 특정 위치의 값을 읽습니다.
- R (Random): 지정된 범위 내에서 무작위 값을 출력합니다.
- S (South): 남쪽으로 이동하며, 도중에 bang을 발생시킵니다.
- T (Track): 동쪽으로 값을 추적하여 출력합니다.
- U (Uclid): 유클리드 리듬을 기반으로 bang을 발생시킵니다.
- V (Variable): 값을 저장하고, 불러옵니다.
- W (West): 서쪽으로 이동하며, 도중에 bang을 발생시킵니다.
- X (Write): 특정 위치에 값을 씁니다.
- Y (Jymper): 서쪽 값을 동쪽으로 전달합니다.
- Z (Lerp): 지정된 비율로 값을 변화시킵니다.
*
**(Bang): 인접한 연산자들에게 bang을 발생시킵니다.- # (Comment): 라인을 중지시킵니다.
특수 Operators
• $ (Self): Orca 내부 명령을 실행합니다.
• : (MIDI): MIDI 노트를 전송합니다.
• ! (MIDI CC): MIDI 컨트롤 체인지를 전송합니다.
• ; (Pitch): 피치 정보를 전송합니다.
• / (Byte): 원시 바이트를 전송합니다.
• = (Play): 내장된 신시사이저로 노트를 재생합니다.`
숫자
Orca는 36진수를 사용함
0 1 2 3 4 5 6 7 8 9 A B
0 1 2 3 4 5 6 7 8 9 10 11
C D E F G H I J K L M N
12 13 14 15 16 17 18 19 20 21 22 23
O P Q R S T U V W X Y Z
24 25 26 27 28 29 30 31 32 33 34 35
트리거
트리거는 bang이나 값을 발생, 출력, 작성시키는 연산자를 말한다.
C (Clock): 프레임 수를 기준으로 모듈로 값을 출력합니다.
D (Delay): 프레임의 모듈로 값을 기준으로 bang을 발생시킵니다.
U (Uclid): 유클리드 리듬을 기반으로 bang을 발생시킵니다.
R (Random): 지정된 범위 내에서 무작위 값을 출력합니다.
n이상 m 미만의 범위 내에서 무작위 값을 출력한다.
X (Write): 특정 위치에 값을 씁니다.
x칸 오른쪽으로, y칸 아래쪽으로 a 값을 작성한다. 해당 값은 위치가 바뀌면 사라진다.
T (Track): 동쪽으로 값을 추적하여 출력합니다.
m개의 트랙 중 n 번째(0부터 시작) 값을 바로 아래에 출력한다.
E (East): 동쪽으로 이동하며, 도중에 bang을 발생시킵니다.
W (West): 서쪽으로 이동하며, 도중에 bang을 발생시킵니다.
N (North): 북쪽으로 이동하며, 도중에 bang을 발생시킵니다.
S (South): 남쪽으로 이동하며, 도중에 bang을 발생시킵니다.
C, U는 숫자를 바로 아래칸에 생성하고, D는 bang을 바로 아래칸에 생성한다.
신호 전달
트리거가 만든 신호를 아래, 왼쪽, 오른쪽으로 전달하는 연산자를 말한다.
J (Jumper): 북쪽 값을 남쪽으로 전달합니다.
Y (Jymper): 서쪽 값을 동쪽으로 전달합니다.
P (Push): 동쪽 값을 한 칸 아래로 전달합니다.
P의 오른쪽 칸은 아래로 전달할 값이고,
P의 바로 왼쪽(이미지에서 5) 칸은 아래줄에서 몇 칸까지 전달할지 지정하는 것이고
P의 두 칸 왼쪽(이미지에서 0) 칸은 아래줄에서 몇 번째 칸에 값을 전달할지 지정하는 것이다. 0부터 시작해서 1씩 증가할 때마다 오른쪽으로 이동한다. 전달된 값은 남아 있게 된다.
G (Generator): 다수의 오른쪽 값을 아래줄에 전달한다.
G 오른쪽 p개의 값을 m번째 줄에, 바로아래 n번째 칸으로 전달한다.
O (Read): 특정 위치의 연산자를 읽고 바로 아래에 전달한다. 한 박자 느리다.
V (Variable): 값을 저장하고, 불러옵니다.
V 왼쪽에 호출명, V 오른쪽에 저장값. 호출할 땐 V 오른쪽에 호출명을 작성하면 V 바로 아래칸에 값을 불러온다.
연산
덧셈, 뺄셈, 곱셈등의 연산을 하는 연산자
A (Add): 두 입력값의 합을 출력합니다.
B (Subtract): 두 입력값의 차이를 출력합니다.
M (Multiply): 두 입력값의 곱을 출력합니다.
I (Increment): n배씩, m까지 증가되는 값을 출력합니다.
(참고: Orca는 36진수를 사용한다.)
논리
두 값을 비교하는 연산자
F (If): 두 입력값이 동일할 때 bang을 발생시킵니다.
L (Lesser): 두 입력값 중 작은 값을 출력합니다.
소리
: (MIDI): MIDI 노트를 전송합니다.:03C
, :05D
이런 식으로 ':'를 사용한 뒤에 숫자와 코드를 입력하면 소리로 인식한다.
참고
'혼자놀기' 카테고리의 다른 글
hammerspoon으로 오리 키보드 만들기 (0) | 2024.11.25 |
---|---|
MacOS 한영 전환 Hammerspoon을 이용한 딜레이 해결 (0) | 2024.11.23 |
hammerspoon으로 우측 shift를 ESC + 영어 입력 (0) | 2024.11.06 |
hammerspoon과 Karabiner를 이용해 우측 쉬프트를 ESC + 영어 전환키로 만들기 (0) | 2024.11.06 |
PDF를 이미지로 변환하기 (0) | 2024.11.02 |