Creative Plus

遊んで・学んで・試してみてクリエイティブをプラスする「デジタルアート系ブログメディア」

cp_blog_respo_01

TidalCycles supercollider

TidalCyclesからSuperColliderで定義した自作のシンセサイザーを鳴らす方法

更新日:



ナカジ(@cp_nakajun)です。

先日、SuperColliderの強力シンセサイザーを利用する為に「sc3-plugins」のインストール方法を紹介しました。

そうすると次の興味はSuperColliderで「自作のシンセ」を作って鳴らすこと!!

その方法はというとSuperDirtのGithubリポジトリ内にチュートリアルがあります。

このファイルはSuperDirtがインストールされていれば

/Users/username/Library/Application Support/SuperCollider/downloaded-quarks/SuperDirt/synths/tutorial-synths.scd

/Users/username/Library/Application Support/SuperCollider/downloaded-quarks/SuperDirt/synths/default-synths.scd

にもあります。

で、実際の方法ですが...

田所淳さんのyappa.orgにきっちり解説されてます。
▶︎TidalCyclesとSuperColliderの連携 – 改訂版

でもそれじゃあわざわざ書いた意味もないので、僕もチュートリアルとyappa.orgを読んだ上で自分なりのまとめを残しておきます。

スポンサーリンク

TidalCyclesで使うSuperColliderのシンセを作る

まずは先の2つのチュートリアルの冒頭にある説明を訳すと

list of new SynthDefs, and in parentheses the special parameters they accept
("!" means it's not a standard Tidal param and needs to be defined)
most of these SynthDefs use sustain to scale the overall envelope, and many use accelerate to provide a pitch glide

新しいSynthDefsのリストを返します。
"!"は標準的なTidalパラメータではなく、定義する必要があることを意味します)
これらのSynthDefのほとんどはサステインを使用して全体のエンベロープをスケールし、多くはピッチの滑りを提供するために加速します

[tutorial-synths.scdより]

Add your own instruments here.
They can be used in Tidal just as samples (ignoring the sample number, so instead of "bd:2" write "inr")
supported parameters are e.g.
sustain, speed, endSpeed, begin, end, pan, accelerate, offset, cps
all instruments ought to use: out

ここに独自の楽器を追加してください。
タイダルだけでサンプルとして使用することができます(サンプル番号を無視するので、 "bd:2"の代わりに "inr"と書く)
サポートされているパラメータは、
サスティーン、スピード、エンドスピード、開始、終了、パン、加速、オフセット、cps
すべての楽器は使用すべきです:out

[default-synths.scdより]

という感じです。

見てみるとTidalCyclesからコントロールできるパラメーターは
サスティーン、スピード、エンドスピード、開始、終了、パン、加速、オフセット、cps」というあたりのようですね。

次に田所さんの解説を読むと

Tidal向けに定義されたSynthdefの特徴として、最終出力で、Out.ar(…) ではなく OffsetOut.ar(…) を使用していることに気付きます。
(中略...)
また、最終出力で、DirtPan.ar(…) を使用しています。

とあります。

default-synths.scdから1つのサンプルをみてみると

// modulated phase mod sines
(
SynthDef(\psin, { |out, sustain = 1, freq = 440, speed = 1, begin=0, end=1, pan, accelerate, offset, modfreq = 40|
	var env, sound, rate, phase, amp;
	amp = AmpCompA.kr(freq);
	env = EnvGen.ar(Env.perc(0.002, sustain, 1, -1), doneAction:2);
	phase = Line.ar(begin, end, sustain);
	rate = speed + Sweep.kr(1, accelerate);
	sound = SinOsc.ar(freq, SinOsc.ar(modfreq * (1..5), 0, 1 - phase * 10 * env / (1..5), 0.5pi)).sum;
	OffsetOut.ar(out,
		DirtPan.ar(sound, ~dirt.numChannels, pan, env)
	)
}).add
);

たしかに「OffsetOut.ar(…)」「DirtPan.ar(…) 」がありますね。

TidalCyclesからSuperColliderのシンセを鳴らす

では、どうやってTidalCyclesからSuperColliderのシンセを鳴らすのか?

ですが

まずはSuperColliderのシンセの定義方法です。

  1. 通常通りSCに記述し「command+enter」で定義
  2. 「default-synths.scd」か「tutorial-synths.scd」に記述

2のdefault-synths.scdには「Add your own instruments here.(ここに独自の楽器を追加してください。)」とそもそも記述があるので、そこに書き足せばOKです。

で、TidalCyclesから鳴らす(使う)には、SuperDirtを起動した状態で

d1 $ sound "シンセの名前"

です。

例えば、上記のシンセを鳴らすには

d1 $ sound "psin"

ですね。

あとはチュートリアルのシンセを改造しながら、もしくはSuperColliderを学習しながらお互いに頑張りましょう!!

cp_blog_001

cp_blog_001

サイト運営者

運営者:ナカジ
電子音楽家・クリエイティブコーダー・ブロガー

運営者プロフィール&当サイトの詳細

follow us in feedly

記事を検索



プログラミングで生み出す「創造表現」

-TidalCycles, supercollider
-, , ,

Copyright© Creative Plus , 2018 All Rights Reserved.