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年版です。
デモ用に作ったビデオ。音源は「Piano One」です。
1915年から2014年までの100年間100曲版「Frammenti di Tempo (1915 - 2014)」も作成してみました。
2020年に開催した「K×I×Y 三人展 vol.1」のテーマを「時の断片」に決めてから、この展示会用に制作したのが映像作品が「SoundScape 2020 - 時の断片 -」(時の断片 III)です。
COBOLで500曲(100×5パターン)の SAKURA 用のソースコードを自動生成、MIDIにコンパイルして録音したものを、今では多くのモダンブラウザで動くHTML5オーディオで再生します。「SoundScape 2020 - 時の断片 -」はブラウザがあれば再生できる作品で、PCやタブレット・スマホなどでも鑑賞することができます。
キーボードで下記の操作ができます。
500曲の再生に便利な「時の断片 III」専用プレイヤーも用意しました。曲は100個並んだ再生ボタンで選択できますが、そのまま流しておけばランダムに曲を選んで再生を続けます。曲の開始に合わせて用意された背景画像(1000枚)がランダムに切り替わります。画面はブラウザのサイズに自動でフィットするように作ってありますのでスマホでも大丈夫です。画面のサイズを変更した場合は再読込してください。PCなら全画面(F11)モードで流しておけばアートな環境音楽として使えます。「時の断片 III」はブラウザがあれば再生できる作品で、PCやタブレット・スマホなどでも鑑賞することができます。
スライドショー版の「時の断片 IV」もあります。こちらも、PCやタブレット・スマホなどでも鑑賞することができます。