Audio Effects
Независимо от того, используете ли вы synth или sample, вы можете применить любой из следующих встроенных audio effects. Как вы могли догадаться, effects могут быть объединены в цепочку, и они принимают строку pattern в качестве аргумента.
Signal chain
Signal chain в Strudel выглядит следующим образом:
- Звукогенерирующий event запускается pattern
- У него есть время начала и продолжительность, которые обычно контролируются длиной ноты и параметрами ADSR
- Если мы превышаем максимальную полифонию, старые звуки начинают исчезать
- Заглушенные звуки (те, чье значение
sравно-,~или_) пропускаются
- Производится звук (через, скажем, sample или oscillator)
- Здесь происходят effects на основе detune (такие как
detune,penvи т.д.)
- Здесь происходят effects на основе detune (такие как
- Следующее произойдет по порядку и только если они были вызваны в pattern. Обратите внимание, что все это
effects одноразового использования, что означает, что множественные вхождения их в pattern просто переопределят значения
(например, вы не можете сделать
s("bd").lpf(100).distort(2).lpf(800)для lowpass, distort, а затем снова lowpass)- Phase vocoder (
stretch) - Применяется Gain (
gain)- Здесь происходит основной ADSR (громкости)
- Lowpass filter (
lpf) - Highpass filter (
hpf) - Bandpass filter (
bandpass) - Vowel filter (
vowel) - Уменьшение частоты дискретизации (
coarse) - Bit crushing (
crush) - Waveshape distortion (
shape) - Обычный distortion (
distort) - Tremolo (
tremolo) - Compressor (
compressor) - Panning (
pan) - Phaser (
phaser) - Postgain (
post)
- Phase vocoder (
- Затем звук разделяется на несколько назначений
- Dry output (количество контролируется параметром
dry) - The sends
- Analyzers
- Они используются для инструментов типа
scopeиspectrum, и их настройка обычно происходит за кулисами
- Они используются для инструментов типа
- Delay (количество контролируется параметром
delay) - Reverb (количество контролируется параметром
room)
- Analyzers
- Dry output (количество контролируется параметром
- Dry output, delay и reverb объединяются в так называемый “orbit” pattern (подробнее см. в разделе ниже)
- Effect
duckвлияет на громкость всех сигналов в orbit - Затем orbit отправляется в микшер
- Effect
Orbits
Orbits — это способ обработки выходов в Strudel. Они также предписывают, какие delay и reverb связать с dry signal.
По умолчанию все orbits смешиваются в каналы 1 и 2 в стерео, однако с настройкой “Multi Channel Orbits”
(в разделе Настройки справа) вы можете использовать их как отдельные 2-канальные стерео выходы (orbit i будет отображен на
каналы 2i и 2i + 1). Затем вы можете использовать маршрутизаторы типа Blackhole 16 для получения и записи всех каналов в DAW для последующей обработки.
Orbit по умолчанию — 1, и он устанавливается с помощью orbit. Вы можете отправить звук на несколько orbits через mininotation
s("white").orbit("2,3,4").gain(0.2)но будьте осторожны, так как это создаст три копии звука за кулисами, что означает, что если они будут смешаны в один выход, они утроят громкость. Мы уменьшили gain здесь, чтобы сберечь ваши уши.
⚠️ На каждый orbit приходится только один delay и один reverb, поэтому имейте в виду, что если вы попытаетесь изменить параметры на двух patterns, указывающих на один и тот же orbit, это может привести к непредсказуемым результатам. Сравните, например, этот красивый pluck с большим reverb:
$: s("triangle*4").decay(0.5).n(irand(12)).scale('C minor')
.room(1).roomsize(10)против того же pluck с заглушенным kick drum, который переопределяет значение roomsize:
$: s("triangle*4").decay(0.5).n(irand(12)).scale('C minor')
.room(1).roomsize(10)
$: s("bd*4").room(0.01).roomsize(0.01).postgain(0)Это происходит из-за того, что они используют один и тот же orbit: по умолчанию 1. Это можно исправить, просто обновив orbits, чтобы они были
различными:
$: s("triangle*4").decay(0.5).n(irand(12)).scale('C minor')
.room(1).roomsize(10).orbit(2)
$: s("bd*4").room(0.01).roomsize(0.01).postgain(0)Непрерывные изменения
Поскольку все вышеперечисленное запускается при возникновении звука, часто бывает так, что параметры могут не изменяться непрерывно во времени. Например,
s("supersaw").lpf(tri.range(100, 5000).slow(2))Не будет производить непрерывно модулированный LFO low-pass filter из-за того, что tri семплируется только каждый раз, когда звучит нота
(в данном случае по умолчанию один раз за cycle). Вы можете имитировать это, введя больше звукогенерирующих events, например:
s("supersaw").seg(16).lpf(tri.range(100, 5000).slow(2))Некоторые параметры действительно вызывают непрерывные изменения во времени, хотя:
- Кривая ADSR (управляется
attack,sustain,decay,release) - Кривая pitch envelope (управляется
penvи связанными ADSR) - Кривая FM (
fmenv) - Filter envelopes (
lpenv,hpenv,bpenv) - Tremolo (
tremolo) - Phaser (
phaser) - Vibrato (
vib) - Ducking (
duckorbit)
Filters
Filters являются важным строительным блоком subtractive synthesis. Strudel поставляется с 3 типами filters:
- low-pass filter: низкие частоты могут пройти, высокие частоты обрезаются
- high-pass filter: высокие частоты могут пройти, низкие частоты обрезаются
- band-pass filters: может пройти только частотная полоса, низкие и высокие частоты вокруг обрезаются
Каждый filter имеет 2 параметра:
- cutoff: частота, на которой filter начинает работать. например, low-pass filter с cutoff 1000Hz позволяет частотам ниже 1000Hz проходить.
- q-value: Контролирует резонанс filter. Более высокие значения звучат более агрессивно. См. также Q-Factor
lpf
cutoff, ctf, lpУстанавливает частоту среза low-pass filter.
При использовании mininotation можно также опционально добавить параметр 'lpq', разделённый ':'.
- frequency (number|Pattern): слышимая частота от 0 до 20000
s("bd sd [~ bd] sd,hh*6").lpf("<4000 2000 1000 500 200 100>")s("bd*16").lpf("1000:0 1000:10 1000:20 1000:30")lpq
resonanceУправляет low-pass q-значением.
- q (number|Pattern): фактор резонанса от 0 до 50
s("bd sd [~ bd] sd,hh*8").lpf(2000).lpq("<0 10 20 30>")hpf
hp, hcutoffУстанавливает частоту среза high-pass filter.
При использовании mininotation можно также опционально добавить параметр 'hpq', разделённый ':'.
- frequency (number|Pattern): слышимая частота от 0 до 20000
s("bd sd [~ bd] sd,hh*8").hpf("<4000 2000 1000 500 200 100>")s("bd sd [~ bd] sd,hh*8").hpf("<2000 2000:25>")hpq
hresonanceУправляет high-pass q-значением.
- q (number|Pattern): фактор резонанса от 0 до 50
s("bd sd [~ bd] sd,hh*8").hpf(2000).hpq("<0 10 20 30>")bpf
bandf, bpУстанавливает центральную частоту band-pass filter. При использовании mininotation можно также опционально указать параметр 'bpq', разделённый ':'.
- frequency (number|Pattern): центральная частота
s("bd sd [~ bd] sd,hh*6").bpf("<1000 2000 4000 8000>")bpq
bandqУстанавливает band-pass q-фактор (резонанс).
- q (number|Pattern): q-фактор
s("bd sd [~ bd] sd").bpf(500).bpq("<0 1 2 3>")ftype
Устанавливает тип filter. Ladder filter более агрессивный. В будущем могут быть добавлены другие типы.
- type (number|Pattern): 12db (0), ladder (1), или 24db (2)
note("{f g g c d a a#}%8").s("sawtooth").lpenv(4).lpf(500).ftype("<0 1 2>").lpq(1)note("c f g g a c d4").fast(2)
.sound('sawtooth')
.lpf(200).fanchor(0)
.lpenv(3).lpq(1)
.ftype("<ladder 12db 24db>")vowel
Формантный filter, чтобы звук был похож на гласные.
- vowel (string|Pattern): Можно использовать a e i o u ae aa oe ue y uh un en an on, соответствующие [a] [e] [i] [o] [u] [æ] [ɑ] [ø] [y] [ɯ] [ʌ] [œ̃] [ɛ̃] [ɑ̃] [ɔ̃]. Алиасы: aa = å = ɑ, oe = ø = ö, y = ı, ae = æ.
note("[c2 <eb2 <g2 g1>>]*2").s('sawtooth')
.vowel("<a e i <o u>>")s("bd sd mt ht bd [~ cp] ht lt").vowel("[a|e|i|o|u]")Amplitude Modulation
Amplitude modulation периодически изменяет амплитуду (gain) во времени.
am
tremolosync
tremsyncМодулирует амплитуду звука непрерывной формой волны
- cycles (number|Pattern): скорость модуляции в циклах
note("d d d# d".fast(4)).s("supersaw").tremolosync("4").tremoloskew("<1 .5 0>")tremolodepth
tremdepthГлубина амплитудной модуляции
- depth (number|Pattern):
note("a1 a1 a#1 a1".fast(4)).s("pulse").tremsync(4).tremolodepth("<1 2 .7>")tremoloskew
tremskewИзменяет форму волны модуляции
- amount (number|Pattern): от 0 до 1, форма волны
note("{f a c e}%16").s("sawtooth").tremsync(4).tremoloskew("<.5 0 1>")tremolophase
tremphaseИзменяет фазу волны модуляции
- offset (number|Pattern): смещение в циклах модуляции
note("{f a c e}%16").s("sawtooth").tremsync(4).tremolophase("<0 .25 .66>")tremoloshape
tremshapeФорма амплитудной модуляции
- shape (number|Pattern): tri | square | sine | saw | ramp
note("{f g c d}%16").tremsync(4).tremoloshape("<sine tri square>").s("sawtooth")Amplitude Envelope
Amplitude envelope контролирует динамический контур звука. Strudel использует ADSR envelopes, которые, вероятно, являются наиболее распространенным способом описания envelope:
![]()
attack
attВремя attack амплитудного envelope: Определяет, сколько времени требуется звуку для достижения пикового значения относительно начала.
- attack (number|Pattern): время в секундах.
note("c3 e3 f3 g3").attack("<0 .1 .5>")decay
decВремя decay амплитудного envelope: время, которое требуется после attack для достижения уровня sustain. Обратите внимание, что decay слышен только если значение sustain меньше 1.
- time (number|Pattern): время decay в секундах
note("c3 e3 f3 g3").decay("<.1 .2 .3 .4>").sustain(0)sustain
susУровень sustain амплитудного envelope: Уровень, который достигается после attack / decay и поддерживается до окончания.
- gain (number|Pattern): уровень sustain от 0 до 1
note("c3 e3 f3 g3").decay(.2).sustain("<0 .1 .4 .6 1>")release
relВремя release амплитудного envelope: Время, которое требуется после окончания для перехода от уровня sustain к нулю.
- time (number|Pattern): время release в секундах
note("c3 e3 g3 c4").release("<0 .1 .4 .6 1>/2")adsr
ADSR envelope: Комбинация Attack, Decay, Sustain и Release.
- time (number|Pattern): время attack в секундах
- time (number|Pattern): время decay в секундах
- gain (number|Pattern): уровень sustain (от 0 до 1)
- time (number|Pattern): время release в секундах
note("[c3 bb2 f3 eb3]*2").sound("sawtooth").lpf(600).adsr(".1:.1:.5:.2")Filter Envelope
Каждый filter может получить дополнительный filter envelope, динамически контролирующий значение cutoff. Он использует ADSR envelope, аналогичный используемому для амплитуды. Есть дополнительный параметр для контроля глубины модуляции filter: lpenv|hpenv|bpenv. Это позволяет вам воспроизводить тонкие или огромные модуляции filter просто увеличивая или уменьшая глубину.
note("[c eb g <f bb>](3,8,<0 1>)".sub(12))
.s("<sawtooth>/64")
.lpf(sine.range(300,2000).slow(16))
.lpa(0.005)
.lpd(perlin.range(.02,.2))
.lps(perlin.range(0,.5).slow(3))
.lpq(sine.range(2,10).slow(32))
.release(.5)
.lpenv(perlin.range(1,8).slow(2))
.ftype('24db')
.room(1)
.juxBy(.5,rev)
.sometimes(add(note(12)))
.stack(s("bd*2").bank('RolandTR909'))
.gain(.5).fast(2)Есть один filter envelope для каждого типа filter и, следовательно, один набор параметров envelope filter с префиксом lp, hp или bp:
lpattack,lpdecay,lpsustain,lprelease,lpenv: filter envelope для lowpass filter.- альтернативно:
lpa,lpd,lps,lprиlpe.
- альтернативно:
hpattack,hpdecay,hpsustain,hprelease,hpenv: filter envelope для highpass filter.- альтернативно:
hpa,hpd,hps,hprиhpe.
- альтернативно:
bpattack,bpdecay,bpsustain,bprelease,bpenv: filter envelope для bandpass filter.- альтернативно:
bpa,bpd,bps,bprиbpe.
- альтернативно:
lpattack
lpaУстанавливает длительность attack для envelope lowpass filter.
- attack (number|Pattern): время envelope filter
note("c2 e2 f2 g2")
.sound('sawtooth')
.lpf(300)
.lpa("<.5 .25 .1 .01>/4")
.lpenv(4)lpdecay
lpdУстанавливает длительность decay для envelope lowpass filter.
- decay (number|Pattern): время envelope filter
note("c2 e2 f2 g2")
.sound('sawtooth')
.lpf(300)
.lpd("<.5 .25 .1 0>/4")
.lpenv(4)lpsustain
lpsУстанавливает амплитуду sustain для envelope lowpass filter.
- sustain (number|Pattern): амплитуда envelope lowpass filter
note("c2 e2 f2 g2")
.sound('sawtooth')
.lpf(300)
.lpd(.5)
.lps("<0 .25 .5 1>/4")
.lpenv(4)lprelease
lprУстанавливает время release для envelope lowpass filter.
- release (number|Pattern): время envelope filter
note("c2 e2 f2 g2")
.sound('sawtooth')
.clip(.5)
.lpf(300)
.lpenv(4)
.lpr("<.5 .25 .1 0>/4")
.release(.5)lpenv
lpeУстанавливает глубину модуляции envelope lowpass filter.
- modulation (number|Pattern): глубина envelope lowpass filter от 0 до n
note("c2 e2 f2 g2")
.sound('sawtooth')
.lpf(300)
.lpa(.5)
.lpenv("<4 2 1 0 -1 -2 -4>/4")Pitch Envelope
Вы также можете контролировать высоту тона с помощью envelopes! Pitch envelopes могут вдохнуть жизнь в статичные звуки:
n("<-4,0 5 2 1>*<2!3 4>")
.scale("<C F>/8:pentatonic")
.s("gm_electric_guitar_jazz")
.penv("<.5 0 7 -2>*2").vib("4:.1")
.phaser(2).delay(.25).room(.3)
.size(4).fast(1.5)Вы также можете создать прекрасные звуки в стиле chiptune:
n(run("<4 8>/16")).jux(rev)
.chord("<C^7 <Db^7 Fm7>>")
.dict('ireal')
.voicing().add(note("<0 1>/8"))
.dec(.1).room(.2)
.segment("<4 [2 8]>")
.penv("<0 <2 -2>>").patt(.02).fast(2)Давайте разберем все элементы управления pitch envelope:
pattack
pattВремя attack для pitch envelope.
- time (number|Pattern): время в секундах
note("c eb g bb").pattack("0 .1 .25 .5").slow(2)pdecay
pdecВремя decay для pitch envelope.
- time (number|Pattern): время в секундах
note("<c eb g bb>").pdecay("<0 .1 .25 .5>")prelease
prelВремя release для pitch envelope
- time (number|Pattern): время в секундах
note("<c eb g bb> ~")
.release(.5) // чтобы услышать pitch release
.prelease("<0 .1 .25 .5>")penv
Величина pitch envelope. Отрицательные значения переворачивают envelope.
Если вы не установите другие параметры pitch envelope, pattack:.2 будет значением по умолчанию.
- semitones (number|Pattern): изменение в полутонах
note("c")
.penv("<12 7 1 .5 0 -1 -7 -12>")pcurve
Кривая envelope. По умолчанию линейная. exponential хорошо подходит для kicks
- type (number|Pattern): 0 = linear, 1 = exponential
note("g1*4")
.s("sine").pdec(.5)
.penv(32)
.pcurve("<0 1>")panchor
Устанавливает опорную точку диапазона envelope:
- anchor 0: range = [note, note + penv]
- anchor 1: range = [note - penv, note] Если не установить anchor, значение по умолчанию будет равно значению psustain.
- anchor (number|Pattern): смещение опорной точки
note("c c4").penv(12).panchor("<0 .5 1 .5>")Dynamics
gain
Управляет gain экспоненциальным образом.
- amount (number|Pattern): громкость.
s("hh*8").gain(".4!2 1 .4!2 1 .4 1").fast(2)velocity
Устанавливает силу нажатия от 0 до 1. Умножается вместе с gain.
s("hh*8")
.gain(".4!2 1 .4!2 1 .4 1")
.velocity(".4 1")compressor
Динамический компрессор. Параметры: compressor("threshold:ratio:knee:attack:release")
Больше информации здесь
s("bd sd [~ bd] sd,hh*8")
.compressor("-20:20:10:.002:.02")postgain
Gain, применяемый после обработки всех эффектов.
s("bd sd [~ bd] sd,hh*8")
.compressor("-20:20:10:.002:.02").postgain(1.5)xfade
Cross-fades between left and right from 0 to 1:
- 0 = (full left, no right)
- .5 = (both equal)
- 1 = (no left, full right)
xfade(s("bd*2"), "<0 .25 .5 .75 1>", s("hh*8"))Panning
jux
Функция jux создаёт странные стерео эффекты, применяя функцию к pattern, но только в правом канале.
s("bd lt [~ ht] mt cp ~ bd hh").jux(rev)s("bd lt [~ ht] mt cp ~ bd hh").jux(press)s("bd lt [~ ht] mt cp ~ bd hh").jux(iter(4))juxBy
juxbyJux с регулируемой стерео шириной. 0 = моно, 1 = полное стерео.
s("bd lt [~ ht] mt cp ~ bd hh").juxBy("<0 .5 1>/2", rev)pan
Устанавливает позицию в stereo.
- pan (number|Pattern): от 0 до 1, слева направо (для stereo), один круг (для многоканальности)
s("[bd hh]*2").pan("<.5 1 .5 0>")s("bd rim sd rim bd ~ cp rim").pan(sine.slow(2))Waveshaping
coarse
Имитация ресэмплинга для снижения частоты дискретизации. Внимание: Этот эффект, похоже, работает только в браузерах на основе chromium
- factor (number|Pattern): 1 для оригинала, 2 для половины, 3 для трети и так далее.
s("bd sd [~ bd] sd,hh*8").coarse("<1 4 8 16 32>")crush
Эффект bit crusher.
- depth (number|Pattern): от 1 (сильное снижение битности) до 16 (почти без снижения).
s("<bd sd>,hh*3").fast(2).crush("<16 8 7 6 5 4 3 2>")distort
distДисторшн с формированием волны. ВНИМАНИЕ: может быть очень громким. Второй параметр в опциональном синтаксисе массива (например: ".9:.5") применяет postgain к выходу. Третий параметр устанавливает тип формирования волны. Наиболее полезные значения обычно между 0 и 10 (в зависимости от исходного gain). Если чувствуете себя смелым, можете увеличить до 11 и выше ;)
- distortion (number|Pattern): количество дисторшна для применения
- volume (number|Pattern): линейный postgain дисторшна
- type (number|string|Pattern): тип дисторшна для применения
s("bd sd [~ bd] sd,hh*8").distort("<0 2 3 10:.5>")note("d1!8").s("sine").penv(36).pdecay(.12).decay(.23).distort("8:.4")s("bd:4*4").bank("tr808").distort("3:0.5:diode")Global Effects
Local vs Global Effects
В то время как вышеперечисленные “локальные” effects всегда будут создавать отдельную цепочку effects для каждого event, global effects используют одну и ту же цепочку для всех events одного orbit:
orbit
oorbit это глобальный параметрический контекст для pattern. Pattern с одним и тем же orbit будут использовать одни и те же глобальные эффекты.
- number (number|Pattern):
stack(
s("hh*6").delay(.5).delaytime(.25).orbit(1),
s("~ sd ~ sd").delay(.5).delaytime(.125).orbit(2)
)Delay
delay
Устанавливает уровень сигнала delay.
При использовании mininotation можно также опционально добавить параметры 'delaytime' и 'delayfeedback', разделённые ':'.
- level (number|Pattern): от 0 до 1
s("bd bd").delay("<0 .25 .5 1>")s("bd bd").delay("0.65:0.25:0.9 0.65:0.125:0.7")delaytime
delayfeedback
delayfb, dfbУстанавливает уровень сигнала, который возвращается обратно в delay. Осторожно: Значения >= 1 приведут к сигналу, который становится всё громче и громче! Не делайте этого
- feedback (number|Pattern): от 0 до 1
s("bd").delay(.25).delayfeedback("<.25 .5 .75 1>")Reverb
room
Устанавливает уровень reverb.
При использовании mininotation можно также опционально добавить параметр 'size', разделённый ':'.
- level (number|Pattern): от 0 до 1
s("bd sd [~ bd] sd").room("<0 .2 .4 .6 .8 1>")s("bd sd [~ bd] sd").room("<0.9:1 0.9:4>")roomsize
rsize, sz, sizeУстанавливает размер комнаты для reverb, смотрите room.
При изменении этого свойства reverb будет пересчитан, поэтому изменяйте его редко..
- size (number|Pattern): от 0 до 10
s("bd sd [~ bd] sd").room(.8).rsize(1)s("bd sd [~ bd] sd").room(.8).rsize(4)roomfade
rfadeВремя затухания reverb (в секундах). При изменении этого свойства reverb будет пересчитан, поэтому изменяйте его редко..
- seconds (number): секунды затухания reverb
s("bd sd [~ bd] sd").room(0.5).rlp(10000).rfade(0.5)s("bd sd [~ bd] sd").room(0.5).rlp(5000).rfade(4)roomlp
rlpНачальная частота lowpass reverb (в герцах). При изменении этого свойства reverb будет пересчитан, поэтому изменяйте его редко..
- frequency (number): от 0 до 20000 Гц
s("bd sd [~ bd] sd").room(0.5).rlp(10000)s("bd sd [~ bd] sd").room(0.5).rlp(5000)roomdim
rdimЧастота lowpass reverb на -60dB (в герцах). При изменении этого свойства reverb будет пересчитан, поэтому изменяйте его редко..
- frequency (number): от 0 до 20000 Гц
s("bd sd [~ bd] sd").room(0.5).rlp(10000).rdim(8000)s("bd sd [~ bd] sd").room(0.5).rlp(5000).rdim(400)iresponse
irУстанавливает sample для использования в качестве импульсной характеристики для reverb.
- sample (string|Pattern): для использования в качестве импульсной характеристики
s("bd sd [~ bd] sd").room(.8).ir("<shaker_large:0 shaker_large:2>")Phaser
phaser
phАудио эффект phaser, приближенный к популярным гитарным педалям.
- speed (number|Pattern): скорость модуляции
n(run(8)).scale("D:pentatonic").s("sawtooth").release(0.5)
.phaser("<1 2 4 8>")phaserdepth
phd, phasdpКоличество влияния эффекта phaser на сигнал. По умолчанию 0.75
- depth (number|Pattern): число от 0 до 1
n(run(8)).scale("D:pentatonic").s("sawtooth").release(0.5)
.phaser(2).phaserdepth("<0 .5 .75 1>")phasercenter
phcЦентральная частота phaser в Гц. По умолчанию 1000
- centerfrequency (number|Pattern): в Гц
n(run(8)).scale("D:pentatonic").s("sawtooth").release(0.5)
.phaser(2).phasercenter("<800 2000 4000>")phasersweep
phsДиапазон частотного sweep lfo для эффекта phaser. По умолчанию 2000
- phasersweep (number|Pattern): наиболее полезные значения между 0 и 4000
n(run(8)).scale("D:pentatonic").s("sawtooth").release(0.5)
.phaser(2).phasersweep("<800 2000 4000>")Duck
duckorbit
duckМодулирует амплитуду orbit для создания эффекта типа "sidechain".
Может применяться к нескольким orbit с помощью ':' mininotation, например, duckorbit("2:3")
- orbit (number|Pattern): целевой orbit
$: n(run(16)).scale("c:minor:pentatonic").s("sawtooth").delay(.7).orbit(2)
$: s("bd:4!4").beat("0,4,8,11,14",16).duckorbit(2).duckattack(0.2).duckdepth(1)$: n(run(16)).scale("c:minor:pentatonic").s("sawtooth").delay(.7).orbit(2)
$: s("hh*16").orbit(3)
$: s("bd:4!4").beat("0,4,8,11,14",16).duckorbit("2:3").duckattack(0.2).duckdepth(1)duckattack
duckattВремя, необходимое для того, чтобы обработанный сигнал(ы) вернулся к нормальной громкости.
Может варьироваться между orbit с помощью ':' mininotation, например, duckonset("0:0.003").
Примечание: это требует сначала применить эффект к нескольким orbit, например, duckorbit("2:3").
- time (number|Pattern): Время attack в секундах
sound: n(run(8)).scale("c:minor").s("sawtooth").delay(.7).orbit(2)
ducker: s("bd:4!4").beat("0,4,8,11,14",16).duckorbit(2).duckattack("<0.2 0 0.4>").duckdepth(1)moreduck: n(run(8)).scale("c:minor").s("sawtooth").delay(.7).orbit(2)
lessduck: s("hh*16").orbit(5)
ducker: s("bd:4!4").beat("0,4,8,11,14",16).duckorbit("2:5").duckattack("0.4:0.1")duckdepth
Количество ducking, применяемое к целевому orbit
Может варьироваться между orbit с помощью ':' mininotation, например, duckdepth("0.3:0.1").
Примечание: это требует сначала применить эффект к нескольким orbit, например, duckorbit("2:3").
- depth (number|Pattern): глубина модуляции от 0 до 1
stack( n(run(8)).scale("c:minor").s("sawtooth").delay(.7).orbit(2), s("bd:4!4").beat("0,4,8,11,14",16).duckorbit(2).duckattack(0.2).duckdepth("<1 .9 .6 0>"))$: n(run(16)).scale("c:minor:pentatonic").s("sawtooth").delay(.7).orbit(2)
$: s("hh*16").orbit(3)
$: s("bd:4!4").beat("0,4,8,11,14",16).duckorbit("2:3").duckattack(0.2).duckdepth("1:0.5")Далее мы рассмотрим ввод/вывод через MIDI, OSC и другие методы.