сэмплинг
на этой странице представлены все функции, которые можно использовать для нарезки, вырезания, реверсирования или разбиения сэмплов, входящих сигналов или осцилляторов. каждая функция представлена по одной и той же схеме:
- Сигнатура типа: как функция объявлена на стороне Haskell.
- Описание: словесное описание функции.
- Примеры: небольшой список примеров, которые можно скопировать и вставить в редактор.
Сэмплирование аудио
chop
функция chop разрезает каждый паттерн на заданное количество частей, позволяя изучить метод, известный как «гранулярный синтез». он преобразует паттерн образцов в паттерн частей образцов:
каждый сэмпл делится на 16 бит, что даёт 64 (16*4) события. можно задать паттерн для первого параметра:
в результате получается паттерн из нарезанных фрагментов сэмплов. это можно услышать это более отчётливо, например, перевернув паттерн, так как изменяется порядок частей сэмплов:
тут это происходит только с одним динамиком:
различные значения измельчения могут давать совершенно разные результаты в зависимости от используемых сэмплов:
также можете использовать функцию chop (или striate) для очень длинных сэмплов, чтобы разрезать их на короткие фрагменты и структурировать их. следующий код разрезает сэмпл на 32 части и воспроизводит его в течение 8 тактов:
функция loopAt изменяет скорость воспроизведения сэмпла, чтобы он идеально укладывался в заданное количество циклов. в результате в примере выше гранулы идеально выстраиваются в линию, поэтому не слышно, что сэмпл был нарезан на фрагменты. опять же, это становится более очевидным при дальнейших манипуляциях с паттерном, например, при использовании rev для изменения порядка нарезанных фрагментов:
striate
striate - это своего рода гранулятор, разрезающий образцы на каты подобно чопу, но полученные каты организованы иначе:
это воспроизводит цикл заданное количество раз, но запуская прогрессивные фрагменты каждого сэмпла. таким образом, в данном случае цикл воспроизводится три раза: в первый раз - первая треть каждого сэмпла, затем - вторая треть каждого сэмпла, и, наконец, - последняя треть каждого сэмпла. если сравнить это с это с функцией chop:
striateBy
striateBy (= striate') - это вариант striate с дополнительным параметром, который задаёт длину каждой части. striate по-прежнему сканирует сэмпл за один цикл, но если каждый бит длиннее, возникает своего рода эффект заикания. например, следующий код разрежет сэмпл bev на 32 части, но каждая будет иметь длину, равную 1/16 сэмпла:
важно, что striate использует внутренние параметры begin и end. это означает, что если используется striate или striateBy, не следует указывать также begin и end.
slice
функция slice похожа на функцию chop and striate, поскольку позволяет нарезать сэмплы на фрагменты. разница в том, что она позволяет переставлять эти фрагменты в виде pattern.
вышеприведенный код разрезает сэмпл на восемь бит, а затем воспроизводит их в обратном порядке, что эквивалентно применению rev $ chop 8. более сложный пример:
splice
splice похоже на нарезку, но нарезки автоматически наклоняются вверх или вниз, чтобы заполнить свой «слот».
randslice
randslice разрезает сэмпл на заданное количество частей, а затем воспроизводит случайную часть в каждом цикле:
можно юзать быстрый режим, чтобы получить больше одного за цикл;
chew
chew работает так же, как и bite, но ускоряет/замедляет воспроизведение звуков, а также сжимает/контрастит части паттерна:
loopAt
loopAt подгоняет сэмпл под заданное количество циклов. внутренне она работает следующим образом: устанавливает единицу управления на «c», изменяет скорость воспроизведения сэмпла с помощью параметра «speed» и устанавливает соответствующую плотность паттерна.
хорошей идеей является использование этой функции в сочетании с функцией chop, так разрыв будет по частям, и не придется ждать, пока начнется/остановится весь сэмпл.
как и со всеми функциями Tidal, с этой функцией можно экспериментировать. пример ниже показывает, как задать шаблон количества циклов для loopAt:
smash
smash - это комбинация spread и striate: он нарезает сэмплы на заданное количество битов, а затем вставляет их между воспроизведением цикла на разных скоростях в соответствии со значениями в списке.:
smash'
smash' - это smash, но основано но chop, а не striate.
сэмплинг по сигналам
segment
segment «сэмплирует» паттерн с частотой n событий за цикл. полезно для преобразования непрерывного паттерна в дискретный. в этом примере паттерн формируется из формы синуса, непрерывного паттерна. без segment отсчёты будут запускаться с неопределённой частотой, которая может быть очень высокой.
sig
функция sig принимает функцию времени и преобразует её в шаблон. Это очень полезно для создания непрерывных паттерноа, таких как sine или perlin. saw определяется как: