[TidalCycles] SuperDirt에 SideChain Comporessor 추가
안 와요?
본고는 Tidal Cycles의 음성 엔진 슈퍼 디트를 이용하여 즉흥 연주를 실현하는 인터랙티브 합창을 실현하는 방법을 소개한다.
골대
Tidal을 function으로 압축기를 적용하고 아래를 목표로 한다.
있다
adding-a-compressor.scd
filtering-dirt-output.scd
등), 이것들을 참고하면 바로 만들 수 있다.다만, 여러 Bus의 신호 입력 출력 관리, 모듈화할 때의 오류 등 Tidal 스마트와 협업하기는 좀 어렵다.동작 완료 확인부터 모듈화까지 순서대로 설명한다.
실장할 때 모스 선생의 글은 개요와 절차에 대한 확인에 매우 참고 가치가 있다https://qiita.com/moxuse@github/items/8da28584e5348463af25.
또 측면 삽입의 상세한 해설은 에이블튼의 보도가 비교적 뜨겁다https://www.ableton.com/ja/blog/sidechain-compression-part-1/.
나의 개발 환경은 (macOS:10.13.6,Tidal:1.7.4,SuperCollider:3.11.1,Editor:Emacs)이다.
1. Tidal에 매개변수 추가
사운드
Params.hs
를 쓰는 방법과 다른 스크립트에 기술하고 시작할 때 읽는 방법 등 Tidal이 시작된 후 직접 실행하는 간단한 방법이 있다.table.tidal
let compthr = pF "compthr"
comprel = pF "comprel"
compbus = pI "compbus"
압축기로 쓰인 쓰리홀드compthr
, 릴리즈comprel
, 지정제어신호Buscompbus
3가지 유형이 설정됐다.pF
pattern Flat(소수), pI
pattern Int(정수)를 지정하거나 "0.25 0.5"
처럼 도형으로 파라미터를 기술할 수 있습니다.compbus
예를 들어 d2에서 온 신호를 d1로 압축할 때table.tidal
d1 $ s "padlong" # compthr 0.1 # compbus 2 -- d2を指定
d2 $ s "bd hc sd hc"
나는 이렇게 사용하려고 생각하고 있다.2. SuperDirt에 모듈 추가
그런 다음 SuperDirt에 모듈을 추가합니다.나중에 시작할 때의 합병을 위해서는 다른 파일에 기술해야 하지만 적당한 곳에 보관해야 한다
myEffects.scd
.myEffects.scd
(
~dirt.addModule('dirt_compressor', { |dirtEvent|
dirtEvent.sendSynth('dirt_compressor' ++ ~dirt.numChannels,
[
compthr: ~compthr,
comprel: ~comprel,
compbus: ~compbus,
out: ~out
]
)
}, { ~compthr.notNil });
~dirt.orderModules(['dirt_compressor']);
)
hacks의commpressor 샘플에는 dryBus와 effectBus를 사용하는 방법이 적혀 있지만 사이드 슬라이딩 중 다른 orbit에서 신호를 얻으려면 Out로 하면 순조롭게 진행될 수 있다.11행~compthr.notNil
은tidal에commpthr를 쓰기 전에 효과를 적용하지 않는 명령입니다.3. 효과(Synthdef) 설치
여기도 잠시
myEffects.scd
아래 공간에 기술하다myEffects.scd
(
var numChannels = ~dirt.numChannels;
SynthDef("dirt_compressor" ++ numChannels, { |out, compbus, compthr=0.1, comprel=0.01, gate = 1|
var signal = In.ar(out, numChannels);
var control = In.ar(Select.kr(max(0, compbus-1), ~dirt.orbits.collect { |x| x.dryBus };), 2).sum;
var thrround = min(compthr, 0.99);
thrround = max(thrround, 0.0001);
signal = Compander.ar(signal, control,
thresh: compthr,
slopeBelow: 1,
slopeAbove: 0.1,
clampTime: 0.1,
relaxTime: comprel
);
signal = signal * EnvGen.kr(Env.asr, gate, doneAction:2);
ReplaceOut.ar(out, signal);
}, [\ir, \ir]).add;
)
4행var signal
에서 효과가 있는 소리.아래var control
는 사이드 인입기를 제어하는 신호, Selekt이다.krcompbus
를 사용하여 Bus를 지정합니다.max(0,compbus-1)
orbit는 0으로 시작하기 때문에(d1은 0, d2는 1) 직관적인 처리를 위해 -1.또한 0 또는 마이너스를 입력했기 때문에 최대값은 max로 되돌아옵니다.아래var thrround
도 마찬가지로 thereshold의 설정이 잘못된 소리가 터지지 않는 방식max
과 min
을 반올림했다.또한 Compander
는 압축기에 적용된다.이번에 Tidal부터 조작할 수 있도록 매개 변수화한 것은threshold와release에 해당하는relaxTime 두 가지로 훑어보기slopeAbove
,attack에 해당하는clampTime 등 매개 변수화한 것이 흥미롭다.하지만 속도감 있는 즉흥 연주를 위해 요소를 줄이는 것도 중요하다.여기까지 했으면 테스트를 해보자.프로그램 시작
SuperDirt.start
d1 $ s "padlong" # speed (range 0.5 4 rand) # compthr "0.2" # comprel 0.01 # compbus "2"
d2 $ rarely (ply 8) $ s "md [hh bd?] cp bd" # shape 0.85
d3 $ s "808bd" # gain 1.1 # shape 0.8
d4 $ s "casio*4" # legato 0.1
d1compbus
을 3, 4"2 3 4 3"
로 바꾸면 이해하기 쉽다.4. 시작할 때 읽기 설정
마지막으로 위의 단계를 단순화합니다. SuperDirt.start만 있으면 모든 것을 접근할 수 있습니다.시작할 때 자신의 효과를 추가하기 위해 파일을 올리는 것이 안전하지만 잘 모르기 때문에 소스에 직접 추가하는 방법(실패)을 취한다(실패).그러나 이 방법의 장점으로 임의의 시기(예를 들어 Lowpass Filter의 전/후 등)에 압축을 적용할 수 있다.서류 로딩도 가능한 분위기일 뿐, 앞으로의 과제다
먼저 Tidal의 매개 변수 선언의 세 줄입니다. 이것은
BootTidal.hs
의 맨 아래에 쓰여 있습니다.이렇게 하면 편집기의 Tidal Boot에서 자동으로 실행됩니다.이어 SuperDirt의
myEffects.scd
폴더에 synths
에 쓰인 모듈의 추가 블록을 추가했다.여기 맨 밑에 있어요.comporessor를 초과하지 않도록 주의하십시오. (전체 블록의 끝을 표시합니다. core-modules.scd
마지막으로
);
에 적힌 Synthdef의 블록은 이 폴더myEffects.scd
의 Synthdef에 배열된 블록에 추가됩니다.여기core-synths.scd
에서 맨 위에 쓴 myEffects.scd
는 var numChannels = ~dirt.numChannels;
의 첫머리에 선언이 되었으니 삭제하세요.이렇게 되면 오류가 없으면
core-synth.scd
부터 시작하는 Tidal 부팅은 바로 사용할 수 있을 것이다.Tireshold를 모드화해 여러 레이어의 그룹을 만들고 테스트 때도 만진 것
SuperDirt.start
을 모드화해 주기별로 다른 소스에서 측면 삽입해 Tidal 특유의 가능성이 상당하다.Tidal이 익숙해지면 간단한 하드웨어처럼 구조를 빠르게 조립할 수 있고, 측면 삽입 실험도 순조롭다.
Reference
이 문제에 관하여([TidalCycles] SuperDirt에 SideChain Comporessor 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hiroki_mtplc/articles/d3de0840c773c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)