#lang scribble/manual
@(require (for-label racket))

@title{10}
 Mark Polishook tutorial (JP)@section{categories}
  Tutorials>Mark_Polishook_tutorial>Japanese_version
@section{related}
  Tutorials/Mark_Polishook_tutorial/00_Introductory_tutorial

@section{section}
 減算合成とフィルターの使用

減算合成の基本的な考え方はコーヒーをいれることに似ています。つまり、最終的に必要ない成分をフィルターを通じて取り除くということです。

////////////////////////////////////////////////////////////////////////////////////////////////////

次の様に.dumpClassSubtreeメッセージをFilterクラスに送ることで、SuperCollider 3のほとんど全てのフィルターのリストが得られます。


@racketblock[
Filter.dumpClassSubtree;
::

]
@section{classtree}
 Filter

SuperColliderのヘルプ・システムでHelp/UGens/Filtersを調べることでもフィルターのヘルプ・ファイルをみることができます。ヘルプ・ファイルの全てにはそれぞれのフィルターがどのように動作するのかを示す素晴らしい例があります。

////////////////////////////////////////////////////////////////////////////////////////////////////

ヒント：次の様にObjectクラスに.dumpClassSubtreeメッセージを送ることで


@racketblock[
Object.dumpClassSubtree;
::

SuperColliderのそれぞれの単独のクラスのリストが表示されます。

////////////////////////////////////////////////////////////////////////////////////////////////////

LPF（ローパス・フィルター）を使って入力ソースから高い周波数成分を減算します。

]

@racketblock[
(
SynthDef("subtractive", {
	Out.ar(
		0,
		LPF.ar(
			Pulse.ar(440, 0.5, 0.1),	// フィルターをかけるソース
			Line.kr(8000, 660, 6)		// フィルターの周波数をLineでコントロールする
		)
	)
}).add;
)

Synth("subtractive")
::

////////////////////////////////////////////////////////////////////////////////////////////////////

RLFP（レゾナント・ローパス・フィルター）は、高い周波数成分を取り除き、フィルターの（カットオフ・ポイントの）周波数を強調するためによく使います。

]

@racketblock[
(
SynthDef("passLowFreqs2", {
	Out.ar(
		0,
		RLPF.ar(
			Saw.ar([220, 221] + LFNoise0.kr(1, 100, 200), 0.2),
			[LFNoise0.kr(4, 600, 2400), LFNoise0.kr(3, 600, 2400)],
			0.1
		)
	)
}).add;
)

Synth("passLowFreqs2")
::

////////////////////////////////////////////////////////////////////////////////////////////////////

Rezonzはとても、とても、とても強力なフィルターです。特定の周波数帯域を強調する時に使います。

カットオフが非常にシャープなためにノイズをピッチに変えてしまいます。

]

@racketblock[
(
SynthDef("noiseToPitch", { arg out = 0, mul = 1;
	Out.ar(
		out,
		Resonz.ar(
			WhiteNoise.ar(mul),
			LFNoise0.kr(4, 110, 660),
			[0.005, 0.005]
		)
	)
}).add;
)

(
// 左右のチャンネルをアクティブ化する
Synth("noiseToPitch", [\out, 0\mul, 1]);
Synth("noiseToPitch", [\out, 1, \mul, 1]);
)
::

////////////////////////////////////////////////////////////////////////////////////////////////////

go to link::Tutorials/Mark_Polishook_tutorial/Japanese_version/11::
]


