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

time stretching & pitchshifting

photo

Time Stretchingとは

電子音響音楽やミュージックコンクレート、サンプリングを主体としたヒップホップやテクノを制作する場合、複数のテンポを持つ音響素材を一つの作品内で同時に利用したい場面に出くわすことが多いと思います。

turn tableコンピュータの出現以前はターンテーブルの回転数を調節し複数の音源のテンポを合わせる手法がDJ達の間では主流でしたが、このアプローチを使うと音源のピッチ(音の絶対的な高さ)も変化してしまいます。テンポを上げればターンテーブルの回転数が上がるためピッチも高くなり、テンポを下げればピッチも下がってしまいました。
もちろんこの音響的な変化の特性を武器として積極的に利用する場面も少なくありませんが、例えばヴォーカルパートの素材で極端にピッチが上がったり下がったりしすぎた場合、その歌詞の内容やメッセージを聞き取ることが難しくなるという問題点がありました。そのような音響変化を克服する手段がTime Stretchingタイムストレッチです。

タイムストレッチとは音の高さを変化させずに、音源の再生スピードのみをコントロールする技術です。Granular synthesisを応用したもの、Phase vocoder、Time domain shift、Sinusoidal/Spectral Modeling、Pitch scalingなど、その技術を実現するためのアルゴリズムには様々なものがあります。

ableton Live

liveタイムストレッチングやピッチシフティングの使い勝手を飛躍的に向上させたのはabletonのLiveというソフトです。当初はVSTなどの各種プラグインにも対応しておらず、MIDI機能もなく、オーディオのストレッチに専念していたソフトウェアですが、現在はLogicやCubaseといったDAWにひけをとらないほどシーケンス機能も充実しています。

最初期のLiveはMax/MSPを用いて開発が行われていたこともあって、Maxとの親和性も高く2009年にはMax for Liveという外部拡張がリリースされたことでMaxとLiveは相互に内部データをやり取りできるようになっています。

タイムストレッチのアルゴリズム

photo今回紹介するアルゴリズムは非常にシンプルなもので、リサンプリングとピッチシフトの組み合せです。
このアルゴリズムは音質には問題がありますが複雑なパッチを書かずとも手軽に利用可能なため用途に応じては有効だと思います。簡単に説明すると、[buffer~]オブジェクトでサウンドファイルを指定しgroove~オブジェクトで任意の再生スピードを決定し再生すると同時に、再生スピードの数値を使って補間するためのピッチシフトの幅を決定します。

上でも説明したとおり、音源は通常再生スピードを早くするとピッチが上がり、遅くすると下がります。具体的にはスピードが2倍になるとピッチは1オクターブ上昇、スピードが半分になるとピッチは1オクターブ下がります。
今回のmax/mspのアルゴリズムでは、この特性を利用し、再生スピードに左右されて変化してしまったピッチを後からピッチシフトによって修正しています。

ピッチシフトは周波数領域での処理が行えるgizmo~オブジェクトを採用しました。ここのオーバラップやFFTサイズ、窓関数の値を調整することでかかり具合が変わるので、音源の音色によってカスタマイズしてください。max/mspではfftin~とfftout~オブジェクトの第二引数としてsquare、triangle、hanning、hamming、blackman、nofftの窓関数の名前を指定することが可能です。

タイムストレッチのデモ映像

Max/MSPパッチのダウンロード

timestretching.pat (for Max4.x)
timestretching.maxpat (for Max5.x)
fftgizmo.pat (pfft用サブパッチ)
max5Runtime(上記のプログラムの実行用フリーソフトウェア for Mac)
max5Runtime(上記のプログラムの実行用フリーソフトウェア for win)

Time Stretching & Pitchshifting参考文献






Max/Msp Algorithmic Computer Music Online Tutorial