three.jsでカスタム図形を作る(1)

自分で座標を自由に作って図形を表示させる時のやり方。

先ずはシンプルな四角い板を作ってみる。

①verticesの作成

それぞれの頂点のx,y,z座標を配列に詰める。

  const positions = [
        5.0,  5.0, 0.0, //頂点0
        5.0, -5.0, 0.0, //頂点1
       -5.0, -5.0, 0.0, //頂点2
       -5.0,  5.0, 0.0  //頂点3
  ];
  const vertices = new Float32Array(positions);

②indicesの作成

次に、さっき指定した座標に面を貼っていく。面は三角形単位で貼る必要がある。この時、三角形を貼る順番によって法線の向きが変わる。反時計回りに貼った面は表側になり、その逆だと面が裏側になる。

表側の面を貼りたいので、頂点0⇒頂点3⇒頂点2、頂点2⇒頂点1⇒頂点0のように三角形の面を貼る順番をindices配列に入れていく。

  const order = [0,3,2,2,1,0];
  const indices = new Uint16Array(order);

③バッファーオブジェクトの作成

バッファーオブジェクトを作成し、さっき作った頂点座標とインデックス情報を与える。

  const geometry = new THREE.BufferGeometry();
  geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
  geometry.setIndex(new THREE.BufferAttribute(indices, 1));

positionにはvertices配列のデータが3つずつ入り、index番号に対応した順番で面が作られる。

④メッシュを作成してシーンに追加

あとは好きなマテリアルを選んでメッシュを作成してシーンに表示させることができる。

  const material = new THREE.MeshLambertMaterial({color: 0x6699FF});
  const plane = new THREE.Mesh( geometry, material );
  scene.add( plane );

SuperCollider: Wave TableシンセとGuiの連携(2)

今度は複数のウェーブテーブルを作って、波形を動かしてみる。

こんな感じ。

ひとつのウェーブテーブルを作成して音を鳴らすまでは前回の記事に。

複数スライダーのGuiを作成する

今回は波形を描く用のスライダーを3つ作成する。MulthSliderViewを3つ分作って変数mに格納し、そのあとcollectでm配列のアイテム(各スライダー)ごとに描画の設定をしている。

var slide=3, dot=100, width=350, height=80;
w = Window.new.front;
m = Array.fill(slide,{arg i;
	MultiSliderView(w, Rect(0, i*height, width, height))});
m.collect({arg item;
	item.value_(Array.fill(dot, {0.5}));
	item.elasticMode=1;
	item.thumbSize = 2;
	item.background_(Color(1,1,1,0.2));
});

zeroラインの描画

各スライダーの背景に0.0位置のラインをPenで描画

w.drawFunc = {
	slide.do({ arg i; 
            var px = (i*height)+(height/2);
            Pen.line(Point(0, px), Point(width,px));
            Pen.stroke;
	})
};

Bufferの確保

サイズ2048のBufferを3つぶん作成。allocConsecutiveを使うと連続したbufnumのBufferを作成できて便利。ここではbufnum:0から2までのBufferを作成している。

b = Buffer.allocConsecutive( slide, s, 2048, bufnum:0 );

ボタンが押された時に実行される関数を作成

前回はButtonクラスのアクションファンクションに直接書いていたが、見た目がごちゃっとするので今回は分けてみた。

やっている中身は単ウェーブテーブルの時と一緒だが、今回はbに格納されているBufferそれぞれに処理をしている。(引数のbufにはb内のアイテム(Buffer)が、iにはdoごとにイテレーションされるカウンターが入ってくる)

f = {
	b.do({ arg buf, i;
	  var cs, level, env;
          cs = ControlSpec(-1, 1, \lin, 0.00001, 0);
          level = cs.map(m[i].value); //mはスライダーの配列
          level.add(level.at(0));
          env = Env(level, 1, \sin).asSignal(1024).asWavetable;
          buf.loadCollection(env);
	})
}

関数fを実行するためのボタンを作成する。

p = Button(w, Rect(0, height*slide+20, 80, 30))
    .states_([["update"]])
    .action_({ f.value }); //関数fを実行する

バッファーのポジションを指定するためのスライダーを作る

今回は複数のバッファーに格納された複数ウェーブテーブルを混ぜて使う(使用するウェーブテーブルが入っているbufnumが0と1の場合、0.5を指定すれば0と1のウェーブテーブルがブレンドされたような波形になる⇒スムーズに波形から波形をトランスフォームさせることが可能)

今回はEZSliderクラスを使う。ControlSpecの部分でバッファーのポジションの範囲を設定している(今回はスライダーが3つなので、0~2の範囲)が、上限を2にすると何故か音が止まっちゃうので(原因はよくわからない。。)1.99までにしている。

また、アクションファンクションでSynthを格納するxにスライダーの値をセットしている。

g = EZSlider( w,                    // parent
              Rect(0,height*slide,width,20), // bounds
              " pos ",              // label
              ControlSpec(maxval:1.99),      // controlSpec
              { |ez| x.set(\pos, ez.value) } // action
)

UGenを作る

複数ウェーブテーブルを使用するにはVOscを使用する。引数posでEZSliderからバッファーのポジションを受け取る。

(
SynthDef(\wtSynth, { arg pos=0;
	var env, sn;
	sn = VOsc.ar(pos, mul:0.3);
	Out.ar(0, sn);
}).add;
)
x = Synth(\wtSynth);

全体のコード

https://github.com/rucochanman/SCLibrary/blob/master/Gui/waveTable

three.jsでシェーダーを使う基本

three.jsを使って、板ポリに画像を表示させる手順の覚書。

まず、以下はthree.jsでブラウザにまっさらの画面を表示させるために必要な最小限の構成。

画面を表示する

three.js

//ページの読み込みを待つ
window.addEventListener('load', init);

function init() {

  //画面サイズを指定
  const width = 800;
  const height = 400;

  //レンダラーを作成
  const renderer = new THREE.WebGLRenderer({
        canvas: document.querySelector('#myCanvas')
      });
  renderer.setClearColor(new THREE.Color('grey'));//背景色の設定
  document.body.appendChild( renderer.domElement );
  renderer.setSize(width, height);

  //シーンを作成
  const scene = new THREE.Scene();

  //カメラを作成
  const camera = new THREE.PerspectiveCamera(45, width / height);
  camera.position.set(0, 0, 100);
  camera.lookAt(new THREE.Vector3(0, 0, 0));

  //ライトを設置
  const envlight = new THREE.AmbientLight(0xffffff, 1);
  scene.add(envlight);

 //レンダリング開始
  render();

  function render(){
      requestAnimationFrame(render);
      renderer.render(scene, camera);
  }
}

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <!-- 必要ソース読み込み -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/105/three.min.js"></script>
    <script src="three.js"></script>
  </head>
  <body>
    <canvas id="myCanvas"></canvas>
  </body>
</html>

シェーダーを作成する

さらに、<BODY>内にシェーダーの記述を追加する。以下は、メッシュの全ピクセルを赤一色で塗るだけのシェーダー。

<div id="webgl"></div>
<!-- 頂点シェーダー -->
<script id="vert" type="x-shader/x-vertex">
    void main() {
        //positionはShaderMaterialで補完されるジオメトリの頂点情報
        //カメラ座標に変換したものを最終的にgl_Positionに代入
        vec4 pos = modelViewMatrix * vec4(position, 1.0);
        gl_Position = projectionMatrix * pos;
    }
</script>
<!-- フラグメントシェーダー -->
<script id="frag" type="x-shader/x-fragment">
    void main() {
        //全ピクセルを赤にする
        gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
    }
</script>

Thee.js側でプレーン(板)を追加し、マテリアルに↑で作ったシェーダーを指定すると、赤い板が出てくるはず。。

//(1)Planeジオメトリ(座標)を作成
const geometry = new THREE.PlaneGeometry( 15, 20, 1 );
//(2)マテリアル(材質)にShaderMaterialを指定する
//htmlからvertとfragのソースを読み込んで指定
const vert = document.getElementById('vert').textContent;
const frag = document.getElementById('frag').textContent;
const material = new THREE.ShaderMaterial({
    vertexShader: vert,
    fragmentShader: frag,
});
//(3)ジオメトリとマテリアルからメッシュを作成
const plane = new THREE.Mesh( geometry, material );
//(4)メッシュをシーンに追加
scene.add( plane );

シェーダーを使ってテクスチャを表示させる

表示させたいpng画像を配置(ここではimgフォルダ配下にfire.pngを配置)。テクスチャとして適用する。pngのアルファ値を反映させたい場合はtransparantをtrueにする。

//テクスチャローダーを作成し画像を読み込む
const loader = new THREE.TextureLoader();
const tex = loader.load('img/fire.png');

//uniform変数uTexとしてテクスチャをシェーダーに渡す
const material = new THREE.ShaderMaterial({
    uniforms: { uTex: { value: tex } }, //uTexとしてテクスチャ情報をセット
    transparent: true, //画像の透明度を有効に
    vertexShader: vert,
    fragmentShader: frag,
 });
<script id="vert" type="x-shader/x-vertex"> 
    varying vec2 vUv; //フラグメントシェーダーに頂点情報を渡す用の変数
    void main() {
        vUv = uv; //頂点情報を格納する
        vec4 pos = modelViewMatrix * vec4(position, 1.0);
        gl_Position = projectionMatrix * pos;
    }
</script>

<script id="frag" type="x-shader/x-fragment">
    varying vec2 vUv; //頂点シェーダから渡された変数
    uniform sampler2D uTex; //three.jsから渡されたテクスチャ情報
    void main() {
        vec4 color = texture2D( uTex, vUv ).rgba; //頂点ごとのテクスチャの色取得
        gl_FragColor = color;
    }
</script>

ここでブラウザのクロスプラットフォームを無効化しないと描画されないので注意。

SuperCollider: Wave TableシンセとGuiの連携

↓こういうのを作るのの覚書。Guiでお絵かきした波形を鳴らすやつ。

まず、supercolliderでのWaveTableシンセの作成方法。

(1)Wave Tableを格納するBufferを用意

b = Buffer.alloc(s, 2048);

ウェーブテーブルで使う波形データ(Signal)のサイズは1024ぐらいがちょうどいい解像度とのこと。実際このSignalデータをウェーブテーブルとして使用するにはWave Tableフォーマットに変換する必要があり、変換後はデータ量が2倍になるので、Bufferを確保するサイズは2048に指定。

(2)波形データを作成

  • Bufferクラスのsin3メソッドでデータを作成(加算合成が簡単)
  • Envをシグナルに変換(波形から作りたい場合)

多分他にも色々やり方はあるがこの2パターンをよく使う。

//Bufferを直接sinの加算合成で埋める場合
(
var freqs, amps, phases, len=10;
freqs = Array.series(len);
amps = Array.fill(len, {arg i; 1/(i+1)});
phases = {pi.rand}!len;
b.sine3(freqs, amps, phases);
)

//envelopeを使う場合
( 
var env, sig, wt;
env = Env([0,1,-1,0],[3,1,1],\sin); //この時durは実際の時間でなく比率
sig = env.asSignal(1024); //Signalに変換
wt = sig.asWavetable; //wavetableフォーマットに変換
b.loadCollection(wt); //Bufferに格納
)

(3)UGenのOSCで演奏する

波形を決め打ちじゃなくてランダムで生成しているような場合はLeakDCをかませていたほうが安全

{LeakDC.ar(Osc.ar(b, freq:440, mul:0.1))}.play

ここまでがWave Table基本。以下は、Guiと連携させてみたもの。

先ずスライダーとボタンのGuiを作成。

ボタンが押されたタイミングで、スライダーの値でenvelopeを作成⇒ウェーブテーブルで使える形式に変換⇒バッファーのデータを更新している

(
//sliderのguiを作る
var dot=100, width=350, height=100; //波形の点の数、sliderの縦横幅
w = Window.new;
m = MultiSliderView(w, Rect(0, 0, width, height));
m.value_(Array.fill(dot, {0.5})); //中央値で初期化
m.elasticMode=1; //sliderの自動サイズ調整
m.thumbSize = 2; //sliderの点のサイズ
m.background_(Color(1,1,1,0.2)); //背景に透明度を設定

//ゼロのラインを描く
w.drawFunc = {
	Pen.line(Point(0,height/2), Point(width,height/2));
	Pen.stroke;
};

//波形アップデート用ボタンを作る
b = Buffer.alloc(s, 2048);
p = Button(w, Rect(0, 120, 80, 30))
        .states_([["update"]])
        .action_({ //ボタンが押された時のアクション
	    var cs, level, env;
            cs = ControlSpec(-1, 1, \lin, 0.00001, 0);
            level = cs.map(m.value); //sliderから取得した値を-1~1で正規化
            level.add(level.at(0)); //波形の頭とおしりのギャップ埋める
            env = Env(level, 1, \sin).asSignal(1024).asWavetable;
            b.loadCollection(env);
        });
//guiの表示
w.front;
)

//演奏する
{Osc.ar(b, MouseX.kr(100,1000,1), mul:0.2)}.play;

SWに出会ってSWにお別れする話

TROSを観てきた。

ディズニーが言う「真実の愛」とは、「もののあはれ」の対義語である。
真実の愛による魔法のキスは、そんなわけで、バケモノを美しい男に変えたり、壊れたメモリの記憶を復活させたり、死んだ人間を生き返らせたりする。
この王国では、夏になっても雪だるまは溶けず、子供の頃のイマジナリーフレンドには、クローゼットを通じていつでも会える。
「キャラクター商品にお金を落とす限り、あなたはずっと子供のままでいていい」と、妖精が耳元で囁いてくれる。

わたしたちは回転木馬に乗っている。
ここでは誰もが王様で、目の前には次々と、自動的に、あらゆるお菓子が差し出される。
TROSがもしもキャンディの内のひとつだったら、甘いだの苦いだのと言えたことだろう。
だけどこれはキャンディではない。木馬のほうなのだ。
だからもはや、良いも悪いもない。あるのはただ「からくり」だけである。

この巨大な機械は一体、誰のために動いていたのだろう。単に止めどない創作意欲を昇華するため、はたまた、それは子供たちのため、特に、どこかの名もなき孤独な少女のため、または、世界から脇役に押しやられた人々のためだったのだろうか。
いまやそれは、臆病風に煽られて、慣性だけでくるくる回っている。

実際のところ、乗っているわたしたち自身が、ここで回り続けることに決めたのかもしれない。
そうだとしたら、わたしはもうそんなファンダムの一員でいたくない。黄色いロゴが印刷されたTシャツを着て、暗黙のうちに”仲間”と連携したくない。
いっそ雷をおとして、全て燃やしてしまうべきだろうか。
確かにわたしはSWを愛していた時があったし、夢を見て心躍った時があった。その記憶があれば充分ではないのか。
それに、きっと私が求めるSWは過去ではなく、常に未来にあるのだ。

こんな風に書いてはみたけれど、思い出してみると、わたしがSWを好きになったきっかけは、『シスの復讐』の冒頭のドッグファイトを見て「宇宙ってかっけー」と思ったから、というあまりにささやかな理由に過ぎなかった。

だからわたしが自分なりにSWを愛したように、きっと誰かもまたTROSを見て、誰かなりにそれを愛するのだとおもう。

The Horrorsを追っかけて初めて海外フェスに行った話

本投稿は、私が動かされたもの Advent Calendar 2019
https://adventar.org/calendars/4375
12月3日エントリー記事です。

イントロ

英語圏において、ツイッターやblog系サービスよりもインスタグラムがポピュラリティを獲得してしまったことの悪い点は、それで誰も文字を書かなくなってしまったということだ。というのが、深夜三時に、カオサン通り沿いの安宿のベッドでわたしが考えていたことだった。

そのベッドは自宅から約4600km離れていて、そんなに遠くで眠ったのはその時が初めてだった。

平たく言えば、わたしは人生初の海外旅行に来ていて、それはバンコクの音楽フェスに出演するザ・ホラーズというバンドを追っかけてきた為なのだ。

カオサン通りは眠らない繁華街で、午前三時を回っても窓の外では流しのミュージシャンたちがアメリカのポピュラーソング……「カントリーロード」から、マルーン5の「This Love」までなんでもござれ……を爆音で演奏し、人々は道路の真ん中に集まって絶え間なく合唱している。わたしはその健康的すぎる猥雑さを既に愛し始めていたが、そんな喧騒の中でさえ、インスタのフィードを手繰る指の動きはマシンのように合理的だった。

わたしの親指はほぼ無意識のうちに、しかしハイエナのごとくハッシュタグ#TheHorrorsをつけ回し、偶然、熱心な地元のファンが街中でバンドメンバーに遭遇したという投稿を発見する。そこには確かに、ホラーズの面々とラッキーなファンが笑顔で写っており、それは微笑ましく、見ているこちらも嬉しくなった。だがーーーー。

不自然だ。インスタには本文というべきものがない。しかし一体誰が、自分の推しに出会えたという一大イベントをシェアするのに、一千文字のキャプションをつけずにおられるというのだろう。内容は問題じゃない。「い、いま歩いてたら向こうからああああああああああああああ・・・」とか、「ぎぇええええええええええええええええごごごgklhn・・・」とか、なんにせよ一千文字は必要なはずである。

しかし、そうはさせないのがインスタグラムなのだ。インスタグラムというのは、オタクにとってはどこか奇妙なプラットフォームだ。まるで出口に売店のないテーマパークみたいな設計だ。インスタグラムは、”注ぎ口から酒を注いではいけない徳利“のような理不尽さで、たしかにそこに文章を書けるスペースはあるが、あくまでそのスペースにはハッシュタグを置くというのが作法だ、という。

Live Journalのデザインはユーザーにト書きを求め、Tumblrは注を、ツイッターはモノローグを欲した。だがインスタグラムはユーザーに光を与える代わりに、あらゆる幕間を削ぎ落とし、ポップソングを1分以下にし、感情から述語を奪った。

しかし、オタクの魂とは本来、インスタの設計思想が「余分」だと判断した影の部分にこそ、宿るようなものではなかったろうか。
いまや、スマホで撮影したライブ動画をシェアしてくれる人は多いが、「自分の目にその光景がどう映ったのか」をシェアすることに熱心は人は少ない。
「ファンサイトのBBS」に長文のライブレポートを書き込んでいたあの頃の匿名のオタクたちは、一体どこへ消えてしまったというのか?

そうしてインターネットの海を孤独にさまよっていたわたしは、ある日はと氏によるアドベントカレンダーの執筆募集記事を見つける。

そして天啓を受けるのだ。

「お前が書くんだよ」

ヴァース

さて、The Horrorsとは、イギリスのロックバンドであり、UKインディーロック界ではすでに”中堅的存在”と言われているが、KlaxonsとかThe Kooksあたりのデビューをリアルタイムに見ていた人たちにとっては、サマンサ・モートンが大変なことになっている「クリスカニンガムのビデオ(https://youtu.be/Qqo3yR109wE)」でおなじみかもしれない。

デビュー作で強烈なインパクトを残したのち、2ndアルバムの『プライマリーカラーズ』は名盤との評価も高く、先日ロイヤルアルバートホールでアルバムの全曲再現ライブが行われたぐらいには人気があるらしい。

アルバムごとに音楽性に幅があるので(youtube世代のバンドはみんなそうだろうが)ジャンルで総括するのは難しいが、ケネス・アンガーの映画を逆再生したような”おどろシス・サイケデリック”感と、歪んだギターやノイズをテクスチャーとして構築する”デザイン性の高い音像”という要素は通底しているように思う。

初期代表曲である”Mirror’s Image”には彼らの個性が集約されている。

よく世間では「ワンクリックで」というのをお手軽なことのように言うが、実際のところ「ワンクリックする」という行為には少なくない精神的コストがかかることについてわたしはよく理解している。
なので、ここで実際に動画を再生してみる人は全体の0.1%に満たないと予言するが、その0.1%のほうに入ったレアなあなたはすでに気づかれたはずである、ホラーズは基本的になんか全員作画が「快感フレーズ」である、という事実に。


Did The Horrors Love 2005?
https://www.loudandquiet.com/short/horrors-love-2005/

( †ようこそ○○人目の暗黒の堕天使・・・† 感のあるデビュー当時。全然名前負けしていない)

重要なのは、彼らは単に偶然に出会って友人同士になったというだけであり、なにもメン募掲示板で「vo以外募集!股下○○cm以上でスキニージーンズを履けるのが条件です!」とかやって集めたわけでも、エックスファクターに別々にエントリーしていた若者がサイモンコーウェルによって集められたわけでもない。THE HORRORSはなんの前兆もなくイギリスの南のほうから突然ぼうふらのようにわきだしたのだ。これは生命の奇跡である。

そこで、ナショナルジオグラフィックが取材する代わりにVICEがよちよち歩きを始めたばかりのホラーズにすぐに密着し、NMEに至ってはまだアートスクールの学生だったボーカルのファリスをいきなり表紙に抜擢するという強火のパトロン化してしまった。まだデビューアルバムも出す前の話である。

こういうことが起こった2006年当時というのは、雑誌の影響力が今より大きかったし、spotifyのリンクからすぐに音源をチェックする代わりに、バンドのヴィジュアルやイメージからどんな音を出すのか夢想して楽しむ自由のあった最後の時期だったのかもしれない。なんにせよ、彼らのファッションやヴィジュアル戦略にはメディアが放っておけない求心力があったのは確かだ。

もっともデビュー時のルックに関していえば、当人たちとしても、ファンション雑誌が仕掛けた”ネオ・ゴスの旗手”的なタームの方が早々に自分たちを追い越して行ってしまった実感はあるらしいが、まあ”イメージ戦略”とは常にそういう(本人たちとは関係がない)ものなのかもしれない。

Embed from Getty Images

(その反動か、「ネオゴスとか知りませんね・・・」な服装になった時期も)

かくいうわたしもフロントマンであるファリス(Faris Badwan)のカリスマ性にノックアウトされた人間のひとりである。
忘れもしない2年前の夏、レーベル会社Hostessが主催するオールナイトイベントで、わたしは偶然、初めて実物のホラーズのライブを見た。
その時わたしは、遠目のシルエットだけでも、ファリスがどこか別の星からきたんだということに気がついた。
公式の情報によれば、彼はパキスタン人の父とイギリス人の母のもとに生まれたという。しかし、それならば、もしも彼がわたしと同じ地球の生まれだというのならば、彼の髪の毛の一本一本は、蔦のように絡んだマイクケーブルは、レイザーライトやスモークでさえ、なぜ、この世のあらゆる物理法則を無視して、寸分の狂いもなく、まるで宇宙の始まりから、彼をロックボーカリストという芸術作品にするためだけに生まれてきたのだというふうに、彼に従い、振舞うというのだろう。

コーラス

フェス当日。
開場時刻まで余裕があったので、BTSパヤタイ駅近くにある人気のカフェ、「ファクトリーコーヒー」に寄ってみた。
カフェラテっぽい飲み物が、ワイングラスのような脚の長いグラスに入れられて、かっこいい木の板に乗って運ばれてくる。「映え」のレイヤーが厚い。
タイでもサードウェーブコーヒーが流行りらしく、どのカフェもオシャレで、原宿にあったら行列になるだろうなあ、とおもわせる店ばかりだった。

ゆっくりお茶をする余裕があったのは、フェスの開催時間が14時から0時過ぎまでとレイジーめの設定だったからだ。(ゆっくりしすぎて実際に開場に着いたのは17時頃になってしまったが…)
日本でもこうしてほしいところだが、深夜1時に幕張メッセに放り出されたりしてもそれはそれで困ってしまう。タイには安い足が多く、電車が止まっても困らないので成立することなんだろう。
事実、閉場後の会場入り口にはバイクタクシーの客引きが大挙していた。


https://www.mahorasop.com

Maho Rasopは今年で開催2回目の出来立てホヤホヤのフェスだったが、運営もまともだったと思うし、むしろかなり快適な環境ですらあった。特に、支払いが全て予めチャージしたリストバンドで完結するのはありがたかった。おかげで慣れないタイバーツをガチャガチャやる必要もない。

インターナショナルなフェスとはいっても、タイムテーブルの通り、出演アーティストの数自体はそれほど多くない。
会場はチルめなアーティストが出るサブステージ、メインステージ、屋内クラブという構成で、各ステージ間の移動は5分ほどで済む規模感。
メインステージの面積はそれなりにあったが、フード系の屋台は十店舗ないぐらいのスペース。飲み物は水か、バケツに入ったなにやら緑色のアルコールかの二択しかなかった気がするが、迷うことにエネルギーを使わせない選択肢のミニマルさが逆に良かった。

なによりこの規模感で、インディーロック系のバンドをどーんとフィーチャーしているのが個性的でかっこいい。
バンコクの主要なライブプロモーター/オーガナイザーであるHave You Heard?、Seen Scene Space、インディーミュージックシーンのコミュニティサイトであるFungjaiが主催しているのだが、地元バンドのショーケース的な側面はもちろん、活動再開したばかりのBombay Bicycle Clubをヘッドライナーに持ってくる話題性とか、韓国のSay Sue Meなど他アジアのインディーバンドへの嗅覚もきいている。
ちなみに去年のヘッドライナーは(個人的には『ひつじのショーン UFOフィーバー!』のサントラでカイリーミノーグとコラボしていることで話題沸騰の)英バンドThe Vaccinesなのだが、実はこのヴァクシーンズのギタリストはホラーズのキーボード担当であるトムの弟なので、この人たちは兄弟でマホラソップに出演していることになる。

チケット代は早割でも2500バーツほどで、これは日本円だと約9000円。タイの宿とか飲食店の安さから考えると結構強気な設定な気がするのだが、最初から半分観光客向けを想定しているようなところがあるのだろうか。実際、フェス会場にいた半数ぐらいは国外から来ているような雰囲気があった。
実は、会場内では日本語も結構聞こえてきた。ホラーズのステージの待機中には後ろのほうで「僕はファリス・オンリーです!」という会話をしている人がいたし(とても気になるセリフだ)、他にもツイッターでホラーズ目当てで渡航したという人を見かけた。こういう時、きさくに話しかけられれば良いのだが、「でも自分キモヲタだし・・」という自意識が邪魔してしまってよくない。

タイには現代でもセンスのいいサイケロックバンドが数多くいるそうなのだが、10年前ぐらいからじわじわと、世界的にタイ音楽をレアグルーヴ文脈で再評価する流れがあり(最終的にブームにしたのはDJマフト・サイ氏のパラダイス・バンコクというイベントの功績が大きいらしいが、日本のタワレコでも一時期タイ音楽コンピがよく特集されていた記憶がある)、そこから逆輸入的にルーツ音楽を再発見した若者も多いのではないかと勝手に予想している。

最近ではタイの若者には(EDM以外だと)ポストロックが人気なんだそうで、ここにホラーズが呼ばれるのも納得だ。
既に来年の開催も決まっていて、ブラインドチケットは2690バーツで売られているから、興味がある人は公式インスタをチェックしておくと良いと思う。

ところで前述の通り、わたしと連れはかなり遅めに会場に到着したのだが(ここでいきなり登場するが、今回は旅なれた友人に同行してもらっていた。彼女がいなければわたしは成田空港から一歩も出ることなく死亡していたはずなので、深く感謝)、それでもメインどころのアーティストはたっぷり見ることができた。

メインステージで演奏していたPhum Viphurit(https://www.youtube.com/watch?v=b7ffmtnuSGM)という人は国内でかなり人気があるらしく、完璧なシンガロングをしている人も多かった。
スゴテクのバックバンドを従え、コジャレたイキフンのコードを使いつつポップな歌ものという意味で、この人は「タイの星野源」的なポジションのアーティストであると私は理解した。
タイの星野源はタイの星野源らしくサービス精神旺盛で、バンドメンバーがボイパでビリーアイリッシュの”bad guy”を披露したり、ラストは演奏しながらひとりずつ楽器を交代していくという大技で場を沸かせていた。

Phumのステージが終わって気が付くと、空はすっかり真っ暗になっていたが、これは良いことだった。
なぜならホラーズの出番は目前に迫っており、夜は彼らの領分だからだ。

わたしたちはぬるぬると最前列に入り込むことに成功し、ストッパーにもたれながら開始時刻を待った。
転換中のSEでThe Verveのビタースウィートシンフォニーが流れただけでみんな笑顔になり、合唱が起こった。
彼らが登場する直前まで、「あまりきゃーきゃーいうと悪目立ちするだろうか」と考えていたが、そんなことはまったくの杞憂であった。
ふとライトが消え、Mirror’s ImageのイントロのSEが流れ出した時の歓声はーーこれは想像だが、周波数的には国立競技場に嵐が登場した時と変わらなかったはずだ。こんなに切羽詰まったファンが大勢いたなんて、やはり世界は想像よりずっと広い。

最初に見えたのは、ドラムのジョー(Joe Spurgeon)のスキンヘッドだった。彼はほんの少し前まで、賑やかなキャラクターと少年っぽいルックスにより「みんなの弟」的存在だったはずだが、一瞬の隙にゴリゴリのスキンヘッドゴスに進化を遂げていたポケモン的人物である。今やDJではハードテクノしかかけず、どでかい南京錠のネックレスをし、インスタにはモノクロの写真のみをアップし、脇腹にはサソリのタトゥーを入れ、OLD ENGLISH TEXT MTっぽいフォントの入った黒い服を着ている。こういう彼の徹底した硬質なセンスが最近のホラーズのインダストリアルな気風に影響を与えたのかもしれない。そんな一見コワモテ風のジョーだが、子煩悩な一児の父だったりもする。

次に姿を現したのはトム(Tom Furse)。トムはモジュラー使いで、猫派で、飄々としていて、ダッド・ジョークが好きで、いつもクールで、ワーカホリックで、そしてギターのジョシュを愛している。
彼はジョシュをbae, my main squeeze(恋人), bear boo, loveと言い、ツアー中の彼のカメラにはジョシュばかりが映っていて、インスタでは定期的に愛を発信している
またバンド外音楽活動に積極的で、remix制作、プロデュース業、ライブサポート、映画のサントラ担当、NTSラジオのDJなど音楽キュレーション的な活動まで幅広く活躍、最近ではCoachのプロモーション映像(水原希子が出演していた)の音楽も担当していたので驚いた。

ジョーがビートを刻みはじめると、トムのあのループする、不思議な浮遊感のあるシンセのフレーズが重なる。「Mirror’s Image」をライブの1曲目に持ってくることの利点は、観客を煽るようにじわじわとひとつずつパートが増えていくところだ。

つづいて現れたリース(Rhys Webb)があの印象的なベースラインを弾き始める。彼はこのベースリフを思いついたというだけでも一生楽に暮らす権利があるが、さらにロンドンのインディー/サイケデリックロックシーンを盛り上げたThe Cave Clubというイベント(まだ有名になる前のコナンモカシンやTOYも出演していた)のレジデントでもある。
リース、スラックス姿のリース、ベースを弾きながら壊れたオルゴールのようにくるくる回るリース。彼はとびきりスウィートで、近づくとフローラルの香りがする(らしい…サマソニでサイン会に参加したファンによると)。
影のリーダーというか、お兄さん的存在でもある。寡黙なメンバーの代わりにインタビューに答え、ツアー中はジョシュの髪を刈ってやり、そして実際、ジョーの義兄でもある。(ジョーの配偶者はリースの妹。つまりリースはジョーの子供の叔父さんでもある)

最後にジョシュ(Joshua Hayward)の時空が歪んだようなギターサウンドが加わると、会場は完全に別次元へトリップしてしまう。
ジョシュには独自のスタイルがあって、常に髪のどこかにブリーチの束を作り、真っ赤な口紅を塗り、エフェクターは回路設計から自分で手作りし、苦しんでいる鳥みたいな声で笑い、トレードマークはクマで、自らのギターヒーローにはThe Crampsのポイズン・アイヴィーを挙げる。床だろうが仕事中だろうが関係なく寝てしまい、ファリスをして「こんな変なやつはじめて」と言わしめる自由人。
ちなみにお気に入りの赤いリップはmacのruby wooらしく、ついにはリップの色に合わせた美しいシグネチャー・ギターを作ってしまう徹底ぶりだ。(買えます

そして、ステージにファリスはまだ登場していない。わたしたちはファリスをじらされているのだ。
イントロは延々と引き伸ばされ、さらにファリスをじらされる。限界を迎えた者たちが断末魔の叫びみたいな悲鳴を上げ始めた頃になって、満を持してわれらがボーカリストは、威風堂々というよりは突如としてぬっと、闇の中からはみ出したのだ。

女性向けのドレスでも、前衛的なデザインでも、すべてのファッションはファリスに着られた瞬間に飼いならされてしまう。
その日の彼は透け透けの赤いシャツに黒い革ジャンを羽織っていて、目の周りは暗く塗られていた。
近頃の彼は男女ユニットCat’s Eyesの片割れであるレイチェルと、実験的なアイメイクを模索していて、彼自身も「SUQQUのメイクブラシっていいよね」とコメントする程度にはコスメ上級者になっている。

(ちなみにこのメイクは”ロックの名盤ジャケットをコンセプトにしたアイメイクシリーズ”で、ピンク・フロイドの『狂気』がテーマ。コスメに疎いのでよくは知らないが、Pat Mcgrathのシャドーとかがお気に入りらしい)

この投稿をInstagramで見る

Faris Badwan & Rachel Zeffira(@catseyesworld)がシェアした投稿

鞭のようにマイクコードをふるいながら歌う彼は、闇のプリンス、またはSMのクイーン、または癇癪を起こしたカイロ・レンのようにふるまうが、ステージを降りれば物静かな文学青年に戻る。
彼は夜型で、左の手首にちいさな蝙蝠をたくさん飼っていて、アウトサイダーアートを愛し、ジョシュが晩飯に頭足類(イカ)を食べたことをずっと気にしている。
たぶん、友達思いで約束を守る人間でもある。メンバーみんなで一緒に見に行こうと約束していた『ブレードランナー2049』を”裏切り者”のジョシュが他の人と見に行ったことが発覚した時には、猛烈に抗議していたから。

さあ、これで役者が揃った。というより、やっとのことで、ホラーズが完全体を露わしたのだ。

ライブ中盤で、ファリスが「オーストラリアからやってきたガールズたちへ捧ぐ」と言って演奏したのは”Sea Within a Sea”だった。

(実は、ライブの数日前に公式インスタに「姉妹ではるばるオーストラリアからショーを観にいくよ!」とコメントしていたファンがおり、それに応えた形とおもわれる。優しいね。そして偶然にもそのガールズたちはわたしたちの右隣にいたので、その瞬間の爆発ぶりは凄かった)

<聞いた話じゃ/人は独りで/危険な岩場を灯りもなく/裸足で歩くものらしい/そして見つけた聖地にも/留まることすら叶わない/海へと行進する>

和訳歌詞の引用元の記事いわく、ファリスの詩は”(アルチュール・)ランボーみたい”である。

プライマリーカラーズというアルバムは、窓のない部屋で作られたらしい。聴き進むうちにどんどん世界から切り離されていくような感覚になるのは、そのせいだろうか。
そしてこの曲は、そんなアルバムの最後の曲である。
闇を伝達して残響のほうが先に届いてきているようなボーカルには実在の不安があり、憂鬱と期待がレンチキュラーレンズのように反射するシンセが波間に煌めいている。

Mirror’s Imageと並ぶ彼らの代表曲だが、実はシューゲイザーとかその手の音楽がまったく分からなかった私は最初のうち、なぜこの曲がここまで評価されているのかいまいちピンと来ていなかった。(タイラー・ザ・クリエイターがお気に入りと言っているのを知ったときもただ驚いた)
そこでわたしはちょっとした巡礼を開始することになる。といっても、ホラーズの記事やインタビューにレファレンスがあがったり、歴史的に関係がありそうなアーティストをひたすらyoutubeとかspotifyで聴きまくったというだけの話だが。元々好きだったアーティストであっても、ホラーズのピープルツリーという文脈からもう一度聴き直してみることにした。

CAN、ノイ!、マイブラ、バウハウス、The Fall、July、THE POP GROUP、Silver Apples、ニュー・オーダー、suicide・・・三十路を超えてからマイブラのLOVELESSを真剣に聴くことになるとおもわなかったが、真剣に聴いた結果、すごく良かった。
それで、驚いたことに、そうした一連の”ロック修行”から戻ってくると、わたしは”Sea Within a Sea”のサウンドにある奥行きと、想像力と、緻密さが突然「見える」ようになった。
これはロジカルな理解とは違う。昔Eテレのサイエンス系ドキュメンタリーで、人は訓練をすれば地球の磁気を感じることができるようになり、いわば”絶対方角感覚”を身に付けられるというようなことをやっていたが、まさにそんなような身体的な理解で、要は、このジャンルのロマンチズムの方角がわかるようになったという感じだ。
芸術に対する感性なんてのは意外にアテにならないもので、好き嫌いの以前に「見えてすらいない」ということもありえるのだ。

プライマリーカラーズの話が続いてしまったけれど、もちろん他のアルバムにも彼らのハイライトとなる曲は沢山ある。
”Still Life”はサイケ・ポップの文句なしの名曲で、<When you wake up, When you wake up, You will find me>のフレーズはライブではいつも大合唱になる。(いわばホラーズ版Creepだ)抽象的な詩だけれど、わたしはどこか生と死のはざまにいるような、SF的な手触りをかんじる。

太陽から遠ざかり続けていたホラーズが、陽の光を取り入れた時期の曲でもある。(そして今度は目が眩むほど近づきすぎたのかもしれない)

そして最近のホラーズはセットリストの最後には必ず”Something To Remember Me By”という曲をやるのだが、今回も例に漏れずだった。
これは最新アルバムの「V」に収録されている曲で、テクスチャー・ポルノ的でありながらポップでもあるというのがホラーズの最新モードなのだ。
「踊れるロック」が台頭する中でもかたくなに誰も”踊らせなかった”ホラーズだが、あっさりと、しかも圧倒的な祝祭感をもってそれを覆してしまった。


(MVの内容がいろんな意味で凄いので、わたしは最初自分が幻覚を見たのかとおもった。ジョシュよ。。)

(MVの内容がいろんな意味で凄いので、わたしは最初自分が幻覚を見たのかとおもった。この人たちは何をやらされているんですか?)

暗闇のダンスフロアが誰も差別しないことと、孤独を愛するゴスの風土は結構マッチするもので、それは意外にも優しくて多幸感があふれる世界だったりする。
ピンクと水色のライトが降り注ぐなか、この祝祭的な、4小節のループに閉じ込められたエレクトロニックで幻想のような空間も終わりを迎える・・・。

トリのKing Gizzard & The Lizard Wizardが飄々としつつなぜか牧歌的な変態ヘヴィメタル響かせる中、泡のように生まれては消えるモッシュピットを見ていたらわたしにも酒が必要だと思えてきた。どうせまともに飲めないのだが。

アウトロ

帰り道、わたしは落ち込んでいた。
タイ旅行もホラーズのステージも素晴らしかったが、素晴らしすぎたが故にわたしはリゾン・デートルを揺るがされていた。

私「いっそホラーズになりたいわ自分が。あれになりたい。でもホラーズといまの自分を相対化することで自分の卑小さが際立つことによってめちゃ落ち込んでしまうんだよな…」

友「わかる、もはや推しに「なりたい」ってなるよね」

私「あ、わかる?わかってくれる?」

友「うん、ていうかそれ限界オタクあるあるだから。落ち込むところまでセットでみんな通る道だから」

私「え?あるあるなの?みんななってんの?そっか、なんか安心した…とりあえず、帰京したらゴスをめざすことにする。話はそれからだ」

仲間がいてよかった。わたしはこの時グループセラピーの重要さを改めて理解し、プロパーなゴスを目指すため筋トレを開始することを心に決めた。なにをやるにも身体が資本だからだ。ちなみにまだ始めていない。

まとめに入るが、これから先、日本がお金がなくて呼べない海外アーティストを周辺アジア国のフェスが招聘する流れは確実に来る予感がするので、常にアンテナを張っておくようにしたいとおもう。

最後に、野生のインターネットオーガナイザーはとさん、アドベント企画をありがとうございます。他の方の記事も毎日楽しみにしています。

ホラーズ関連リンク集

ホラーズ公式インスタ…ここさえ追っていればほぼ全ての情報が把握できます。主にファリスが運営しているようです(文末に💄マークが付いているときはファリス)
トムのインスタ…ストーリーはほぼ日更新、最近のイケてる音楽とか、ガジェットとか、セルフィーとか、猫とか、ジョシュとかが出てきます。
アルバム『V』発売時のリリースパーティ動画…フランスのARTEが映像制作していて演出もかっこいい。カメラワークが完璧!最近のホラーズを知るならまずはこれという映像。
日本でのファリスとリースのインタビュー動画…貴重な日本語字幕つきインタビュー動画。リースの人当たりの良さが発揮されている。
アルバム『V』の全曲解説動画…プロデューサーのポールエプワースとメンバー全員で語っている動画。ジョーがこんなに喋っているのも貴重。
KEXPでの演奏動画…ここまで高画質の演奏動画自体がそもそも貴重。ジョシュのシグネチャーギターの美しさがよく見える。
アルバム『Skying』発売時の演奏動画…インタビューと演奏、ボウイ「サフラジェットシティ」のカバーなんかも披露していて面白い。