2022-09-11 16:59:51 +02:00
# Lista wbudowanych funkcji języka Musique
2022-09-11 17:27:16 +02:00
* `bmp value` – zmienia wartość BMP z domyślnej na `value` ;
2022-09-11 16:59:51 +02:00
-`value` musi być liczbą całkowitą, domyślnie `120` ;
2022-09-11 17:27:16 +02:00
* `ceil value` – operacja podobna do matematycznej funkcji podłogi (zaokrąglenie liczby do pierwszej liczby całkowitej mniejszej lub równej tej liczbie);
2022-09-11 20:41:42 +02:00
- `value` – musi być to wartość o typie Number lub tablica takich wartości;
2022-09-11 16:59:51 +02:00
2022-09-11 17:27:16 +02:00
* `chord (notes)` – konstruuje akord z `notes` :
2022-09-11 16:59:51 +02:00
- `notes` – `notes` definiowane są następująco: `(<litera_nuty> <numer_oktawy> <czas_trwania>)` :
- np. `(c 4 1)` – dźwięk C w 4 oktawie, o długości całej nuty;
2022-09-11 17:27:16 +02:00
* `down value` – sekwencyjnie zwraca liczby całkowite, począwszy od `value` do 0:
2022-09-11 16:59:51 +02:00
- `value` – musi być liczbą całkowitą;
2022-09-11 20:41:42 +02:00
* `flat args` – łączy `args` w tablicę bez zagnieżdżeń (tzn. "odpakowuje" zawartość zagnieżdżonych tablic i zawiera je w pojedyńczej tabeli):
- `args` - tablica, w tym tablica z zagnieżdżeniami;
2022-09-11 16:59:51 +02:00
2022-09-11 17:27:16 +02:00
* `floor value` – operacja podobna do matematycznej funkcji podłogi (zaokrąglenie liczby do pierwszej liczby całkowitej większej lub równej tej liczbie);
2022-09-11 20:41:42 +02:00
- `value` – musi być to zmienna o typie Number lub tablica takich zmiennych;
* `fold args` – używa elementów tablicy jako argumentów podanej funkcji:
- `args` – postaci `tablica funkcja` lub `tablica wartość_startowa funkcja` ;
2022-09-11 16:59:51 +02:00
2022-09-11 17:27:16 +02:00
* `for vect` – iteruje po elementach wektora `vect` :
2022-09-11 16:59:51 +02:00
- `vect` - kontener wartości, musi posiadać typ Vector;
2022-09-11 17:27:16 +02:00
* `hash vect` – standardowa funkcja haszująca, zwraca jeden hash połączonych wartości z `vect` :
2022-09-11 16:59:51 +02:00
- `vect` - kontener wartości, mogą być dowolnego typu;
2022-09-11 18:02:27 +02:00
* `if cond [if_true] [if_false]` – wyrażenie warunkowe: jeżeli `cond` będzie prawdą, zostanie wykonany kod z `[if_true]` , w przeciwnym wypadku wykonany zostanie kod z `[if_false]` – fragment `[if_false]` jest opcjonalny;
2022-09-11 16:59:51 +02:00
2022-09-11 17:27:16 +02:00
* `incoming args` – pozwala na rozpatrzenie przychodzących komunikatów MIDI (`note_on` i `note_off` ), odpowiednio;
2022-09-11 18:02:27 +02:00
- `args` – konstrukcja `komunikat, nuta` ;
2022-09-11 17:04:42 +02:00
2022-09-11 17:27:16 +02:00
* `instrument args` – pozwala na zmianę instrumentu:
2022-09-11 18:02:27 +02:00
- `args` – może przyjmować sam numer programu, lub parę `numer_programu, kanał` ;
2022-09-11 17:27:16 +02:00
2022-09-11 20:41:42 +02:00
* `len args` – zwraca długość kontenera `args` , a jeżeli `args` nie jest wektorem ustawia domyślną długość trwania dźwięku, domyślnie ćwierćnuta;
2022-09-11 17:27:16 +02:00
* `max args` – zwraca maksimum z `args` ;
* `min args` – zwraca minimum z `args` ;
2022-09-11 18:02:27 +02:00
* `mix args` – algorytmicznie miesza wszystkie elementy z `args` :
2022-09-11 20:41:42 +02:00
- `args` – tablica elementów, może być tablicą z zagnieżdżeniami;
2022-09-11 17:27:16 +02:00
* `note_off args` – w zależności od kształtu `args` :
- jeżeli `args` są w postaci `(kanał, nuta)` – wyłącza nutę na danym kanale:
- `kanał` – liczba całkowita;
- `nuta` – postać podobna do `notes` z `chord notes` ;
- jeżeli `args` są w postaci `(kanał, akord)` – wyłącza wszystkie nuty z danego akordu na danym kanale;
* `note_on args` – analogicznie do `note_off args` ;
* `nprimes value` – generuje `value` kolejnych liczb pierwszych:
- `value` – musi być typu Number;
2022-09-11 20:41:42 +02:00
* `oct value` – analogicznie do `bpm value` , wartość domyślna to 4;
2022-09-11 17:27:16 +02:00
* `par args` – gra współbieżnie pierwszy dźwięk z `args` z pozostałymi dźwiękami z `args` :
- `args` – postać `(note, ...)` , powinien być rozmiaru co najmniej 2:
- `note` – postać podobna do `notes` z `chords notes` ;
* `partition args` – dzieli `args` na dwie grupy wedle danej funkcji:
2022-09-11 20:41:42 +02:00
- `args` – powinno przyjąć formę `(funkcja, tablica())`
2022-09-11 17:27:16 +02:00
* `permute args` – permutuje `args` :
2022-09-11 20:41:42 +02:00
- `args` – tablica obiektów;
2022-09-11 20:05:29 +02:00
* `pgmchange args` – analogicznie do `instrument args` ;
* `play args` – gra `args` :
2022-09-11 20:45:53 +02:00
- `args` – mogą być to pojedyncze nuty, tablica nut oraz bloki kodu (nuty analogicznie jak w `chord notes` );
2022-09-11 20:05:29 +02:00
* `program_change args` – analogicznie do `instrument args` ;
2022-09-11 20:41:42 +02:00
* `range args` – zwraca tablicę wartości liczbowych w podanych w `args` zakresie:
2022-09-11 20:05:29 +02:00
- `args` – postać `stop` , `start stop` lub `start stop step` ;
* `reverse args` – odwraca kolejność elementów `args` ;
2022-09-11 20:41:42 +02:00
- `args` – powinna być to tablica;
2022-09-11 20:05:29 +02:00
2022-09-11 20:41:42 +02:00
* `rotate args` – przenosi na koniec tablicy wskazaną ilość elementów:
- `args` – musi być postaci `liczba tablica` ;
2022-09-11 20:05:29 +02:00
* `round value` – zaokrągla wartość zgodnie z reguałmi matematyki:
- `value` – musi być to wartość liczbowa;
* `shuffle args` – tasuje elementy `args` :
2022-09-11 20:41:42 +02:00
- `args` – powinna być to tablica;
2022-09-11 20:05:29 +02:00
* `sort args` – sortuje elementy `args` :
2022-09-11 20:41:42 +02:00
- `args` – powinna być to tablica;
2022-09-11 20:05:29 +02:00
* `try args` – próbuje wykonać wszystkie bloki kodu poza ostatnim, a jeżeli w trakcie tej próby natrafi na błąd, wykonuje ostatni blok:
- `args` – musi być to co najmniej jeden blok kodu Musique;
* `typeof variable` – zwraca typ wskazanej `variable` ;
2022-09-11 20:41:42 +02:00
* `uniq args` – zwraca tablicę elementów, z której usunięto następujące po sobie powtórzenia:
- `args` – powinna być to tablica;
2022-09-11 20:05:29 +02:00
2022-09-11 20:41:42 +02:00
* `unique args` – zwraca tablicę elementów, z której usunięto powtórzenia:
- `args` – powinna być to tablica;
2022-09-11 20:05:29 +02:00
* `up value` – analogicznie do `down value` ;
2022-09-11 20:41:42 +02:00
* `update args` – aktualizuje element tablicy do nowej wartości:
- `args` – postaci `tablica indeks wartość` ;
2022-09-11 20:05:29 +02:00