LoginSignup
2
1

More than 5 years have passed since last update.

[SuperDirt] SuperDirt の Nodeについて

Last updated at Posted at 2018-08-10

Orbit, GrobalEffect, Synth Group

SuperDirt を立ち上げると以下のようなNodeツリーが作られます。それぞれの役割がなんなのか気になって調べて見ました。

NODE TREE Group 0
  1 group
    3 group
    1005 dirt_delay2
    1004 dirt_reverb2
    1003 dirt_monitor2
    2 group
    1002 dirt_delay2
    1001 dirt_reverb2
    1000 dirt_monitor2

ツリーをダンプして見て見ます。

image
図にした。

処理はツリーのノードの枝の先頭から下へと処理が流れていきます(ノードID順ではない)
これをみるとSuperDirtの処理の流れが大体想像がつきそうです。

Orbit

group1 以下にgroup2, group3 の二つのグループが追加されています、これがそれぞれOrbitのグループになっています。
コンソールの表示では group3 が上に見えていますが、おそらく追加を先頭指定にしてあるのでしょう。手元の環境ではOrbit 0group2 Orbit 1group3に対応しているようでした。Tidal側でorbitを指定して見てどちらに追加されるか確かめて見るとわかります。

Global Effects

Orbitのグループにはそれぞれ3つのSynth Nodeが追加されます。
dirt_delay2 , dirt_reverb2, dirt_monitor2が追加されています。名前からそれぞれの役割が推測出来ますね。
末尾2というのはチャンネル数でSuperDirt初期化の時に挿入されます。
monitor というのは音量の調整とOutBusの管理を行うそうです。

Sample プレイバック の Node

さてそれではTidal側でコードを書いてシンセが鳴ったとしてどういうツリー構造になっているのか見てみます。

d1 $ s "bd"
NODE TREE Group 0
  1 group
    3 group 
      1005 dirt_delay2
      1004 dirt_reverb2
      1003 dirt_monitor2
      2 group
        1089 group
          -1344 dirt_sample_2_2
          -1352 dirt_gate2
      1002 dirt_delay2
      1001 dirt_reverb2
      1000 dirt_monitor2

図にすると、

image
Orbit 0 だけ抜き出すとこんな状態。

新しくOrbitのグループの下にdirt_sample_2_2dirt_gate2というSynth Nodeが追加された groupが追加されています。このグループはsynthGroup と言ってパターン内に登場するSynthごとに逐一生成されます。dirt_sampleというのがサンプルのプレイバックを行うSynth Nodeですね。dirt_gate というのはエンベロープや cutパターンの影響を管理するSynth Nodeです。

まず最初のgroup2の枝を辿って synthGroup のgroup、その枝の dirt_sample そして dirt_gate2
その後で三つの Global Effect という順に通っていきます。

モジュールを加える

エフェクトのモジュールを加えるとどうなるでしょうか。試しにvowelを追加して見ます。

d1 $ s "bd" |+| vowel "a"
NODE TREE Group 0
  1 group
    3 group
    1005 dirt_delay2
    1004 dirt_reverb2
    1003 dirt_monitor2
    2 group
      4679 group
        -58800 dirt_sample_2_2
        -58808 dirt_vowel2
        -58816 dirt_gate2
    1002 dirt_delay2
    1001 dirt_reverb2
    1000 dirt_monitor2

エフェクトモジュールvowelが追加された状態。

image
dirt_sample_2_2dirt_gate2の間に dirt_vowel2 というNodeが追加されました。

複数のストリームの場合

別のストリームで同時にシンセがなっている場合どのようになるでしょうか。

do
  d1 $ s "hh"
  d2 $ s "bd"
NODE TREE Group 0
  1 group
    3 group
    1005 dirt_delay2
    1004 dirt_reverb2
    1003 dirt_monitor2
    2 group
      1022 group
        -272 dirt_sample_2_2
        -280 dirt_gate2
      1023 group
        -288 dirt_sample_1_2
        -296 dirt_gate2
    1002 dirt_delay2
    1001 dirt_reverb2
    1000 dirt_monitor2

image

同じOrbit 0 で鳴らしている分には同じgroup2に追加されます。

stackの場合

d1 $ stack [
  (s "hh"),
  (s "bd")
]
NODE TREE Group 0
  1 group
    3 group
    1005 dirt_delay2
    1004 dirt_reverb2
    1003 dirt_monitor2
    2 group
      1355 group
        -5600 dirt_sample_2_2
        -5608 dirt_gate2
      1356 group
        -5616 dirt_sample_1_2
        -5624 dirt_gate2
    1002 dirt_delay2
    1001 dirt_reverb2
    1000 dirt_monitor2

こちらも同じように、パターンに orbit が指定されていない限り同じような追加のされ方です(図的には上のものと同じなので割愛)

まとめ

  • SuperDirt では Orbit ごとに Group が作られ, それぞれに 3つの Global Effects が追加されます。

  • パターンに登場するSynthごとに synthGroup が作られ Global Effects の手前に挿入されていきます。

  • エフェクトを加えると synthGroup の中の dirt_sample dirt_gate の間に挿入されていきます。

処理の順序を理解していると、適切なエフェクトのかけ方など音づくりにも役に立つかもしれません。

2
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
2
1