見出し画像

Attractor II

2枚の翼」というカオスを描くCGがあります。鳥が羽ばたいているように見える不思議な図形です。

2012年に「GNUPLOT」のテストをしていた時に、勉強のために「2枚の翼」を作って試してみました。「C」でGUNPLOTのプロットデータを生成するプログラムを書き「GNUPLOT」で描画します。

/* 2枚の翼を描く*/
#include<stdio.h>
#include<math.h>

int main(void){
  double x0=0.1, y0=0, x1, y1 ;//変数
  double a, b, R ;//パラメータ
  int i ;
  FILE *fp;
  if ((fp = fopen("temp.txt", "w")) == NULL) {
    printf("file open error!!\n");
  }else{
    printf("a > ");-1.
    scanf("%lf",&a);
    printf("b > ");
    scanf("%lf",&b);
    printf("R > ");
    scanf("%lf",&R);

    for(i=0;i<50000;i++){
      x1=y0+a*x0+5.0*x0*x0/(1+x0*x0)+1.0-0.2*exp(-y0*y0);
      y1=-b*x0+R*pow(-1.0,i);
      if(i%2==0){
        fprintf(fp,"%lf %lf\n",x1+y1,x1-y1);
      }
      x0=x1;
      y0=y1;
    }
  }
  fclose(fp);
  return 0;
} 

まずは「C」のコンパイルをします。
gcc -o chaos2f chaos2f.c
この「chaos2f.exe」を実行してデータを作ります。
パラメータの値を次のように指定。
a=0.02, b=0.98, R=5.0
プロットしてみましょう。
gnuplot -p -e "plot 'temp.txt' ps 0"

2015年に制作したCBOLで生成する音楽シリーズのアルバムがあります。その中の1枚「Attoractor II」は、「2枚の翼」を描くためのデータをCOBOLで制作し、このデータ(x,y の値)を音にマッピングさせて演奏させたアルバムです。

第1曲 壱之巻(大型竪琴) の演奏楽器はオーケストラルハープ
第2曲 弐之巻(鳴りもの) の演奏楽器は日本のパーカッション

アルバムのカバーにも載っているCOBOLのソースプログラムがこれ。

program-id. chaos03.

data division.
working-storage section.
01 i pic 9(6).
01 a pic s9v999999.
01 b pic s9v999999.
01 x0 comp-2.
01 x1 comp-2.
01 y0 comp-2.
01 y1 comp-2.
01 ad pic x(20).

procedure division.
display 'Chaos03 2mai no tsubasa' upon syserr
display 'a=' upon syserr no advancing accept ad compute a = function numval(ad)
display 'b=' upon syserr no advancing accept ad compute b = function numval(ad)
compute x0 = 0.1 compute y0 = 0
perform varying i from 1 by 1 until i > 50000
  compute x1 = y0 + a * x0 + (5 * x0 ** 2) / (1 + x0 ** 2) + 1 - 0.2 * function exp(-y0 ** 2)
  compute y1 = -b * x0 + 5 * (-1 ** i)
  display x1 ' ' y1
  compute x0 = x1 compute y0 = y1
end-perform
exit program.

プログラムは、この計算を50,000回ループさせて、50,000個のプロットデータ(x,yの値)を作成します。

アルバムの画像は「GNUPLOT」で作成しました。

gnuplot -p -e "set title 'a=0.02 b=0.98'; plot 'tmp' ps 0 lt rgb 'red'"

アルバムを制作した2015年に、このプログラムを「Processing」に移植して映像作品にしたものがあります。50,000個の点をプロットしながら、プロットしたx,y座標に対応(マッピング)した音をシンセ(VSTi)がリアルタイムに演奏します。


この作品は『実験音楽工房2015』展の展示作品の一つになりました。

東京会場(Galleru 蔵)
東京会場(Galleru 蔵)
山形会場(山形まなび館)
山形会場(山形まなび館)


2017年に開催した実験音楽工房展では、ドリトルで制作した作品を展示しましたが、この時に「2枚羽のカオス」のドリトル版を作ってみました。

// 2枚羽根のカオス
dispmsg=ラベル! 作る -150 300 位置 400 50 大きさ (黒) 文字色 (16) 文字サイズ.
point=[|x y color size| ラベル! 作る (size)(size) 大きさ (x)(y) 位置 (color) 色 書く].
map=[|v s1 e1 s2 e2| s2+(e2-s2)*((v-s1)/(e1-s1))].

x0=0.1. y0=0. a=0.02. b=0.98. R=5.0. count=20000.
n=0.[n=n+1.
 x1=y0+a*x0+5.0*x0*x0/(1+x0*x0)+1.0-0.2*exp(-1.0*y0*y0).
 y1=-1.0*b*x0+R*(-1!(n) pow).
 dispmsg! ("count="+(n)+" x="+(x1)+" y="+(y1)) 書く.
 x=! (x1)(-10)(15)(-250)(250) map.
 y=! (y1)(-17)(8)(-250)(250) map.
 ! (x)(y)(赤)(1) point.
 x0=x1. y0=y1.
]! (count) 繰り返す. 
編集画面
実行画面


2020年には、展示用の映像作品の制作にProcessingのJavaScript版「p5」と「p5sound」を使えるようになりました。

2020年に開催した「K×I×Y 三人展 vol.1 - 時の断片 -」のインスタレーション・アート映像などの制作にも「p5」と「p5sound」を使っています。

2020年に、2015年にProcessingで制作した「Attactor II」から移植して制作したのがオンライン版「Attactor II」です。この作品でも「p5」と「p5sound」を使っています。

演奏しているのは、p5.sound libraryにあるモノシンセ「p5.MonoSynth」です。

// Attractor2+Sound #1

let part_x;
let part_y;
let reverb;

var x0=0.1, y0=0, x1, y1, T, a=0.02, b=0.98;
//scl=[60,62,64,65,67,69,71,72,74,76,77,79]; //Major
//scl=[60,62,63,65,66,69,71,72,74,75,77,78];  //Arabian
scl=[60,61,63,63,67,68,68,72,73,75,75,79]; //Balinese
//scl=[60,61,65,65,67,70,70,72,73,77,77,79]; //Japanese
function setup(){
  createCanvas(1280,720);
  background(0);
	part_x = new p5.MonoSynth();
	part_y = new p5.MonoSynth();
	reverb = new p5.Reverb();
	reverb.process(part_x, 4, 2);
	reverb.process(part_y, 4, 2);
	userStartAudio();
  i=0;
  frameRate(8);
}

function draw(){
  if (i>=10000){
    noLoop();
  }
  fill(0); noStroke(); rect(0,0,240,40);
  fill(200); textSize(24); text(i,32,32);
  x1=y0+a*x0+5.0*x0*x0/(1+x0*x0)+1.0-0.2*exp(-y0*y0); 
  y1=-b*x0+5.0*pow(-1.0,i);
  if (i%2==1){stroke('rgba(160,216,239,0.8)');} else {stroke('rgba(44,169,225,0.8)');}
  strokeWeight(4);
  point(map(x1,-15,15,0,width),map(y1,-20,10,height,0));

  not1=scl[int(map(x1,-15,15,0,scl.length))];
  not2=scl[int(map(y1,-20,10,0,scl.length))];
  strokeWeight(1);
  not1=noteM(not1+12); not2=noteM(not2);

  text(not1,120,32); text(not2,180,32);

  part_x.play(not1, 0.8, 0.0, 0.05);
  part_y.play(not2, 0.8, 0,2, 0.05);
	
  x0=x1; y0=y1; i++;
}

function noteM(n){     note=["A","A#","B","C","C#","D","D#","E","F","F#","G","G#"];
  octv=["0","1","2","3","4","5","6","7","8"];
  return note[(n+3)%12]+octv[int((n+3)/12)-1];
} 

画像をクリックすると実行できます。


こちらは2023年に制作した、背景画像に鈴木順子さんの作品を使ったコラボレーション版。画像をクリックすると実行できます。パソコンの場合は全画面モード[F11]にして、再読み込みをすると、フルスクリーンで作品を楽しめます。


2023年に開催された「TACTおとアート 2023」MUSIC・PERFORMANCE(おとを観る)では、「音楽と映像の実験部屋」で様々なパフォーマンスが行われました。午前中のプログラム「オープニング(テクノ囃子)」では、アルバム「Attractor II」の第2曲を音楽に使いました。

音楽と映像の実験部屋がオープンすると、子供たちが続々と遊びに来てくれました。親子で楽しむ影絵パフォーマンスに、制作の疲れも吹き飛びました。ハッピー❣

#TACTおとアート 2023 MUSIC・PERFORMANCE(おとを観る) 山澤昭彦とその界隈 観音Ⅲ(音楽と映像の実験部屋) https://ykaiwai.peatix.com/ 10:00-10:30...

Posted by 山澤 昭彦 on Monday, October 16, 2023

音楽と映像の実験部屋がオープンすると、テクノ囃子に誘われて続々と子供達が遊びに来てくれました。家族で楽しむ影絵パフォーマンスに制作の疲れも吹き飛びました。皆さんありがとう❣ #TACTおとアート 2023...

Posted by 山澤 昭彦 on Monday, October 16, 2023

クロージング(眠れぬ夜に)にでは、アルバム「Attractor II」の第1曲を音楽に使いました。

いいなと思ったら応援しよう!