見出し画像

16.Extensions(SC3の機能拡張)

サードパーティ製のクラスを追加できる方法があります。
もともと使いきれないくらいクラスが揃っているのですが、Extensionsファイルをダウンロードするとさらに増やすことができます。

例えばFilterカテゴリだけ見ても・・・

https://doc.sccode.org/Browse.html#UGens%3EFilters

このドキュメントの各クラス名の右側に「+CLASSES」と書かれているのがExtensions追加によって使うことができるようになるクラスです。
(ページ上部のinclude extensionsのチェックボックスを外すとSC3純正クラスのみの表示になります。)
ざーっと見渡すとMoogVCFとかありますね。興味あります。
あとで使ってみようと思います。


Extensionsの導入方法


公式のページからダウンロードします。
https://supercollider.github.io/downloads
↑このページの下の方、
SC3 Plugins
のところのリンクです。

https://supercollider.github.io/sc3-plugins/

zipをダウンロードして解凍したら、
SC3pluginsという “フォルダごと” ここ↓に置きます。
Macintosh HD/
ユーザ名/Library/Application Support/SuperCollider/Extensions

(※)
Windowsの場合はここ↓にSC3pluginsという “フォルダの中身” を置きます。
C:\Users<USERNAME>\AppData\Local\SuperCollider\Extensions


置いたら、SuperColliderを起動します。
それだけでOKです。

(※)
SC3pluginsフォルダを置いた直後のサーバ起動は、とても時間がかかる場合があります。根気よく待ちます。


SC3が起動したら、試しにMoogVCFと書いてみます。
(Mooまで書いたら予測で候補が出てきますね。)
MoogVCFをcommand+Dすると、ヘルプウィンドウにもちゃんと表示されます。

ヘルプウィンドウの右肩に「Extensions」マークが表示されているので、Extensions追加によるクラスであることがわかります。



Extensionsのクラスを使ってみる


まずは03.フィルターの回などで使ったRLPFを使ってみます。

(
SynthDef(\filters, {
	var sig, mod, line, flt;
	sig = Pulse.ar(48.midicps);
	line = XLine.kr(3000, 10, 8, doneAction:2);
	mod = LFPulse.ar(2, 0, 0.5, 1, 0.5);
	flt = RLPF.ar(sig, line*mod, 0.2);
		Out.ar(0, flt!2 * 0.3)}
).play;
)


次にMoogVCFです。

(
SynthDef(\filters, {
	var sig, mod, line, flt;
	sig = Pulse.ar(48.midicps);
	line = XLine.kr(3000, 10, 8, doneAction:2);
	mod = LFPulse.ar(2, 0, 0.5, 1, 0.5);
	flt = MoogVCF.ar(sig, line*mod, 0.8);
		Out.ar(0, flt!2 * 0.6)}
).play;
)

少し出力が小さいのでOut.arで0.6掛けて音量を上げました。
RLPFと比べるとキャラクターが違いますね。
また、RLPFのレゾナンスパラメータは1→0と数値が小さくなるほどレゾナンスが強くなるのに対して、MoogVCFは0→1と数値が大きくなるほどレゾナンスが強くなっていきます。(上のコードの0.8のところを変えて実行してみるとわかります。)

他にもMoogのシミュレーション系のものがいくつかあります。
BMoogを使ってみます。

(
SynthDef(\filters, {
	var sig, mod, line, flt;
	sig = Pulse.ar(48.midicps);
	line = XLine.kr(3000, 10, 8, doneAction:2);
	mod = LFPulse.ar(2, 0, 0.5, 1, 0.5);
	flt = BMoog.ar(sig, line*mod, 0.8);
		Out.ar(0, flt!2 * 0.3)}
).play;
)


TB303のシミュレーションというものもあります。

(
SynthDef(\filters, {
	var sig, mod, line, flt;
	sig = Pulse.ar(48.midicps);
	line = XLine.kr(3000, 10, 8, doneAction:2);
	mod = LFPulse.ar(2, 0, 0.5, 1, 0.5);
	flt = RLPFD.ar(sig, line*mod, 0.8, 1.0);
		Out.ar(0, flt!2 * 0.6)}
).play;
)

distというパラメータがあります。上のコードでは1.0にしてみました。
(hiカットオフ、hiレゾナンス、hiディストーションの組み合わせだとフィードバックを起こすので注意、とヘルプに書いてありました。)


ネットでコードをいろいろとあさっていると、普通にExtensionsを使ったコードを見つけます。
(フィルターをいくつか紹介しましたが、Generator(オシレーター)など他のカテゴリにもたくさんExtensionsクラスがあります。)
導入も簡単ですし、Extensionsを入れておくのをオススメします。


<目次へ>
https://note.com/sc3/n/nb08177c4c011

いいなと思ったら応援しよう!