September 3, 2025

рандом

тут представлены все функции, которые можно использовать для внесения случайности в ваши музыкальные паттерны. каждая функция представлена ​​по одной и той же схеме:

  • Сигнатура типа: как функция объявлена ​на стороне Haskell.
  • Описание: словесное описание функции.
  • Примеры: небольшой список примеров, которые можно скопировать и вставить в редактор.

Псевдорандомизация

rand

rand - это генератор, генерирующий последовательность (псевдо) случайных чисел с плавающей запятой в диапазоне от 0,0 до 1,0. например, для случайного панорамирования стереополя можно:

или, чтобы наслаждаться случайной скоростью от 0,5 до 1,5, вы можете прибавить к значению 0,5.

irand

функция irand похожа на rand, но генерирует непрерывный генератор (псевдо) случайных целых чисел от 0 до n-1 включительно. в частности, используется для выбора случайных сэмпла из папки.

Перлинов шум

perlin

perlin создаёт 1D Perlin (гладкий) шум. jн работает как rand, но плавно переключается между случайными значениями в каждом цикле. например, можно плавно и случайным образом изменять скорость:

функция perlin генерирует новое случайное значение для каждого цикла. если вы хотите, чтобы новое случайное значение генерировалось чаще или реже, используйте fast или slow соответственно:

perlinWith

perlinWith позволяет указать паттерн в качестве входных данных для генерации случайных значений вместо использования количества циклов по умолчанию:

perlin2

perlin2 создает 2D шум, позволяя указать пользовательский паттерн в качестве второго измерения (номер цикла остается первым измерением):

perlin2With

perlin2With - это то же самое, что и perlinWith, за исключением того, что он позволяет предоставить две функции для 2D шума:

"sometimes"

sometimes

sometimes это функция, которая применяет другую функцию к паттерну примерно в 50% случаев случайным образом. для неё требуются два входных параметра: функция, которую нужно применить, и паттерн, к которому вы её применяете.

например, чтобы исказить половину событий в шаблоне:

sometimes имеет несколько вариантов, которые применяют функцию с разной вероятностью:

sometimesBy

если вы хотите уточнить, вы можете использовать sometimesBy и число, например:

применять контроль скорости в среднем 93 раза из 100.

someCycles

функция someCycles похожа на sometimes, но вместо применения заданной функции к случайным событиям она применяет её к случайным циклам. например, следующий код либо исказит все события в цикле, либо ни одно из них:

someCyclesBy

как и в случае с sometimesBy, для конкретики можно использовать someCyclesBy и число. например:

будет применять контроль скорости в среднем в 93 циклах из 100.

Выбор случайным образом

choose

функция choose выдает поток случайно выбранных значений из заданного списка в виде непрерывного паттерна:

как и в случае со всеми непрерывными паттернами, следует позаботиться о том, чтобы придать им структуру; в этом случае choose дает бесконечно подробный поток случайных выборов.

chooseby

функция chooseBy похожа на choose, но вместо случайного выбора элементов списка она использует заданный паттерн для выбора элементов.

= паттерн "a b c".

wchoose

wchoose чем-то похожа на функцию choose, но позволяет «взвешивать» варианты, чтобы вероятность выбора некоторых вариантов была выше, чем вероятность выбора других. следующий пример похож на предыдущий, но вероятность выбора числа 2 в два раза выше, чем у чисел 0 или 3.

wchooseby

wchooseBy = wchoose, но вместо случайного выбора элементов списка она использует заданный шаблон для выбора элементов.

cycleChoose

= choose, но выбор производится только один раз за цикл:

markovPat

markovPat - это способ генерации (псевдо) случайных паттернов на основе Markov chains. Markov chain представляет собой не предопределённый паттерн, а предопределённую последовательность вероятностей. эти вероятности управляют переходами от одного шага к другому. что даёт прямой контроль над случайностью генерируемого шаблона. markovPat принимает три аргумента: длину последовательности, индекс начального шага и матрицу вероятностей.

сначала определите значения для каждого состояния. например, если вы хотите составить последовательность из трёх звуков: bd, sd и clap:

при таком сопоставлении «bd» имеет индекс 0, «sd» - индекс 1, а «clap» - индекс 2. Обратите внимание, что вы можете включать паузы, добавляя «~» в качестве одного из звуков.

затем определите вероятность того, что каждый шаг перейдёт в каждый другой шаг. обратите внимание: значения будут нормализованы, поэтому их сумма не обязательно должна равняться 1.

в приведенном выше примере вероятность повторения bd составит 10%, вероятность перехода в sd - 70%, а вероятность перехода в clap - 20%. если добавить это к шаблону с длиной последовательности 16 и начальным индексом 0:

как и другие источники случайности, ритмическую структуру можно добавлять с помощью таких функций, как mask.