見出し画像

2024-03-12 時の断片

●LEAF 0814 時の断片

2015年に制作したアルバムの中に「Frammenti di Tempo(時の断片)」というのがある。各トラックのタイトルは西暦4桁。私が生まれた1946年からアルバムを制作した前年の2014年までの68年間の中から12トラックの名前にした年を選んである。この12の断片的な年は、いわば私にとってのコンピュータの歴史なのだ。

1946年 世界初の汎用電子計算機「ENIAC」誕生
1960年 CODASYL「COBOL-60」発表
1964年 プログラム言語「BASIC」誕生
1973年 Digital Research「CP/M」発売
1977年 コモドール「PET2001」 アップル「Apple II」発売
1982年 MIDI仕様が誕生 NEC「PC-9801」発売
1984年 SONY「SMC-777C」発売
1985年 マイクロソフト「MS-DOS 3.1」発売
1987年 東芝「J-3100」発売 ローランド「D-50」「MT-32」発売
1992年 マイクロソフト「Windows 3.1」発売
1995年 マイクロソフト「Windows95」発売 「Java」誕生
2014年 HTML5」仕様の確定

曲の生成に使ったプログラム言語は、大規模な金融システムの構築などに使われていた「COBOL」。仕事で作った多くのプログラムは「COBOL」で書いた。このアルバムは「COBOL」へのリスペクトでもある。録音用のMIDIデータと楽譜の生成には「LilyPond」を使った。

program-id. Frammenti.

data division.
working-storage section.
01 i   pic 9(6).
01 o   pic 9(6).
01 p   pic 9(6).
01 r   pic 9(6).
01 l   pic 9(6).
01 h   pic 9(6).
01 t   pic 9(2).
01 n1  pic 9(2).
01 n2  pic 9(2).
01 wn  pic 9(4).
01 pi  pic x(8).
01 pd  pic x(48) value "c   cis d   dis e   f   fis g   gis a   ais b   ".
01 filler redefines pd.
 02 pt occurs 12 pic x(4).
01 od  pic x(28) value ",,, ,,  ,       '   ''  ''' ".
01 filler redefines od.
 02 ot occurs 7 pic x(4). 

procedure division.
display 1 upon argument-number accept wn from argument-value
compute r = function random(wn)
compute l = 30 compute h = 90 perform randomn compute t = r
compute l = 55 compute h = 60 perform randomn compute n1 = r
compute l = 84 compute h = 91 perform randomn compute n2 = r 
display '\version "2.16.2"'
display '\paper{system-count=#10 top-margin=10\mm ragged-last-bottom = ##f}'
display '\header{title="Frammenti di tempo  ' wn '" subtitle=" " subsubtitle=" " composer="Akihiko YAMAZAWA" tagline=" "}'
display "\score{" display "<<" display "{\tempo 4 =" t
perform varying i from 1 by 1 until i > 300
 compute l = n1 compute h = n2 perform randomn
 compute o = r / 12 compute p = function rem(r 12) + 1
 move ' ' to pi string pt(p) delimited ' ' ot(o) delimited ' ' into pi
 display pi
end-perform
display '\bar "|."}' display ">>"
display '\layout{}' display '\midi{}' display '}'
exit program.

randomn.
compute r = function rem(function random * 123456789 (h - l + 1)) + l.

アルバムでは、単調なピアノの音がまるで時計の針のように時を刻む。


アルバムの試作のために作ったのが、私が社会人になって仕事を始めた1969年版です。

LylyPondソース生成用COBOLプログラム
COBOLで生成したLilyPondのソース
LilyPondで生成した楽譜

デモ用に作ったビデオ。音源は「Piano One」です。


1915年から2014年までの100年間100曲版「Frammenti di Tempo (1915 - 2014)」も作成してみました。

時の断片(100曲版)出版楽譜(PDF)


2020年に開催した「K×I×Y 三人展 vol.1」のテーマを「時の断片」に決めてから、この展示会用に制作したのが映像作品が「SoundScape 2020 - 時の断片 -」(時の断片 III)です。

COBOLで500曲(100×5パターン)の SAKURA 用のソースコードを自動生成、MIDIにコンパイルして録音したものを、今では多くのモダンブラウザで動くHTML5オーディオで再生します。「SoundScape 2020 - 時の断片 -」はブラウザがあれば再生できる作品で、PCやタブレット・スマホなどでも鑑賞することができます。

Click(Tap) 音楽再生(ランダム選曲)Dbl Click 音楽停止

キーボードで下記の操作ができます。

音源関係
[0] ピアノ バージョン(初期値)
[1] 1 Track バージョン
[2] 2 Track バージョン
[4] 4 Track バージョン
[8] Multi Track バージョン

オーディオプレイヤー関係
[z] 一時停止
[ ] 再生(スペースキー)
[+] 次の曲
[-] 前の曲
[r] 曲をランダムに選ぶ

デジタルカウンタ表示関係
[s] 表示(初期値)
[d] 消去

背景アート画像関係
[n] 非表示(初期値)
[c] カラー画像で表示
[m] モノクロ画像で表示

500曲の再生に便利な「時の断片 III」専用プレイヤーも用意しました。曲は100個並んだ再生ボタンで選択できますが、そのまま流しておけばランダムに曲を選んで再生を続けます。曲の開始に合わせて用意された背景画像(1000枚)がランダムに切り替わります。画面はブラウザのサイズに自動でフィットするように作ってありますのでスマホでも大丈夫です。画面のサイズを変更した場合は再読込してください。PCなら全画面(F11)モードで流しておけばアートな環境音楽として使えます。「時の断片 III」はブラウザがあれば再生できる作品で、PCやタブレット・スマホなどでも鑑賞することができます。

Click(Tap) 音楽再生 Dbl Click 音楽停止

スライドショー版の「時の断片 IV」もあります。こちらも、PCやタブレット・スマホなどでも鑑賞することができます。

Click:音楽再生 DoubleClick:音源変更








この記事が気に入ったらサポートをしてみませんか?