音響を微細な時間軸に分解し、スライス、スキップさせながら再生し、新たな音響を再合成するグリッチ。
応用例としてJitterを映像用途ではなくグリッチ音響処理のプログラムとして利用する方法を解説します。
グリッチとは
言葉の語源はドイツ語のglitschig(滑りやすい)から来ているように、ドイツ語圏から始まった音楽のスタイルです。
音楽におけるグリッチとは回路の接触不良や、コンピュータの誤動作などで出てくるノイズのような音を素材とした音楽のジャンルの総称です。通常は望まず発生してしまったノイズを音響的に活用した音楽がグリッチです。
古くは80年代のファミコンのエラーによる持続音のノイズを何度も聞いた人は少なくないと思います。
音楽におけるグリッチは90年代のOval (オヴァル)のCDの盤面をマジックペンで汚し、わざと音飛びを起すことで得られる音をを音楽的に使う手法が音楽の表現では特に有名です。
日本では1985年に刀根康尚が壊れたCDをTechno Eden というパフォーマンスで使用したのが最初と言われています。アナログの時代では1970年代にターンテーブリストであったChristian Marclayが壊れたレコードをあえて自身のセットの中に加えていました。この壊れた音源を逆手にとって音楽に昇華するというアプローチがグリッチの原点です。
Oval
Ovalは1991年にドイツで結成された電子音楽のグループです。オリジナルメンバーはMarkus Popp, Sebastian Oschatz, and Frank Metzgerの3人でしたが、次第にメンバーは離脱し、最終的にはMarkus Popp(マーカスポップ)のソロユニットとなっています。
Ovalはシンセサイザーの組み合わせによって音を構成していく音楽制作の手法を否定し、変わりにCDに故意にフェルトペンで落書きをし、再生時にCDプレイヤーが音跳びを起こす音を採取し音楽的に並べていくという作曲手法をとりました。
Ovalprocess Oval Thrill Jockey 2000-06-20 |
Max/MSPの音響処理を用いたアプローチ
コンピュータの音響処理ソフトを用いてグリッチの音を生成する場合、最もよく利用される方法があらかじめ録音された音のサンプルを細かくカットし、ランダムに再生させる方法です。ある意味、音跳びという現象そのものをアルゴリズム化したアプローチです。
以下は私が作成した、Max for Live上で動くグリッチエフェクトプラグインのデモ映像です。
このような音作りもMax/MSPでは簡単にできてしまいます。詳しいパッチの中身はM4L上で編集画面から確認できるので、ぜひ分析や改造にもご活用ください。
ableton M4L(Max for Live) Digital Glitch plugin
M4L Digital Glitcher (.amxd file)
Jitterの映像処理を応用したアプローチ
グリッチを発生させる方法として、Jitterを使うことも考えられます。これには少々回りくどいプロセスを踏みますが、音楽を映像化し、映像をJitterの映像処理オブジェクトで処理した後、再度映像を音楽化する流れになります。
Jitterを経由することによって、音響処理レベルでは不可能であった音響処理が可能になるため、映像作家でない音楽家にもJitterの積極利用をおすすめいたします。
音源を映像化する
音源の再生にはsfplay~オブジェクトを使用します。ここで再生されたオーディオシグナルはjit.catch~オブジェクトによって映像に変換されます。
jit.catch~オブジェクトは、オーディオシグナルデータをJitter マトリックス領域に移すこと音源を映像化します。
このオブジェクトは複数のシグナルの同期キャプチャをサポートしており、オブジェクトの第1のアーギュメントはシグナルインプットの数を設定し、それぞれ別のチャンネル用のインレットが作られます。
jit.catch~ オブジェクトは、@modeアトリビュートによって異なるモードで操作することが可能です。
このパッチの場合mode アトリビュートが 0 にセットされているため、jit.catch~ は前の bang を受け取ってから集められた全てのシグナルデータを出力します。オブジェクトが 最後に bang を受信してから512サンプルが受け取られた場合、1次元の、512のセルを持つ float32型のマトリックスが出力されます。
jit.catch~ の mode 0 と mode 1では、一度受信した全てのシグナル値を正確に出力しようとするのに対し、mode 2 と mode 3はそうではないという点に注意して下さい。
映像を音源化する
jit.release~オブジェクトはjit.catch~オブジェクトの反対の機能を持つオブジェクトです。
マトリックスデータがjit.release~オブジェクトに入力されると、マトリックスのプレーンごとに別々のシグナルを出力します。
jit.release~ オブジェクトは@latency アトリビュートを用いて、オーディオシグナルとして出力する前にどれくらいのマトリックスデータをバッファに蓄えておくかを設定することも可能です。これはバッファがアンダーフローすることを防ぐために必要なアトリビュートとなります。アンダーフローとは jit.release~ オブジェクトに対し、マトリクスを供給する側のオブジェクトが必要なデータを十分に供給できない状態を言います。
jit.catch~で取得したデータをマトリクスに並べる
jit.catch~オブジェクトは5msごとに1プレーンの新しいマトリクスデータを出力します。
これを縦に順番に配置しているのが左の写真のセクションです。5ms毎に出力されるマトリクスデータを縦に上から順番にならべています。
ここではdstdimstartとdstdimendメッセージとcounterオブジェクトを使い1500ms(300*5)毎にマトリクスデータの書き換えが発生するようなアルゴリズムを組んでいます。
その様子はjit.pwindowオブジェクトでも視覚的に確認することが可能です。
counterオブジェクトの第五インレットの最大値を変更することでjit.catch~から送られてくるマトリクスの集合を格納する最大数を変更することも可能になります。
Jitterでグリッチ
最後のセクションがグリッチの生成を行います。 ここで使用しているオブジェクトはdrunkオブジェクトです。
drunkオブジェクトはランダムウォーク、ブラウン運動をする乱数生成のためのオブジェクトです。第二インレットは乱数がとる最大値、第三インレットは運動する幅を設定することが可能です。
これを用いて、上のセクションで書き込んだマトリクスのどの一列を再度別のマトリクスに格納するかを決定します。drunkオブジェクトのランダムウォークによって再生される一列が決定されるため、入力されるオーディオシグナルの周辺のサンプルをランダムに再生することが可能になります。
しかし、これはオーディオ領域でのカットとは異なり、一度映像化しているため各ショットの繋がりはオーディオとは違った結果を返します。
グリッチのデモ映像
Max/MSPパッチのダウンロード
JitterGlitch.mxf.zip (for Max5.x)
max5Runtime(上記のMaxパッチの実行用フリーソフトウェア for Mac)
max5Runtime(上記のMaxパッチの実行用フリーソフトウェア for win)