1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【TidalCycles】再生中の音にエフェクトをかける

Last updated at Posted at 2022-12-11

はじめに

TidalCyclesはHaskellライクなコードによってリズムパターンを生成できるソフトウェアです。

もちろんエフェクトをかけることもできますが、どの音にどんなエフェクトをどれくらいかけるのか指定してから再生されるため、一度生成した音のエフェクトを変更したりすることができません。

ただ、panやボリュームなどエフェクトを少しずつ変えたり、という願望はあります。forumを探していると同じことを聞いている方がいました。

ここでmunshkrさんがSuperDirtModという拡張機能を紹介しているのでつかってみます。

SuperDirtMod

インストール方法

インストール方法は、READMEにも書いてある通りSuperColliderのエディタで以下を実行してから、アプリを再起動することで使えるようになります。(再起動したくない場合は、Recompileすればいいみたいです)

Quarks.install("https://github.com/munshkr/SuperDirtMod");

セットアップ

まずTidalCycles側です。
BootTidal.hsに以下を記載します。(BootTidal.hsについてはこちらの記事を参考にしてください。)

--
-- == SuperDirtMod BEGIN ==
--

-- Define mod target
modTarget = superdirtTarget {oName = "SuperDirtMod", oAddress = "127.0.0.1", oPort = 57130 }
oscSet = OSC "/set" Named {requiredArgs = []}
modMap = [(modTarget, [oscSet])]
-- Define mod stream
-- Total latency = oLatency + cFrameTimespan
modu <- startStream (defaultConfig {cCtrlAddr = "0.0.0.0", cCtrlPort = 6061}) modMap

getStatem = streamGet modu
setIm = streamSetI modu
setFm = streamSetF modu

-- Define pmod stream replacer and orbit helper functions
pmod = streamReplace modu
mod1 = pmod "mod1" . (|< orbit 0)
mod2 = pmod "mod2" . (|< orbit 1)
mod3 = pmod "mod3" . (|< orbit 2)
mod4 = pmod "mod4" . (|< orbit 3)
mod5 = pmod "mod5" . (|< orbit 4)
mod6 = pmod "mod6" . (|< orbit 5)
mod7 = pmod "mod7" . (|< orbit 6)
mod8 = pmod "mod8" . (|< orbit 7)
mod9 = pmod "mod9" . (|< orbit 8)
mod10 = pmod "mod10" . (|< orbit 9)
mod11 = pmod "mod11" . (|< orbit 10)
mod12 = pmod "mod12" . (|< orbit 11)

-- Reset functions
reset = pI "reset" 1
modResetAll = streamOnce modu reset

putStrLn "SuperDirtMod enabled"

--
-- == SuperDirtMod END ==
--

ちなみに私の環境は

tidal: 1.7.10
ghc: 9.2.2

です。

次にSuperCollider側のセットアップです。

こちらはSuperDirtの起動後に、

SuperDirtMod.start(superDirt: ~dirt)

を実行するだけです。

テスト

d1
  $ s "superhammond/2"
  # n "[0,2,5]"
  # gain 0.6
  # room 0.7 # size 0.6

mod1
  $ segment 64
  $ pF "vibrato" (range 0 2 $ slow 2 saw)
  # pF "vrate" (range 2 8 $ slow 1.5 rand)

上を実行後、下を実行するとエフェクトが再生されている音にリアルタイムにかかっているのが分かると思います(試しにパラメータを変えて実行すると即座にエフェクトが変わるのがわかるはずです)

停止方法

superdirtとsuperdirtmodを停止したくなったら以下のコマンド実行

(
SuperDirtMod.stop;
Server.killAll;
~dirt.free;
)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?