Max/Msp/Jitter

Basic

Max
Object Oriented Programming
Shortcut
ToolBox
Mathematics
Physics
Probability
External Object
MIDI
DMX

Advanced

Psychoacoustics
mxj (Java Class Object)
Arduino
OSC

DSP/Synthesis

Recording & Playback
Time Stretching & Pitchshifting (ableton Live)
Wavetable Synthesis
White Noise (Joji Yuasa)
Sampleing & Processing (Autechre)
Scratching (Grandmaster Flash)
Glitch (Oval)
Theremin (Léon Theremin)
Comb Filter (Paul Lansky)
Auto Tune (Perfume)
Harsh Noise (Merzbow)
Vocal Chop (Prefuse73)
Blur (Akihiko Matsumoto)
Freeze (Jean-François Charles)
FM Synthesis (John Chowning)
Granular Synthesis (Iannis Xenakis)
Phase Vocoder (Charles Dodge)
Convolution (R.Luke Dubois)

Composition

Algorithmic Composition (David Cope)
Chaos Theory (Edward Lorenz)
Genarative music (Brian Eno)
Phasing (Steve Reich)
Markov Chain (Gregorian Chant)
Parallel Organum (Musica enchiriadis)
Shepard Tone (Jean-Claude Risset)
Spectral Technic (Tristan Murail)
12Tone Serial technic (Webern)
Data Mapping (Guido Da Arezzo)
Schenker Theory (Heinrich Schenker)
Tonal Harmony (Jean-Philippe Rameau)
Tintinnabuli (Arvo Pärt)
monome (Brian Crabtree and Kelli Cain)
Golden Mean (John Chowning)
Analog Sequencer (Robert Moog)
Pitch-class Set Theory (Allen Forte)
Irregular Rhythm(Igor Stravinsky)
Iso Rhythm (Philippe de Vitry)
Rhythmic Mode (Notre Dame School)
Graphic Score (Morton Feldman)
Tone Cluster (Ligeti)
Brown Noise (Leonin)
Fibonacci Series (Bartok)
Fractal (Charles Dodge)
Stochastic technic (Xenakis)

Video

Chromakey (Peter Campus)
Transition

Openmusic

Operation

Spectral Harmony (Tristan Murail)
New Complexity (Brian Ferneyhough)
12 Tone operation (Arnold Schoenberg)
Contour Inversion
Morphing

RTcmix

Basic

RTcmix
Unix Command
Unix Directory
Emacs Command

Synthesis/DSP

Additive Synthesis
Subtractive Synthesis
FM Synthesis
Delay
Flange
Comb Filter
AM Synthesis
Granular Synthesis
Phisical Modeling Synthesis
Waveshape Synthesis
Wavetable Synthesis
Stochastic Synthesis
PVOC

Additive Synthesis 〜加算合成〜

additive synthesis(加算合成)とは音色を作り出すための音響合成の技法の一種です。楽器の音色はパーシャルと倍音から構成されており、それらが様々なバランスでスペクトルの時間的な変化を起こすことにより形作られます。加算合成とはそのようなパーシャルの時間的変化をエミュレートした音響合成の方法です。加算合成は理論上ありとあらゆる音響を合成することが可能ですが、生楽器のようなダイナミックな音色を作り出すには膨大な計算量が必要となるため、20世紀の電子音楽の世界ではこの加算合成に変わるさまざまな音響合成が開発されました。音響合成や電子音を用いない現代音楽の分野でもircamのスペクトラルな書法を利用する作曲家を始め、加算合成という発想は20世紀後半の音楽に多大な影響を与えました。

市販されている加算合成方式のシンセサイザー

k5000

市販のシンセサイザーとしては1996年に発表されたKAWAIのK5000というシリーズが唯一加算合成方式でシンセシスを行う音源を搭載しています。

RTcmixにおける加算合成Wavetable

正弦波の波形

wavetable

RTcmixでは加算合成をウェブテーブルを利用してシミュレートします。max/mspの[cycle~]オブジェクトもこれと同じ方式で加算合成をシミュレートしますが、maxの場合はテーブルが512に固定されているため解像度はRTmixのそれよりも制限されています。これがしばしばmaxは音が悪いといわれている原因の一つです。RTcmixにおける加算合成インストゥルメントWavetableでは倍音構成をmakegen2に書き込むことで音色の原型波が決定されます。もちろんアンプリチュードエンベロープやピッチなども音色を決定する際に重要な影響を及ぼすパラメータです。

以下のコードは倍音を全く含まない正弦波(サインウェーブ)による音響合成です。

rtsetparams(44100, 2)
load("WAVETABLE")
makegen(1, 7, 2000, 0, 1000,1,  1000, 0)
makegen(2, 10, 1000, 1)
WAVETABLE(0, 8, 25000, 8.00, 0.5)
WAVETABLE(3, 11, 25000, 8.07, 0.3)
WAVETABLE(6, 14, 25000, 9.04, 0.8)
WAVETABLE(9, 17, 25000, 8.11, 0.6)
  

音源

加算合成で矩形波(スクエアウェーブ)を合成する

矩形波の波形

wavetable

次に倍音を加算し矩形波を生み出すコードを見てみましょう

rtsetparams(44100, 2)
load("WAVETABLE")
makegen(1, 7, 2000, 0, 1000,1,  1000, 0)
makegen(2, 10, 1000, 1,0,1/3,0,1/5,0,1/7,0,1/9,0,1/11)
WAVETABLE(0, 8, 25000, 8.00, 0.5)
WAVETABLE(3, 11, 25000, 8.07, 0.3)
WAVETABLE(6, 14, 25000, 9.04, 0.8)
WAVETABLE(9, 17, 25000, 8.11, 0.6)
  

矩形波はその名の通り四角い箱のような形をした波形です。クラリネットの波形はこれに近く、基音と奇数倍音だけが含まれ、第n倍音の音波の振幅は1/nという数学的特性を持っています。この規則を利用して加算合成によって矩形波を合成したのが上のコードです。makegen2の中身が正弦波を生成するコードとは異なっています。

音源

加算合成でノコギリ波を合成する

ノコギリ波の波形

wavetable

次に倍音を加算しノコギリ波を生み出すコードを見てみましょう

rtsetparams(44100, 2)
load("WAVETABLE")
makegen(1, 7, 2000, 0, 1000,1,  1000, 0)
makegen(2, 10, 1000, 1,0,1/3,0,1/5,0,1/7,0,1/9,0,1/11)
WAVETABLE(0, 8, 25000, 8.00, 0.5)
WAVETABLE(3, 11, 25000, 8.07, 0.3)
WAVETABLE(6, 14, 25000, 9.04, 0.8)
WAVETABLE(9, 17, 25000, 8.11, 0.6)
  

ノコギリ波は波形が鋸の歯のようになっているので、この名がついています。ヴァイオリンや金管楽器の波形はこれに近く、鋸歯状波には基音とすべての倍音を含んだ音です。
高い倍音ほど振幅(音量)が漸減し、第n倍音の振幅は基音の振幅の1/nという数学的な特徴を持っています。

音源

応用

以上の合成波形はあまり加算合成の利点を生かした音色とは言えません。更にダイナミックに倍音構成が変化する音響を考えてみましょう

rtsetparams(44100, 2)
load("WAVETABLE")
makegen(1, 7, 2000, 0, 70,1,  930, 0)
makegen(2, 10, 1000, 1)
srand()

for (start = 0; start < 32; start = start + 0.11) {
freq = random() * 500 + 35
 for (i = 0; i < 3; i = i+1) {
  WAVETABLE(start, 0.4, 7000, freq, 0)
  WAVETABLE(start+random()*0.1, 0.4, 7000, freq+(random()*7), 1)
  if (start > 5.5) {
   makegen(2, 10, 1000, 1, random(),random(),random(),random(),random(),random(),random(),random(),
   random(),random(),random())
freq = freq + 125
   }
  
  if (start > 10.5) {
   makegen(2, 10, 1000, 1, random(), random(),0,0,0,0,0,0,0,0,random())
  freq = freq + 100
   }

  if (start > 15.5) {
   makegen(2, 10, 1000, 1, random(), random(),random(),0.2,0.110,0.1,0,0.3,0.1)
  freq = random() * 50 + 20
   }
  if (start > 20.5) {
   makegen(2, 10, 1000, 1, random(), random(),random(),random(),random(),random(),random(),random(),random())
freq = freq +1325
   }
  if (start > 25.5) {
   makegen(2, 10, 1000, 1, random(), random(),random(),random(),random(),random(),
   random(),random(),random(),random(),random())
freq = random()*1000 +525
   }

  }
}
   

上記のコードではループが回るごとに倍音構成がランダムに変化するアルゴリズムになっています。生楽器よりも複雑な音響を生み出すことが可能なことが推測できるでしょう。コンピュータの音響合成は生楽器の代用というネガティブな使用法だけではなく、生楽器にはなし得ない音響を生み出すというポジティブな考え方で自身の作品に利用していくことが、これからの時代の作曲家にはますます求められていくでしょう。人間が得意な部分は人間、コンピュータが得意な部分はコンピュータに処理を分散させ、人間とコンピュータ計算の共同作業で一つの音楽を作り出すことは今では当たり前になりましたが、一昔前では考えられなかったことです。


Youtube

RTcmix,音響プログラミング参考文献






Max/Msp Algorithmic Computer Music Online Tutorial