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