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』展の展示作品の一つになりました。







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曲を音楽に使いました。


