Palindrome ドリトルソースコード
初版 2019/08/01 21:01
改訂 2019/08/15 01:10
オンライン版ドリトル
オンライン版ドリトルでもJavaの内蔵音源を使って演奏できます。
ライブラリー部分のソースを一緒に組み込んであります。
// オンライン版ドリトル用 // 指定範囲の乱数を作る RandomNumber=[|r_min r_max| random(r_max - r_min) + r_min. ]. // カンマ区切りのデータからランダムに選ぶ RandomSelect=[|slc; ary| ary=slc ! "," 分割. ary! (random(ary! 要素数?)) 読む. ]. // MIDIノート番号からドリトルの音名を作る NoteName=[|番号; 音階 前 後 octv| 音階="ド:ド#:レ:レ#:ミ:ファ:ファ#:ソ:ソ#:ラ:ラ#:シ" ! ":" 分割. 前="_____:____:___:__:_::^:^^:^^^:^^^^:^^^^^]"! ":" 分割. 後="^^^^^:^^^^:^^^:^^:^::_:__:___:____:_____]"! ":" 分割. octv=floor(番号/12)+1. (前 ! (octv) 読む) + (音階 ! (番号%12+1) 読む) + (後 ! (octv) 読む). ]. // ドリトルの音名からMIDIノート番号を作る NoteNumber=[|音名; mns pls onk scl bis k| mns=0. pls=0. onk=0. scl="c,d,e,f,g,a,b,ド,レ,ミ,ファ,ソ,ラ,シ,#,%,#,♭" ! "," 分割. bis="0,2,4,5,7,9,11,0,2,4,5,7,9,11,1,-1,1,-1" ! "," 分割. k=1.[ [音名! (scl!(k)読む)含む?]! なら [onk=onk+(bis!(k)読む)]実行. k=k+1. ] ! (scl! 要素数?) 繰り返す. k=1.[ [(音名! (k)(1) 部分)! "↓" 含む?]! なら [mns=mns+1]実行. [(音名! (k)(1) 部分)! "↑" 含む?]! なら [pls=pls+1]実行. k=k+1. ] !(音名! 長さ?)繰り返す. 60 + onk + (pls*12) - (mns*12). ]. compose2=[|小節数 拍子 下限 上限 使う音符 音符配列 長さ配列; m tt tm to w_base| w_base=拍子! "/" 分割. m=小節数 * (w_base! (1) 読む) * (4/(w_base! (2) 読む)). i=1. tt=0. [tt < m]!の間 [ note_n=(!(!(!(下限)NoteNumber)(!(上限)NoteNumber)RandomNumber) NoteName). tm=(!(使う音符) RandomSelect). to=tt. tt=tt+(1/tm)*4. [tt > m]! なら [tm=1/(m-to)*4] 実行. note_l=tm. [(m-to)==0.75]! なら [note_l="8.". tt=m ] 実行. [(m-to)==1.50]! なら [note_l="4.". tt=m ] 実行. [(m-to)==1.75]! なら [note_l="4..". tt=m ] 実行. 音符配列! (i)(note_n) 挿入. 長さ配列! (i)(note_l) 挿入. i=i+1. ] 実行. ]. タイトル="Palindrome". 曲数=12. サブタイトル="(二声の回文的カノンによる"+曲数+"の変奏)". 初期処理=[|v_no| 変奏番号=v_no. 乱数初期化 (変奏番号*194612). 速さ=(!("48,64,80,96,112,128") RandomSelect) . 音符種類=!("2/4/8/8/8/8,2/2/4/4/4/8,2/4/4/4/8/8,2/4/8/16/16/16") RandomSelect. 使う音符=音符種類! "/" "," 全部置き換える. 曲の内容=リスト!作る (画面!幅?)(画面!高さ?) 大きさ ((画面!幅?)*-0.5)((画面!高さ?)*0.5) 位置. ]. 作曲処理=[ 小節数=16. 拍子="4/4". 下限="↓ソ". 上限="ミ↑↑". 音符配列=配列! 作る. 長さ配列=配列! 作る. ! (小節数)(拍子)(下限)(上限)(使う音符)(音符配列)(長さ配列) compose2. 音符数=(音符配列! 要素数?). mml_1="". [|i| 音符=(音符配列!(i)見る)+(長さ配列!(i)見る). mml_1=mml_1+音符+" ". ]! (音符数) 繰り返す. mml_2="". [|i| 音符=(音符配列!(音符数+1-i)見る)+(長さ配列!(音符数+1-i)見る). mml_2=mml_2+音符+" ". ]! (音符数) 繰り返す. ]. 演奏処理=[ part_1="・・"+mml_1+mml_2. part_2=mml_1+mml_2+"・・". 曲の内容!クリア. 曲の内容!("タイトル:"+タイトル+サブタイトル)書く. 曲の内容!("変奏No:"+変奏番号)書く. 曲の内容!("テンポ:"+速さ) 書く. 曲の内容!("音符長:"+使う音符) 書く. 曲の内容!("{P1} "+part_1) 書く. 曲の内容!("{P2} "+part_2) 書く. バンド!(メロディ!作る (part_1) 追加 )追加(メロディ!作る (part_2) 追加)追加 (速さ/2)テンポ 演奏 待つ クリア. ]. [|v_no| !(v_no) 初期処理. !作曲処理. !演奏処理. ]! (曲数) 繰り返す.

Palindrome
https://muuseo.com/mugen/items/1

#プログラミング

実験音楽工房(A・COMPANY)
様々なプログラミング言語を使って、音楽を自動作曲しています。
使用している言語
・awk
・COBOL
・JavaScript
・R
・サクラ
・ドリトル
・なでしこ
山澤昭彦 音楽関係プロフィール
山形県鶴岡市出身。1946年生まれ。尺八を学生時代に青木静夫(二代青木鈴募)・横山勝也の各氏から学ぶ。退職後にリコーダーを細岡ゆきに師事。
ブログラム言語を使って音楽を生成する「Generative Music」のアルバムを多数制作、近年はコンビュータを使った映像作品と生成音楽を組み合わせた「実験音楽工房展」を東京などて開催したほか、尺八古典本曲の演奏や多ジャンルのミュージシャンやダンサーとのコラボレーションなど、複合的なアート活動にも取り組んている。
2011年「実験音楽工房 A・COMPANY」プログラムによる生成音楽 制作開始
2012年「音系・メディアミックス同人即売会 M3」出展(2012 - 2015年)
2015年「厚木リコーダーオーケストラ」入団(2019年退会)
2015年「実験音楽工房展 2015」東京・山形
2016年「実験音楽工房展 2016」東京・山形・鶴岡
2017年「実験音楽工房展 2017」東京・鶴岡
2018年「県立鶴岡南高等学校吹奏楽研究会 50周年記念コンサート」企画開催
2018年「大人のリコーダーアンサンブル」(NHK文化センター 庄内教室)講師
2019年「鶴岡水上の音楽祭」芸術監督
2019年「尺八と生成映像による 観音」ライブシリーズを開始
2020年「佳興の会」をプロデュース 現在も年4回の邦楽ライブを開催中
2020年「アンサンブル・チコーニア」結成 活動開始
2020年「K×I×Y 三人展 vol.1 - 時の断片 -」SoundScape 2020
2021年「酒井家庄内入部400年記念事業 七絃琴復興プロジェクト」代表
2022年「K×I×Y 三人展 vol.2 - 時の戯れ -」フラクタルの樹・家具の音楽
2022年「酒井家庄内入部400年記念事業 芸術祭参加」音楽絵巻 その2
2023年「K×I×Y 三人展 vol.3 - 時の覚醒 -」四字熟語・ピアノのための響
2023年「鈴木順子×山澤昭彦 二人展 MindScape」@ 鶴岡アートフォーラム
2023年「山澤昭彦とその界隈」@ TACTおとアート2023
2024年「鈴木順子×山澤昭彦 二人展 CosmicEgg」@ 御茶ノ水 Gallery 蔵
2024年「Sa・Kura Music Week 2024」@ 御茶ノ水 Gallery 蔵
2025年「祈りの残照:尺八古典本曲演奏会」@ 東京大学東洋文化研究所
https://yamazawa.bandcamp.com/
17人がフォロー中
-
Items
1,163
-
Lab Logs
100
-
Likes
780
Since August 2019
