チュートリアル7

シンセシス:加算シンセシス

これまでのチュートリアルの実例で、基本波形を使用したサウンドを合成しました。次の数章では、サイン波を用いて、その他のよく知られている2、3のシンセシス技術について調べます。これらの技術の大部分は、コンピュータ使用以前のアナログシンセシスの方法によるものですが、それにもかかわらず有益で、実用的なものです。

音の結合

サイン波は、1つの周波数のエネルギーを持ちます。これに対し、複合音は異なるいくつか(または多く)の周波数のエネルギーで構成されるものと定義されます。そのため、複合音を合成するための分かりやすい1つの方法は、複数のサイン波オシレータを使用し、それらをすべて加算することです。

複合音を作るために、4つのサイン波を加算します

もちろん、複合音を合成するためにどんな波形を加算してもかまいません。しかし、このチュートリアル例ではサイン波にこだわろうと思います。サイン波の加算によって複合音を合成することは、いくぶん退屈な方法ですが、複合音の各コンポーネント(部分音)の振幅、周波数の完全なコントロールを可能にします。

チュートリアルパッチでは、各々が振幅、周波数、位相について独立してコントロールされる6つのコサイン波オシレータ(cycle‾オブジェクト)を加算しています。パッチをシンプルにするために、基音(基本周波数)との比によって各部分音の周波数を指定できるpartial‾というサブパッチを設計しました。

サブパッチpartial‾の内容

例えば、もし基本周波数の2倍の周波数を持つ部分音が必要ならば、引数として2.0をタイプする(または、第2インレットに値を送る)だけです。この方法では、いくつかのpartial‾オブジェクトが同じソースから基本周波数の値を(左のインレットで)受け取っている場合、たとえ基本周波数の値が変更されても、それらの周波数の比は同じままです。

もちろん、非常に面白いサウンドを作るためには、各々の部分音の振幅は独立な関係を保ちながら変化しなければなりません。したがって、メインパッチでは、各部分音の振幅は、固有のエンベロープジェネレータで制御します。

エンベロープジェネレータ:function

チュートリアル3で、line‾オブジェクトに1組の値のリストを送り出すことで振幅エンベロープをつくる方法を見ました。それは、目的の値と所要時間を与えることでした。この、線分の連結によって制御関数を作る方法は、多くの場面で役に立つもの(振幅エンベロープを生成することは、特に一般的な使用法)であり、チュートリアル6でも説明されています。

functionオブジェクトは、そういった線分関数を生成するために大きな手助けとなります。なぜなら、関数の領域、レンジ(x軸、y軸での数値)を定義するだけでなく、好きな形を(グラフィカルに)描くことができるからです。ブレークポイントが必要な所をマウスでクリックするだけで関数を描くことができます。Functionは、bangを受け取ると、2番目のアウトレットから目的の値−所要時間の対からなるリストを送り出します。このリストをline‾オブジェクトの入力として使用すると、描かれた形に対応したシグナルの変化を作り出します。

Functionはline‾で使用されるコントロールシグナルのためのグラフィカルな関数ジェネレータです

ところで、functionはMaxにおいて、シグナル処理以外の目的でも同様に役に立ちます。これは、補間するルックアップテーブルとして使用できるのです。インレットに数値を受け取ると、それをx軸の値とみなし、描かれた関数(ブレークポイントの間は必要に応じて補間します)の対応するy軸の値を左のアウトレットから出力します。

様々な複合音

6つの部分音だけでも、「リアルな」楽器のような音から、明らかに人工的な波形の結合による音まで、様々な音色を作ることができます。実際に試してみることができるように、いくつかの異なる音のセッティングがpresetオブジェクトにストア(保存)されています。それぞれの音の簡単な説明は下に述べられています。

* ezdac‾スピーカーアイコン上をクリックしてオーディオをオンにして下さい。ボタンをクリックして音を演奏してみて下さい。presetオブジェクトにストアされているものをクリックして、セッティングを変更して下さい。ボタンをクリックして新しい音を聞いてみて下さい。

プリセット1:この音は、本当は実際の楽器をエミュレートしているわけではありません。単に、調和する関係(倍音関係)にある部分音のセットで、各々異なった振幅エンベロープを持っています。様々な部分音が前面にでてくるために、音が伸びている間に音色がわずかに変わっていく様子に注意して下さい。(もし、実際の音色の変化に気付かないときは、音の持続時間を長くしてみて(例えば8000ミリ秒)、よりゆっくりと変化していく音を聞いてみて下さい。

プリセット2:この音は、まるで教会のオルガンのように聞こえます。部分音は基本波とすべてオクターブの関係にあり、アタックは適度に速いのですがパーカッシブというほどではありません。そして音の振幅は持続している間、ほとんど減衰しません。上の方の部分音が、下の方のものより速く消えていくのが、聞き取れるだけでなく視覚的にもわかります。

プリセット3:この音は、わずかにチューニングをずらされた倍音関係の部分音からできています。アタックはごく速く、振幅は最初のアタックの後、かなり速く減衰します。これは、音にパーカッシブな、あるいは撥弦音のような効果を与えます。

プリセット4:この音の部分音のための振幅エンベロープは、トランペットの低い音域の音の分析によって導かれたものです。もちろん、ここでは実際のトランペット音に現れる多くの部分音のうちの6つだけによるものです。

プリセット5:この音の部分音のための振幅エンベロープは、同じトランペット音の分析によるものです。しかしこの場合、奇数次の倍音だけが用いられています。これは、ほとんどクラリネットのような音を作り出します。その理由は、クラリネットの円筒状の孔が奇数次倍音を共鳴させるからです。また、この音の長い持続は全体のエンベロープを減衰させますが、これがなおさら典型的なクラリネットに似たアタックを与えています。

プリセット6:これは、完全に人工的な音です。最も低い部分音が最初に始まり、6番目の半音高い部分音がそれに続きます。最後には、第1と第6の部分音の間の周波数を持った残りの部分音が始まり、微分音によるクラスタをつくり出します。うなりの効果は、これらのわずかに周波数の異なる波の干渉によるものです。

プリセット7:このケースでは、部分音は長2度の間隔をあけられています。各部分音の振幅が増減することで、アルペジオのような全音音階のクラスタの複合効果を作り出しています。これが、単音というよりむしろ全音音階によるコードなのは明らかですが、段階的で重なり合っているアタックとディケイによって、音はうまく一緒に溶けあっています。

プリセット8:この音で、部分音は十分に強い高調波成分スペクトルを感じさせますが、まだ基本ピッチを感じ取ることができます。しかし、それは十分にずれたチューニングをされていて、調和的でない「ベル」のスペクトルに似ています。パーカッシブなアタック、素早いディケイ、そして音の持続の部分での部分音の独立した変化は、すべて金属製のベルを打った音の特徴です。

このようにいくつかのシグナルを一緒に加算するとき、その和はたびたびdac‾オブジェクトの振幅の極限を上回ってしまう可能性があるので、全体の振幅は*‾オブジェクトで適切に調整されなければならないことに注意して下さい。

複合音による実験

* この音をスタートとして、この加法的なシンセシスパッチで自分自身の音をデザインしてみたいと思うでしょう。基本周波数、部分音そして、プリセット音の持続期間を変更して、音を変えてみて下さい。また、ブレークポイントの上でドラッグして、エンベロープを変更することも可能です。

functionオブジェクトで関数を描く:

* functionオブジェクトの中でクリックして、新しいブレークポイントを作って下さい。クリックして、ドラッグすると、点のx、y座標はオブジェクトの上の部分に示され、直ちにブレークポイントを好きな場所へ移動させることができます。

* 同様に、すでにあるブレークポイントをクリック、ドラッグして移動させることができます。

* すでにあるポイントの上でシフト+クリックして、削除して下さい。

このチュートリアルでは説明されていませんが、functionでブレークポイントを作ったり、動かしたり、削除したりすることは、Maxメッセージを使用することによっても可能です。詳細はマニュアルのObjectsセクションのfunctionについての記述を参照して下さい。

メッセージsetdomainに数値が続くと、エンベロープの外形を変更することなくfunctionのX軸のスケール(目盛り)を変更します。「Duration」ナンバー・ボックスで数値を変更するとき、functionにはsetdomainメッセージが送信されています。

まとめ

加算シンセシスは、音を加算することによって新しい複雑な音を合成するプロセスです。純粋なサイン音は1つの周波数のエネルギーだけを持つので、加法的なシンセシスの基本となる構成要素ですが、もちろん他のどんなシグナルでも、加算することができます。足しあわされたシグナルは、DACでクリップされることのないように、1より小さい定数のシグナル値で振幅を調整する必要がある場合があります。

複合音の音色が、ピッチが変わっても同じままであるためには、各部分音は基本周波数との関係を維持しなければなりません。各部分音の周波数を基本周波数に対する比(何倍か)によって決定すると、基本周波数が変わった場合でも音のスペクトルを維持することができます。

複合音が面白い音色を持つためには、部分音の振幅はある程度の独立性をもって変化させられなければなりません。functionオブジェクトは、振幅エンベロープのようなコントロールの外形を描くことができます。そしてfunctionがbangを受信すると、その形をline‾オブジェクトに送り、line‾は対応するコントロールシグナルを生成します。

<-前の章 次の章->

目次へ