musique/doc/cheatsheet.txt

120 lines
2.8 KiB
Plaintext

---------------------------------------------------------------------------
Składnia
---------------------------------------------------------------------------
Zapis nut (dostępna notacja zachodnia)
c
d
Ustawianie oktawy
c 8
Ustawianie oktawy i długości
c 8 (1/4) c w oktawie 8 grane przez 1/4 długości pełnej nuty
Ustawianie oktawy i długości, a następnie modyfikacja
(c 8 fn) 4 zmienia oktawę na 4
(c 8 fn) 4 qn zmienia oktawę na 4 i długość na 1/4
Stworzenie akordu
c123 == chord[c; c#; d; d#]
Nutę możemy modifikować poprzez podwyższanie o półton (# lub s), lub obniżanie o półton (b lub f)
c## == css == d == dff == dbb
Arytmetyka
(aktualnie brak wsparcia dla precedensji operatorów)
3 * (4 * 12 - 8)
Przesuwanie dźwięków o półtony
c + 1 == c#
c - 1 == b
c12 + 1 == c#12
Wywołanie funkcji
foo 1 2 3
Kilka wywołań obok siebie
foo 1; bar 2
Stworzenie zmiennej
var variable = 20
Blok
Jako tablica
[1;2;3]
Jako odroczona ewaluacja
[say 42]
Jako funkcja anonimowa jednoparametrowa
[i | i * i ]
Poniższe zapisy są równoważne
[ say 42 ]
[| say 42 ]
---------------------------------------------------------------------------
Dostępne stałe
---------------------------------------------------------------------------
fn 1
dfn 3/2
hn 1/2
dhn 3/4
ddhn 7/8
qn 1/4
dqn 3/8
ddqn 7/16
en 1/8
den 3/16
dden 7/32
sn 1/16
dsn 3/32
tn 1/32
dtn 3/64
---------------------------------------------------------------------------
Dostępne funkcje
---------------------------------------------------------------------------
flat : ...items : any -> array
tworzy tablicę z dostarczonych elementów, rozsypując elementy indeksowalne
przykład:
flat 1 2 3 tworzy tablicę 1, 2, 3
flat [1;2] 2 3 tworzy tablicę 1, 2, 2, 3
flat [[1;2]; [3;4]] 5 6 tworzy tablicę [1;2], [3;4], 5, 6
if : condition: bool, block: block -> (eval block)
wywołuje block jeśli condition jest:
dla b: bool jest b == true
dla n: number jest n != 0
dla nil jest false
dla typu music, block, intrinsic, symbol zawsze prawdziwe
if : condition: Bool, then: Block, else: Block -> (eval then or eval else)
jeśli condition jest prawdziwe wg zasad wyżej wywołaj then
w innym przypadku wywołaj else
len : array -> number
zwraca ilość elementów w tablicy
Przykład:
len (flat 5 6 7) == 3
len : block -> number
zwraca ilość elementów (liczbę indeksowalnych pozycji) wewnątrz bloku
Przykład:
len [1;2;3] == 3
len [foo;bar] == 2
len [foo bar] == 1
play : music... -> nil
odtwarza sekwencyjnie otrzymane wartości muzyczne
chord : (collection | music)... -> music
tworzy akord z przekazanych wartości muzycznych
par : x: music -> xs: playable... -> nil
odtwarza dźwięk x równolegle z wszystkimi dźwiękami xs