1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
title:: 10
summary:: Mark Polishook tutorial (JP)
categories:: Tutorials>Mark_Polishook_tutorial>Japanese_version
related:: Tutorials/Mark_Polishook_tutorial/00_Introductory_tutorial
section::減算合成とフィルターの使用
減算合成の基本的な考え方はコーヒーをいれることに似ています。つまり、最終的に必要ない成分をフィルターを通じて取り除くということです。
////////////////////////////////////////////////////////////////////////////////////////////////////
次の様に.dumpClassSubtreeメッセージをFilterクラスに送ることで、SuperCollider 3のほとんど全てのフィルターのリストが得られます。
code::
Filter.dumpClassSubtree;
::
classtree::Filter
SuperColliderのヘルプ・システムでHelp/UGens/Filtersを調べることでもフィルターのヘルプ・ファイルをみることができます。ヘルプ・ファイルの全てにはそれぞれのフィルターがどのように動作するのかを示す素晴らしい例があります。
////////////////////////////////////////////////////////////////////////////////////////////////////
ヒント:次の様にObjectクラスに.dumpClassSubtreeメッセージを送ることで
code::
Object.dumpClassSubtree;
::
SuperColliderのそれぞれの単独のクラスのリストが表示されます。
////////////////////////////////////////////////////////////////////////////////////////////////////
LPF(ローパス・フィルター)を使って入力ソースから高い周波数成分を減算します。
code::
(
SynthDef("subtractive", {
Out.ar(
0,
LPF.ar(
Pulse.ar(440, 0.5, 0.1), // フィルターをかけるソース
Line.kr(8000, 660, 6) // フィルターの周波数をLineでコントロールする
)
)
}).add;
)
Synth("subtractive")
::
////////////////////////////////////////////////////////////////////////////////////////////////////
RLFP(レゾナント・ローパス・フィルター)は、高い周波数成分を取り除き、フィルターの(カットオフ・ポイントの)周波数を強調するためによく使います。
code::
(
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はとても、とても、とても強力なフィルターです。特定の周波数帯域を強調する時に使います。
カットオフが非常にシャープなためにノイズをピッチに変えてしまいます。
code::
(
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::
|