Copyright ={"庚申works"}
MetaText ={" 5分半の曲で、244小節です。各パート長は変更可です。"}
TrackName ={"ヘテロジニアス スケール"}
//小節数指定 - 数字を変えると曲の長さが変わります、。
Int ONE = 40; //40 4の倍数のみ、小節数を指定
Int TWO = 36; //36
Int THREE= 60; //60
Int FOUR = 44; //44
Int FIVE = 5; //5 2小節3/4のループ回数
Int SIX = 6; //6
/* --- 概略
まず、最初に伝えるべくことは、この曲は音楽の範疇に入れるべきか当人でも迷ったものです、、
これを理解したうえで、聞いていただけると良いかもしれません、、
また比較的、演奏に処理負担があります。セレロン550 2Gで、CPU値50%ぐらいまでは許容してます。
TW-Music2で、出来るだけ演奏してくれると良いです。
40ボイス使用するので、サクラ純正MSGSで演奏すると、ボイス数不足のため最後のパートでリズムの音
が消えます。
曲は6つのパートに分かれています。
各パートの長さは、上記の小節数指定で自由に変更できます。
例えば、ONEであれば、パート1,の小節数を表します。
数字を入力するとその小節数分演奏できます、。
とりあえず、デフォルトで指定はしましたが、長すぎ! 短すぎ! と思うならば好きなように変更してく
ださい。無茶な小節数でも演奏し続けます。、
※構造化エディタ対応です。
主な再生チェックは、XP+スモールスピーカーのみなので、環境によってはいまひとつかもしれません。
一応、2k+モニタヘッドホン、モニタスピーカーでもテスト確認はしました、..何となく感じが違う。、
*/
/* --- 更新履歴
'12 10 25 ver.0.9 解説も含め仮完成
'12 10 30 ver.1.0 アップロード準備版
'12 11 2 ver.1.03 アップロード初版
'12 11 3 ver.1.04 固有文字エラー修正
*/
/* --- 雑文です。
ツイッター、SNSなどのソーシャルな手段は、あまり信じていません。某SNSにおける汎用デザイン採
用に伴うCSSレイアウト無効化の一件が、尾を引いています。ただ、このまま時流の流れに反し、自己
発信しないまま手をこまねいているのも良くないのでは?と思い立ち、ちょっとだけ自分の姿を捉えら
れるように長文を書いてみました。
-- そして音楽はどこへ行く?...
80年後半、楽器、コンピュータも含め輸入品は総じて半額近くまで下がり始めました、。
皆、なんか変だと思いながら糠喜びしました。
相対的に輸出品目は、倍額に匹敵する値上がりにより売れなくなり始めました、。
今の生産業衰退の序章を感じさせる出来事です、、
海外製品を買って対米貿易黒字を還元しましょうとのキャッチコピーが出るくらい、冷静に考えて
みるとおかしな時代で、このころから円は強いんだ、散財は良いことだの常識感が蔓延してゆきま
す。...
一昔前、Notator Logic (ノーテーターロジック)というソフトがあったのです。Emagicというドイツ
の会社がversion1.0を楽器フェアというイベントに出展していたのです。今はとある事情でこのフェア
に行くことはないと思いますが、、ペラペラの一枚しかない白黒光沢紙のカタログでしたが、当時の自
分は、これに何か引っかかるものを感じたのです、。
それは、譜面で見ることができかつ、ループシーケンス機能を前面に打ち出した当時としては画期的な
考えのシーケンサソフトでした。
このころは、Opcode 社のビジョン、Mark of the Unicorn(MOTU )社のパフォーマーしか選択肢があ
りませんでした。(実はレコンポーザ98、まだVSTプラグイン機能のないキューベースもあります.. )
ビジョンは強力なクオンタイズ機能が売りで、キーボードでのリアルタイム入力に強く、逆にステップ
入力機能が優秀とされたのがパフォーマーです。
これらのソフトを動かすパソコンは一番安かったMacintosh SE/30でも 70万かかる代物であり、ソフ
ト自体も 10万、為替レートの影響で値下がりしているとはいえ、一市民にとっては非常に高嶺の花で
した。とはいえ、フェアライトCMIやシンクラヴィアに比べればはるかに安い...
当時のキーボードマガジンかレコーディングマガジンか、このインタビューについてはうろ覚えであ
りますが、記憶が間違っていなければ恐らく、このループシーケンス機能を使って生み出されたのが、
元MUTE BEATの屋敷豪太が始まり、とされるグラウンドビートです。
この時期流行りのテディー・ライリー率いる、ニュージャックスウィングは、黒いノリに白人の洗練さ
をのせた感じにしか見えなくて、、すみません、、このグラウンドビートが出てきたときは本当に新し
いジャンルに出会ったと思いました。第二次ブリティッシュ・インヴェイジョンの影響を受けた身には、
染み込むのも早かった気がします。補足、第一次はマージービートと言われたビートルズ、ローリング
ストーンズなどです。、
余談です、、当時は、ゲートリバーブ全盛で (リバーブの初期反射、アーリーリフレクションの部分)
コンブレッション効果の高いマイクの代表格、エレクトロボイス RE20で収音したバスドラにこれをか
けるのが定番でした。斬新だったこの音も80'sを感じさせる音になってしまいました、
http://www.mu-s.com/Edu/maicrophones.html
こちらのサイトに、RE20を含むプロ用マイクリストがあります。説明がシンプルで解りやすい。
結局、このロジックを生み出したEmagic社はアップルに買収され、今では他の優れたDAW乱立の時代
とともにその座を明け渡しつつありますが、時が経つとは恐ろしいもので、ネットを通じて優秀な音
楽用フリーウェアが手に入るようになった古今、気がつけばまったくDAWを使うこともなく時だけが過
ぎ、今の自分があるわけですね。
今を取り巻く音楽環境の変遷を、悲観的に捉えてみると、良質な音色は基板で電子回路を組むことな
く、音響合成でいとも簡単に安く生成、かたや新たな音楽は、多くの優秀な音源プラグインとともに
DAWを通して量産化され、消費限界を通り越してなお、供給速度を上げていくわけで、、いきつく先が
どこに向かっているのか..解らなくなります。
時代を席巻する一ジャンルを築きあげ、楽器として見ても楽しいといわれたノーテーターロジックの
ようなソフトや、一時代を築いたJUPITERやDX7、WAVESTATIONのように世界を魅了する音色を生み出す
ハードが出ることを願ってやみません。 -> もっとも当時は、どのシンセも単体ではなく、後段に数多
の定評あるエフェクターを差し込んで使っていたと思います..
最近はそれぞれ、ソフトシンセとして復刻しています。、ただどれであっても丸みの強い、プラグイン
特有の音として同じように聞こえてしまうの自分だけでしょうか、圧縮されたtubeの音を聞く限りなの
で、かなずしも正しい評価を下しているとは言えませんが、実際に配線された音と、プログラムで書か
れた配線では、何かが違う気がしてます、。
追伸、
現在ではグリッチを使用するエレクトロニカジャンルや実験音楽で、音響合成のできるソフトが使用
され新しい音が生み出される時代になりました。、
スーパーコライダーやオーディオプログラミング言語のChucK、IRCAMのMaxパラダイム(Puredataや
Nax,jMaxなど)や、LISP言語との関わりの深いオープンミュージック等がありますが、音を出すだけで
もかなり知識が必要なうえ、いずれも正直とっつきずらいし...とても使いこなせるはずもなく、、
もっとも、。同じ制御構造を持つサクラはその点、とっつきやすく及第点な気がします。
見た目が地味ですが、、少し偉そうですみません。音源用途よりもシーケンスに長けている点も良いで
す。、このサクラがなければ、自分が音楽生成へ回帰することはなく、プログラム的なことを一からや
り直そうとは考えもしなかったと思います。、
この手のソフトは、時間軸に沿った音楽の概念を覆す部分があるので、何らかの変革を呼び込む可能
性があると思ってます。
自分の場合は、音の並びを発音するできるだけ簡単な制御構造を使用した、演奏エンジン設計から入る
ので、<- 実はこの時が一番楽しい、。この可能性をなんとなく意識させられることになっています。、
しかし、浮かんだ着想からある程度、聞ける形に仕上げるまでの工程は、時間の流れを意識し、音楽的
に?しなければならず、またバグつぶしの連続となるので..ここはいつも苦行です。、、結果どうして
も半完成品が堆く積まれていきます。メモリリークが多めなサクラであっても手放せないのはそのため
なのです。、TWはデバック表示領域の小ささも含めもろもろが弱い、。時間という魔性に囚われない、
音楽の在り方を模索する最近です。
ここまで読んでいただき有難うございます、ここからはひとりごとです..思いついたまま書いてしま
ったので脈絡はないです。
フェアライトというと何故か、思い出すのがフェアチァイルドというバンドです、、いつも音楽的に違
う感性の持ち主だと思う人に歌い手としての、元FAIRCHILDのYOUがいます、。
ジャパニーズポップスを聴いて育った人らしいので、若かりし頃、洋楽( <- 当時でもこのように呼ん
だ)一辺倒だった自分とはまったく音楽のスタンスが違うので、、ある意味異次元の人でした。
FAIRCHILD解散後、元MUTE BEATのDub Master Xのリミックスに、ボーカルパートとして参加したのを拝
見したのですが、この人こんなに歌うまかったんだ、と驚いたものです。気がつけばタレントや女優と
してすっかり有名になってしまいました。。今聞いてみると、力抜きすぎ?と思う部分もありますが...
もう一人の違う感性と思う代表格は、EPOですね、メロディメーカーとして見ると素直にすごいなと思
います。実はクラシックサイドからやってきた人らしいのですが、跳ねるメロディ?を聞く度に、どう
なってんのか理解できん..となります。。
ここから、音楽とはあまり関係ない話になります、
固有名詞としてのフェアチァイルドという名は、ムーアの法則で高名なインテル創業時のメンバーが、
元々いたセミコン(半導体)会社、フェアチャイルドセミコンダクターとしても有名です。
個人的興味の話で申し訳ないです ->、最近はAMDのCPU(中央演算装置)、Bulldozerのほうがアーキテ
クチャとして面白いと思っていたので、インテル離れの時期がきたかな、と思っていたのですが今回、
ヒルズボロチームが設計しているHaswellは、トランザクショナルメモリ技術に手を入れているようで、
キャッシュ機能に手を付けたFC-PGAなPen?の時のような良い感触があり、逆に期待度が久々に膨らん
でいるかも、。
さらに横道に逸れます、、フェアチャイルドセミコンダクターは、対地攻撃機A-10サンダーボルトを
生んだフェアチャイルド・リパブリック社の子会社でもありました。、
このA-10の通称サンダーボルトという名は、ヨーロッパ戦線において連合軍で活躍する、戦闘爆撃機
P-47という機体から受け継いだものです。
このP-47のレシプロエンジンは、プラット&ホイットニー(P&W )社によるもので通称ダブルワスプ、空
冷星型9気筒×2 OHV2,000馬力/45,900cc 一段過給機 & インタークーラー付きターボという、当時のレ
シプロ最新技術を詰め込んだ、恒速プロペラ用エンジンでした。
http://homepage2.nifty.com/tachino/engine4.html
星型エンジンとはなんぞやという場合、こんなサイトを見ると良いかも。
実は、ボーイングであれエアバスであれ、航空機体メーカー(日本も含む)は雨後筍のごとくあれど、
搭載する航空用エンジンはこのP&W、ロールス、GE、3社の寡占状態でありまして、それ以外を探すほう
が難しいのです。、
零式で有名な栄エンジンの中島はIHI(石川島播磨)へ吸収される形で、一式陸攻の火星エンジンはいま
だ顕在の三菱で、これらの技術は継承はされているようですが、なかなか実情は苦しいのが現状かと思
われます、。
自衛隊出身のサクラ使いもいる中、こう言うのもおこがましい気がしますが、、
軍開連に興味を持つのは、多分家系のためかもしれません、毘沙門の旗印麾下だったとか...本当かな。、
明治期の族称区分のごたごたで、足軽でもこの階級を名乗ってもかまわない、としたことを考えると厳
密な階級は解りませんが、、米沢時代の苦境期や、血脈の出身地を考えると吝かでもない点はあります、、
明治以降、政治や経済界に今でも多い、薩長土肥の流れをくむ家系とは、色々な意味で違うなぁと思い
ます。。
話の収拾がつかなくなってきた、、昔よく読んだ戦場ものフィクション、新谷かおるのエリア88も思
い出します。、多分サンダーボルト?を見たのはココが最初だった気がする。、
この数字の出自は実在の、88mm高射砲に由来することを、最近になって知りました。、
軍であっても珍しくリベラルな気質が強い、と言われた砂漠のキツネと呼ばれた指揮官を擁するDAK
[ドイツアフリカ軍団 ] により、北アフリカ戦線トブルク包囲戦で活躍することになるあの88です。
ご心配されるかたもおられるかもしれないので、一応言及しておきますね、。戦場もの以外にも、
WRCを題材とした神岡ターンのガッテム、、異色ツーリングコミックの左のオクロック!!あたりも気に
入っているので、そればかり考えているというわけでもないですのでご安心を。
ここまで文が荒れてきたら、もう自棄で一言だけ蛇足です。、どっちかというと外向きなこの分野の
活動がメインかも..、バランスの面でちょうど良いと思ってます。ほっとくとどうも、一点に集中しひ
きこもりがちなので。
セローのデザインは最近、トレールにも拘らず、 (原野などを走るのに適しているの略称、トレイルと
も最近は言われる )外見が洗練されている気がしてます、。
FI(フューエルインジェクション)以前の、2006版グリーンが特に良いです。
2004版 5バルブ機構を持つYZF-R1などのように、インダスリアルデザインのヤマハを見る度うらやまし
いと思うこのごろです、、
でも、本当の姿はスズ菌感染者s+。:.s゚s なのです。。( <- 界隈で呼ばれる変態ではありません! )
音楽以外の話題ばかりになってしまいすみません、、これで自分というものが捉えられたでしょうか?
この長文の戯言にも関わらず、粘り強く読破した諸姉、諸兄は本当の意味で聞き上手な素養がある!?気
がします。、、
なお、この独り言に対するに対する返答等は一切受け付ける予定はありません。、。、
*/
/* --- 解りづらい解説文です、、
全てスケール出力から始まります。
これが演奏エンジンを通過する度、自動的に奏でる仕組みになっています。
このため、結構な頻度で当たり外れがでております。、
パート1,2,は基本的に同じ仕組みで動きます。
3,4,でセット、5,6,でそれぞれ同じ演奏エンジンを使用してます。
-- 演奏エンジンの仕組みです。
+ まず、スケール切り替えのタイミングのみ、配列出力します。
4小節単位、2小節単位、1小節単位だよと、メモリに記憶しておき、これを元に全て演奏されています。
+ 伴奏部は、Hungarian,Neapolitan minorスケールをベースにしております。
このスケールをランダムに各音を上下動して、異スケール化します。
この際、構成音の何個かを引っこ抜きます。
さらにこのスケールから、4つの音を和音として抽出、コードとします。
ベースはこの和音の単音をランダムに選択、ユニゾンで鳴るようにしました、。
+ ドラム部です。
TR=13では、4小節用、2小節用、1小節用とあらかじめリズムパターンを用意します。
上記のタイミング配列に合わせて、これらをチェンジするようにしました。
ただこのままだとあまり面白くないので、用意したリズム譜を元に、再サンプリングします。
2つの16分音符をセットとして、つまり 4小節で 64コのノートがあれば 32分割したものをつくります。
これをシャッフルした後、各自、何倍速にするかを判断します。ただし、等倍速であればこれをカット
し、鳴らしません。
これを再合成して、フィルインとして演奏しています。
TR=14が、この説明の部分です。、、解ってもらえたでしょうか..
要はドラムンベースなどのサンプリング手法をサクラで再現してみようという試みでした。
これは後に気がついたのですが、このサイトを生んだクジラ様が既にフレーズジェネレーターなるもの
を形にしていたようで、手法としてはあまり斬新ではないのに気付かされました。、
-- 各パートの解説です、、
+ まずパート1,2,です。
TR=1,2は、スケールの駆け上がりにディレイをかませてみました。
1,は、ロングディレイ込みで3段、2,はショートディレイで6段かませています。
TR=15はそれぞれ、音色FifthsLead,Syn Malletをコードで演奏、
TR=16はGS音色を使用したベースになってます。
+ パート3,4,は、時間軸に音符をばらまくという手法を採用しています。
音を出す際、強引にタイム指定をかませて出力します。
Time(8:1:48) g
Time(11:4:21) b
Time(10:3:24) d ... のようにランダムタイム出力により、音を鳴らします。
実は、この方法は夢限日記さまからのアイデアから結実したものです、。
この形になるまで長いこと試行錯誤していたのですがどうもうまくいかず、この日記を拝見した時は、
うまい方法だなあと感心しきりでした。
http://mugen-diary.tumblr.com/post/31943369115/spacetime-64-1
ただ負荷軽減のために手法としてはずいぶん変わってしまいましたが...この場を借りてお礼を申し上
げます。
低音側から 3セクションに分け、順にTubularBells,Glockenspiel,Vibraphone.wと使用してます。
パート4,はグリッチで、、順にHelicopter ,Machine Gun, Telephone2 と使用してます。
ゲートタイムを短くすることで、ノイズ的な感じを出しました。
v.Random=14 q.Random=12 t.Random=8 l.Random=24
ばらまく際、上記のようにl.Random=24 を指定することでステップ単位で音符長を変更し、自然な感
じに仕上げています。
+ パート5,6,は見ればわかると思います。無限音階の疑似再現です。
単純にn0 -> n120 までを駆け上がる仕組みをつくり、これを一定のタイム間隔で別トラックに出力し
ているだけです。ただ、このような仕組みをつくるときは、単数字の計算がややこしいんです、、
自動トラック切り替えをするときの注意点は、@やEPなどの設定が吹っ飛んでしまうので、都度入力し
てあげないと挙動が不安定になります、これに気付くまで時間がかかったのでした、、
-- 最後に、音色づくりの方法論です。。
音色を味付けするため、ピッチ変動などを加えています。
PitchBend.onNoteSine(1,0,666+Random(11),!1,4) p.Frequency=16 p.Random=2
上記はピッチベンドをサイン波に合わせて変更する命令セットで、説明するとこんな感じです。
1型のサイン波を設定し、下限 0から、上限 666+Random(11)まで変更し、これを1小節の間で、4回繰り
返す。これは16ステップ単位で変更され、この時ランダムに+-1数値を加減する。
という指定をしています。
要は少しだけ音がリアルになります、、高級な音源に近づく気がします。その代り処理負担が増えます。
EP.onNoteSine(0,111,123,!%(TimeBase*2),16) EP.Frequency=2 EP.Random=6
これはEPの指定の場合です、裏ではこんなことをしていました、、
*/
Include(gs.h);
ResetGS();r4
CH(10) GS_RHYTHM(0);r8
CH(13) GS_RHYTHM(1);r8
CH(14) GS_RHYTHM(2);r8
BR(10)
// SysEx$ = F0,7F,7F,04,01,00,6E,F7;r24 //MASTER VOLUME : 127 -> 110[6E]
// MASTER TUNEが442Hzなってるらしいので調律をリセット
// SysEx$ = F0,41,10,42,12,40,00,00,00,04,0C,04,2C,F7;r48 //MASTER TUNE 445Hz
SysEx$ = F0,41,10,42,12,{40,00,00,00,04,00,00},F7;r48 //MASTER TUNE 440Hz auto chksum
// A4 438Hz 439Hz 440Hz 441Hz
// DATA 00 03 0B 01 00 03 0D 09 00 04 00 00 00 04 02 07
// A4 442Hz 443Hz 444Hz 445Hz
// DATA 00 04 04 0F 00 04 07 06 00 04 09 0D 00 04 0C 04
// Function GSScaleTuningは、ドラムトラック拡張時は使用しないほうがよい?
Function GSScaleTuningKAI (C,Cp,D,Dp,E,F,Fp,G,Gp,A,Ap,B){
// Int DeviceNumber = $10;
FOR(Int I=$10; I <= $1F ; I++){ //[$10がTR=10に該当]
IF(I< $1C | $1D< I){ //[$1C,$1DがTR=13,14に該当]
SysEx = $F0,$41,(DeviceNumber),$42,$12,{$40,(I),$40,(C),(Cp),(D),(Dp),(E),(F),(Fp),(G),(Gp),(A),(Ap),(B)},$F7;
}
}
} //
// Pitch KeyinA 436Hz(-16セント) //ドラムトラックは迂回
Int TNG=-16; //[+63,-64]RPN
GSScaleTuningKAI (64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG)r3;
// 1200*log(442/440)/log2 = 7.85141504セント グーグル電卓機能より
// 1200*log(444/440)/log2 = 15.6673834セント
Tempo=177
TimeBase=168 //開始小節指定の変数より前に宣言
System.RandomSeed=47613 //乱数列を生成する数値 - 種を現在時刻から取得しないケース
//PlayFrom(60:1:0) //途中から全トラック演奏したいとき指定
//PlayTo (84:1:0)
//PrintTime;
//PrintTrack;
//Slur(0,(TimeBase/4));
#COM_SET={v.Random=18 t.Random=5 q.Random=24 }
Int Time_adj= 0; //発音タイミング
Int Part_One=TimeBase*4; //開始小節
Int Part_Two=0; //Twoパート開始のキャプ
Int Part_Three=0; //
Int Part_Four=0; //
Int Part_Five=0; //
Int Part_Six =0; //
// TW-Music2(DirectX[Music]) Effect
// ReverbSetting Time Dpth High Mix
CuePoint={"TwmParam ( 78, 122, 8, 114)"} //初期値(127,117,0,127)
// CuePoint={"TwmParam (127, 127, 60)"} //tenjyou.mmlより参照設定
// 高周波を比較的強く出し //tenjyou.mmlより参照コメント
// タイム・デプス共に最大で演出的に
// Time [0-127],
// Gain [0-127],
// HighFreq [0-127],
// Mix [0-127]
// ChorusSetting Wave Mix Dpth FB Freq Dly Phs
CuePoint={"TwmChorus ( 1, 44, 72, 111, 66,111, 1)"} //初期値(0,64,25,79,14,114,3)
// CuePoint={"TwmChorus ( 1, 127, 30, 60, 1, 50, 0)"} //tenjyou.mmlより参照設定値
// ゆらぎの周期を最も遅くし、フランジャー設定 //tenjyou.mmlより参照コメント
// ディレイを長めにとって、擬似ステレオに
// Waveform [0-1],
// WetDryMix[0-127],
// Depth [0-127],
// Feedback [0-127],
// Frequency[0-127],
// Delay [0-127],
// Phase [0-4]
//全トラック
//Part_IO
Function ERR_CHK(Int II){
IF(II< 4){ II=4; }ELSE{ II= II- II%4; } //末端切り下げ
RESULT= II;
} //Func
Function TB_out(Int Loop){
Int DD=0;
Array PP_ary=();
WHILE(1){
IF(Random(3)==0 & DD< Loop*4-16){ DD=DD+16; PP_ary=(PP_ary,16);} //33 %
ELSE{
IF(Random(3)==0 & DD< Loop*4-8){ DD=DD+8; PP_ary=(PP_ary,8);} //66/3 %
ELSE{
IF(Random(3)==0){ DD=DD+4; PP_ary=(PP_ary,4);} //66*2/3/3=14.66%
}
}
IF(Loop*4<=DD){ EXIT; } //TimeBase 30個*4
} //
RESULT= PP_ary; //(16, 8, 4, ...) 配列合算で、120 [30小節]
} //Func
Function TB_outRdm(Int Loop){
Int DD=0;
Array PP_ary=();
WHILE(1){
IF(Random(3)==0 & DD< Loop*4-32){ DD=DD+32; PP_ary=(PP_ary,32);} //33 %
ELSE{
IF(Random(3)==0 & DD< Loop*4-16){ DD=DD+16; PP_ary=(PP_ary,16);} //66/3 %
ELSE{
IF(Random(3)==0){ DD=DD+8; PP_ary=(PP_ary,8);} //66*2/3/3=14.66%
}
}
IF(Loop*4<=DD){ EXIT; } //TimeBase 30個*4
} //
RESULT= PP_ary; //(32, 16, 8, ...) 配列合算で、120 [30小節]
} //Func
Function CHD_Piyo(Array Elm_copy){
Str Chd_str={'};
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
Chd_str= Chd_str +{n(}+Elm_copy(I)+{)};
} //
Chd_str= Chd_str +{'}; //Print(Chd_str)
Chd_str; //発音 'n(60)n(74)n(88)n(90)'
} //Func
//Scle_CNV
Function CHD_out(Array Elm_copy){
Int TT= 0;
Int TU= 0;
Int TW= 0;
Int I=0;
WHILE(1){
I++;
TT= Random(SizeOf(Elm_copy)-1)+1; //ルート以外
IF(Elm_copy(0)+3<= Elm_copy(TT) & Elm_copy(TT)<= Elm_copy(0)+5 ){ I=0; EXIT; }
IF(SizeOf(Elm_copy)*3<= I){ I=0; EXIT; } //チャレンジ回数
}
WHILE(1){
I++;
TU= Random(SizeOf(Elm_copy)-1)+1; //ルート以外
IF(Elm_copy(0)+7<= Elm_copy(TU) & Elm_copy(TU)<= Elm_copy(0)+9 ){ I=0; EXIT; }
IF(SizeOf(Elm_copy)*4<= I){ I=0; EXIT; } //チャレンジ回数
}
WHILE(1){
I++;
TW= Random(SizeOf(Elm_copy)-1)+1; //ルート以外
IF(TT!=TW & TU!=TW){ I=0; EXIT; }
IF(SizeOf(Elm_copy)<= I){ I=0; EXIT; } //チャレンジ回数
}
Array CHD= (Elm_copy(0),Elm_copy(TT),Elm_copy(TU),Elm_copy(TW)); //合成
//Print({Elm_copy:}+Elm_copy+{ / }+{I:}+I+{TT:}+TT+{TU:}+TU+{TW:}+TW)
CHD = ArraySortNum(CHD); // 再ソート
//Print({CHD:}+CHD)
RESULT=CHD; //(3,6,10,12,14) -> (3,6,10,12) 与えられた配列から4つチョイス
} //Func
Function Scle_CNV(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
Array Elm_chd=();
Array Elm_out=();
Array Tri_tmp=();
Array Tri_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
FOR(Int J=0; J< SizeOf(Elm_chd); J++){
IF(J!=0){ Elm_out=(Elm_out,Elm_chd(J)); }ELSE{ DUB= Elm_chd(J); } //分離
} //
//#OVERIDE=SS;
Tri_tmp=CHD_out(Elm_out); //Print(Tri_tmp);
//Str SS={Array OvRide= (}+Tri_tmp+{);}; //#OVERIDEへ出力
Tri_chd=(Tri_chd,DUB,Tri_tmp,-1); //6つづつ4音の配列合成
Elm_chd=();
Elm_out=();
}
} //
RESULT=Tri_chd; //(4, 0,1,5,7,-1, 16, 0,5,7,11,-1 ...) -> (4, 1,4,7,10,-1, 16, 0,5,7,11,-1, ...)
} //Func
//ランダムスケール出力
Function Rdm_io(Array Elm_copy){
FOR(Int I=1; I< SizeOf(Elm_copy)-1; I++){
Elm_copy(I)= Elm_copy(I)+RandomSelect(1,0,-1);
}
RESULT= Elm_copy; //(0,2,4,6,8,10) -> (0,3,4,6,7,11)
} //Func
Function Rdm_ad(Array Elm_copy){
Array Elm_tmp=();
Array Elm_temp=();
Int TT= 0;
Int TU= 0;
SWITCH(Random(3)){
CASE(0){ Elm_tmp= Elm_copy; }
CASE(1){
TT= Random(SizeOf(Elm_copy)); //省く
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(TT==I){}
ELSE{ Elm_tmp=(Elm_tmp,Elm_copy(I)); }
}
}
CASE(2){
TT= Random(SizeOf(Elm_copy)); //省く
WHILE(1){
TU= Random(SizeOf(Elm_copy)); //省く
IF(TT==TU){}
ELSE{ EXIT; }
}
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
SWITCH(I){
CASE(TT){} //thru
CASE(TU){} //thru
DEFAULT{ Elm_tmp=(Elm_tmp,Elm_copy(I)); }
}
}
}
} //SW
RESULT= Elm_tmp; //(0,1,4,6,8,10) -> (1,4,8,10)
} //Func
Function Sorter(Array Elm_copy){
Elm_copy = ArraySortNum(Elm_copy); // 再ソート
Array Elm_tmp=();
FOR(Int I=1; I< SizeOf(Elm_copy); I++){ //Elm_copy(0)以外のみ
IF(Elm_copy(I-1)==Elm_copy(I)){} //同数値を省く
ELSE{ Elm_tmp= (Elm_tmp,Elm_copy(I)); }
}
Elm_tmp=(Elm_tmp,Elm_copy(0)+12); //Elm_copy(0)を最後に追加
RESULT= Elm_tmp; //(0,3,3,10,6) -> (3,6,10,12)
} //Func
Function Scle_stre(Array Elm_copy){
Int DUB=0; //1/4小節数
Array SCL=();
#SCLE_RR;
Array CC=();
Array BB=();
Array AA=SCL;
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
DUB=Elm_copy(I);
BB= Rdm_io(AA); BB= Rdm_ad(BB); BB= Sorter(BB);
IF(SizeOf(Elm_copy)-1<= I){ CC=(CC,DUB,BB,-2); }
ELSE{ CC=(CC,DUB,BB,-1); }
} //
RESULT =CC; //(0,1,3,5,7,8,11) -> (4, 0,1,5,7,-1, ...16, 0,5,7,11,-2)
} //Func
//マクロ、変数
ONE= ERR_CHK(ONE);
TWO= ERR_CHK(TWO);
THREE= ERR_CHK(THREE);
FOUR= ERR_CHK(FOUR);
Int TMP=0; //テンプ
Int II=0; //テンプ
Array TR_TBP=TB_out(ONE-2); //長さ出力 [30]小節
Array TR_TBQ=TB_out(TWO-2); //
Array TR_TBR=TB_outRdm(THREE-2); //
Array TR_TBS=TB_outRdm(FOUR-2); //
Array TR_TB=(); //テンプ
Array Elm_chd=();
#SCLE_Hn={SCL=(0,3,4,6,7,9,10); } //配列原本 Hungarian
#SCLE_Nm={SCL=(0,1,3,5,7,8,11); } //配列原本 Neapolitan minor
//section 1
TR_TB=TR_TBP;
#SCLE_RR=#SCLE_Nm;
Array SC_dataP =Scle_stre(TR_TB); //スケール配列群
TR_TB=TR_TBQ;
#SCLE_RR=#SCLE_Hn;
Array SC_dataQ =Scle_stre(TR_TB); //
//section 2
TR_TB=TR_TBR;
#SCLE_RR=#SCLE_Nm;
Array SC_dataR=Scle_stre(TR_TB); //
TR_TB=TR_TBS;
#SCLE_RR=#SCLE_Hn;
Array SC_dataS=Scle_stre(TR_TB); //
Array SC_data =(); //テンプ
//ドラム部
Function Std_drm(){ // 基本ドラム生成
Str BD={}; Str HH={}; Str SN={};
Str RYM={}; Int TMP=0; //Sub
#DR;
RYM={ TMP=Time;}+{Rhythm}+CHR(123)+BD+CHR(125)+{
Time=TMP;}+{Rhythm}+CHR(123)+SN+CHR(125)+{
Time=TMP;}+{Rhythm}+CHR(123)+HH+CHR(125)+{}
RYM; //発音
} //Func
Function DrStd_piyo(Array Elm_copy){
Str DR={}; //マクロ確保
Int DUB= 0;
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
DUB= Elm_chd(0);
SWITCH(DUB){
CASE(4){ #DR=#RR1; }
CASE(8){ #DR=#RR2; }
CASE(16){ #DR=#RR3; }
}
Std_drm();
Elm_chd=(); //再初期化
}
}
} //Func
// Rdm_drm()
Function Splt_mke(Int DD){ // ドラムン合成 l16専用
Str BD={}; Str HH={}; Str SN={};
#DR;
Str BDs={}; Str HHs={}; Str SNs={};
Str DATAs={}; Int TMP=0; //Sub
//Int DD=0; //小節数
Int Mid_num=5; //初期値:5 {l16 []...}
Int SC =2; //固定値
Array Data_ary=(); //スライスデータ
FOR(Int I=0; I< DD *16/SC; I++){ // l16 4小節 - 32分割
BDs= MID(BD,Mid_num,SC); HHs= MID(HH,Mid_num,SC); SNs= MID(SN,Mid_num,SC); // 2/64
IF(I%2==1){
IF(I%8==7){ Mid_num=Mid_num+2+SC; } //読み出しタイミング
ELSE{ Mid_num=Mid_num+1+SC; }
}
ELSE{ Mid_num=Mid_num+SC; }
DATAs={TMP=Time;}+{Rhythm}+CHR(123)+BDs+CHR(125)+{
Time=TMP;}+{Rhythm}+CHR(123)+SNs+CHR(125)+{
Time=TMP;}+{Rhythm}+CHR(123)+HHs+CHR(125)+{}
Data_ary=(Data_ary,DATAs); //スライスデータ合成
} //
RESULT= Data_ary; //Print(SizeOf(Data_ary))
} //Func
Function Rdm_num(Array Elm_copy){ // ランダム配列生成
Int Rdm = 0; //除く数値
Array Rdm_ary =();
FOR(Int I=0; I< Elm_copy(0); I++){
Rdm= Random(Elm_copy(1) ); //ランダム選択
IF(Rdm_ary(I)==Rdm){ I--;}
ELSE{ Rdm_ary= (Rdm_ary, Rdm);}
}
//Print(Rdm_ary);
RESULT =Rdm_ary; //(4,16) -> (3,6,10,15) / (6,6,10,15)
} //Function
Function Rdm_drmFin(Array Data_ary){ // ドラムン生成
Array Rdm_ary=Rdm_num(SizeOf(Data_ary),SizeOf(Data_ary)); //シャッフル配列生成
Int Len=MML(l); //Print(Rdm_ary)
Str Chd_str={};
Int Dbl_sw =0; //倍速スイッチ
FOR(Int I=0; I< SizeOf(Data_ary); I++){
IF(Random(2)==0){ Dbl_sw =1; }
ELSE{
Dbl_sw=RandomSelect(1,3); //3連で
}
Chd_str= Chd_str+{l%(}+Len/Dbl_sw+{)}; //レングス出力
IF(Dbl_sw!=1){ //自動フィルイン
Chd_str=Chd_str+{ PitchBend=111*}+(Dbl_sw-1);
FOR(Int J=0; J< Dbl_sw; J++){
Chd_str=Chd_str+Data_ary(Rdm_ary(I)); //繰り返し出力
} //
}
ELSE{Chd_str=Chd_str+{rr} } //Dbl_sw=1
} //
Chd_str; //Print(Chd_str)
l%(Len)
} //Func
Function Rdm_drm(Array Data_ary){ // ドラムン生成
Array Rdm_ary=Rdm_num(SizeOf(Data_ary),SizeOf(Data_ary)); //シャッフル配列生成
Int Len=MML(l); //Print(Rdm_ary)
Str Chd_str={};
Int Dbl_sw =0; //倍速スイッチ
FOR(Int I=0; I< SizeOf(Data_ary); I++){
IF(Random(2)==0){ Dbl_sw =1; }
ELSE{
IF(Random(2)==0){ Dbl_sw =RandomSelect(1,2); }
ELSE{ Dbl_sw =RandomSelect(1,4); }
}
Chd_str= Chd_str+{l%(}+Len/Dbl_sw+{)}; //レングス出力
IF(Dbl_sw!=1){ //自動フィルイン
Chd_str=Chd_str+{ PitchBend=111*}+(Dbl_sw-1);
FOR(Int J=0; J< Dbl_sw; J++){
Chd_str=Chd_str+Data_ary(Rdm_ary(I)); //繰り返し出力
} //
}
ELSE{Chd_str=Chd_str+{rr} } //Dbl_sw=1
} //
Chd_str; //Print(Chd_str)
l%(Len)
} //Func
Function DrRdm_piyo(Array Elm_copy){
Str DR={}; //マクロ確保
Int DUB= 0;
Array Elm_chd=();
Array Data_ary=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
DUB= Elm_chd(0);
SWITCH(DUB){
CASE(4){ #DR=#RR1; }
CASE(8){ #DR=#RR2; }
CASE(16){ #DR=#RR3; }
}
Data_ary= Splt_mke(DUB/4);
IF(Elm_copy(I)==-2){ Rdm_drmFin(Data_ary); }
ELSE{ Rdm_drm(Data_ary); }
Elm_chd=(); //再初期化
}
}
} //Func
//ドラム音色
Function Vwte(){ //ヒューマングループ付与
RESULT=-Random(4);
} //Func
Function Twte(){
RESULT=Random(3)-1;
} //Func
Int BD_lev=127; Int SN_lev=120; Int HH_lev=117; Int PC_lev=90;
$Y{v(PC_lev -Vwte())t( Twte())n(50),} $y{v(SN_lev-30-Vwte())t( Twte())n(50),} //Perc.
$X{v(BD_lev -Vwte())t(6+Twte())n(35)0n(36),} $x{v(BD_lev-35-Vwte())t(6+Twte())n(35)0n(36),} //BD ドン
$J{v(HH_lev-20-Vwte())t(Twte()-15)n(42),} $j{v(HH_lev-56-Vwte())t(Twte()-15)n(42),} //HH close チッ
$P{v(HH_lev-36-Vwte())t(Twte()-8)n(44),} $p{v(HH_lev-68-Vwte())t(Twte()-8)n(44),} //HH pedal
$H{v(HH_lev-36-Vwte())t(Twte()-8)n(46),} $h{v(HH_lev-68-Vwte())t(Twte()-8)n(46),} //HH open トゥ
$I{v(127-Vwte())t(Twte())n(40),} $i{v(127-44-Vwte())t(Twte())n(40),} //Sn
$K{'v(SN_lev-34-Vwte())t(1+Twte())n40 v(SN_lev-20-Vwte())t(Twte())n37'}
$k{'v(SN_lev-54-Vwte())t(1+Twte())n40 v(SN_lev-50-Vwte())t(Twte())n37'} //Sn&Rim タッ
$G{v(127-Vwte())t(Twte()-5)n37,} $g{v(127-33-Vwte())t(Twte()-5)n37,} //Rim
$C{v(HH_lev-0 -Vwte())t(13+Twte())n(57),} $c{v(HH_lev-34-Vwte())t(13+Twte())n(57),} //Cym
$D{v(HH_lev+10-Vwte())t( 4+Twte())n(51),} $d{v(HH_lev-34-Vwte())t( 4+Twte())n(51),} //RideCym
$B{v(HH_lev+10-Vwte())t( 8+Twte())n(55),} $b{v(HH_lev-44-Vwte())t( 8+Twte())n(55),} //SplashCym
$M{v(SN_lev-Vwte())t(2+Twte())'n(43)n(47)',}$m{v(SN_lev-60-Vwte())t(2+Twte())'n(43)n(47)',} //LowTom カッ
$W{v(SN_lev-Vwte())t(2+Twte())'n(41)n(45)',}$w{v(SN_lev-60-Vwte())t(2+Twte())'n(41)n(45)',} //MidTom トッ
$N{v(SN_lev-Vwte())t(1+Twte())'n(48)n(50)',}$n{v(SN_lev-60-Vwte())t(1+Twte())'n(48)n(50)',} //HighTom コッ
$Q{v(PC_lev)t(2+Twte())n(63),} //Bomgo
$R{v(PC_lev-44)t(1+Twte())n(61),} //BomgoRim
$S{v(PC_lev)t(1+Twte())n(62),} //BomgoMute
$T{v(PC_lev)t(3+Twte())n(64),} //BomgoLow
$U{v(PC_lev)t(Twte())n(82),} //Shaker
//マクロ、変数
#TR_SET={
}; //
#BD0= {l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#HH0= {l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#SN0= {l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#BD01={l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#HH01={l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#SN01={l16 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr}
#BD06={l16 rrrr rrrr rrrr rrrr}
#HH06={l16 rrrr rrrr rrrr rrrr}
#SN06={l16 rrrr rrrr rrrr rrrr}
//4小節パターン l16*64
#BD1= {l16 Xrrr rrrr rrrr Xrrr rrrr rrrr rrrr rrxr xrrr rrrr rrrr rrXr rrrr rrrx rrrr rrrr} //2ステップ化
#HH1= {l16 Jrrr rrrr rrjr Jrrr rrjr Hrrr Jrrr rrrr jrrr rrrr rrJr rjrr rrJr jrrr rHrr jrjr}
#SN1= {l16 rrrr rrrr Grrr rrgr rrGr rrrr rrrr Grrr rrrr rrrr Grrr rrrr rrrg rrrr rrrG rrrr}
#BD11={l16 Xrrr rrrr rrrr Xrrr rrrr rrrr rrrr rrrr} //ドラムン
#HH11={l16 Jrrr rrrr rrjj Jrrr rrjr Hrrr rrrr Hjrr}
#SN11={l16 rrrr rrrr Grrr rgGr rrGr rrrr rrGr rrrr}
#HH16={l16 rrjh rrrr rrHJ rjHr} //16ビート
#SN16={l16 rrrr Grrr grrr rrGr}
#BD16={l16 xrXr rxXr rrrr Xrrr}
#BD2= {l16 Xrrr rrrr rrrr Xrrr rrrr rrrr rrrr rrxr xrrr rrrr rrrr rrXr rrrr rrrx rrrr rrrr} //2ステップ化
#HH2= {l16 Jrrr rrrr rrjr Jrrr rrjr Hrrr Jrrr rrrr jrrr rrrr rrJr rjrr rrJr jrrr rHrr jrjr}
#SN2= {l16 rrrr rrrr Krrr rrir rrKr rrrr rrrr Irrr rrrr rrrr Krrr rrrr rrrk rrrr rrrI rrrr}
#BD21={l16 Xrrr rrrr rrrr Xrrr rrrr rrrr rrrr rrrr} //ドラムン
#HH21={l16 Jrrr rrrr rrjj Jrrr rrjr Hrrr rrrr Hjrr}
#SN21={l16 rrrr rrrr Krrr rkKr rrKr rrrr rrKr rrrr}
#HH26={l16 rrjh rrrr rrHJ rjHr} //16ビート
#SN26={l16 rrrr Krrr krrr rrKr}
#BD26={l16 xrXr rxXr rrrr Xrrr}
#MR6 ={l8 rUUr UrUU rUrU rUUr UUrU rU} //11拍子
#HH4= {l8 jJjj jHjj jJjj jHjr Hrrj jj}
#SN4= {l8 rrGr rrrr grrr rrGr rrrr gr}
#MR66={l8 rQQr SRrS rTQr TSrr TrSR rS} //11拍子
#HH44={l8 Jrrr rrjh rrrr hjrr rrrr jH}
#SN44={l8 rrrr Krrr rrrr Irrk rKrr rr}
TR=13
EP=127
P=54
// #COM_SET;
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=4
PitchBend.onNoteWaveEx(0,-555,!4) p.Frequency=8 p.Random=14
@9 l16
V=127 REV=40
Time=Part_One;
Lyric={" >>パターン1,>> "}+ONE+{-2小節};
//Sub{n(50)}
#DR={ BD=#BD1; HH=#HH1; SN=#SN1; } Std_drm();
#RR1={ BD=#BD16; HH=#HH16; SN=#SN16; }
#RR2={ BD=#BD11; HH=#HH11; SN=#SN11; }
#RR3={ BD=#BD1; HH=#HH1; SN=#SN1; }
SC_data= SC_dataP; DrStd_piyo(SC_data); //発音
Time=Time+TimeBase*4*2; //残り2小節
V=121 REV=50
Part_Two=Time; //PlayFrom(Part_Two)
Lyric={" >>パターン2,>> "}+TWO+{-2小節};
//Sub{n(50)}
#DR={ BD=#BD2; HH=#HH2; SN=#SN2; } Std_drm();
#RR1={ BD=#BD26; HH=#HH26; SN=#SN26; }
#RR2={ BD=#BD21; HH=#HH21; SN=#SN21; }
#RR3={ BD=#BD2; HH=#HH2; SN=#SN2; }
SC_data= SC_dataQ; DrStd_piyo(SC_data); //発音
Time=Time+TimeBase*4*2; //残り2小節
V=127 REV=40
Part_Three=Time; //PlayFrom(Part_Three)
Lyric={" >>パターン3,>> "}+THREE+{-2小節};
//Sub{n(50)}
Time=Time+TimeBase*4*(4+THREE);
Time=Time+TimeBase*4*2; //残り2小節
Part_Four=Time; V=121 REV=50 //PlayFrom(Part_Four)
Lyric={" >>パターン4,>> "}+FOUR+{-2小節};
//Sub{n(50)}
Time=Time+TimeBase*4*(4+FOUR);
TMP=Time; rr
p%.T(0,8191,!%(TimeBase/2)) p.Frequency=1
Sub{rr n(84)}
Sub{r n(84)}
n(84) rr
Time= TMP; //Sub
Time=Time+TimeBase*4; //全体休符
PitchBend.onNoteWaveEx(0,-555,!4) p.Frequency=8 p.Random=14
EP=106
Part_Five=Time; //PlayFrom(Part_Five)
Lyric={" >>パターン5,>> "}+FIVE+{回 };
//Sub{n(50)}
TMP=Time; //Sub
#DR={ BD=#MR6; HH=#HH4; SN=#SN4; } II=0; WHILE(II< (FIVE+2)){ Std_drm(); II++; }
Time= TMP;
Time=Time +TimeBase*4 /24*120 +TimeBase*11 *FIVE;
TMP=Time; rrrrrn(48)r n(50) Time= TMP; //Sub
Time=Time+TimeBase*4; //全体休符
EP=111
Part_Six =Time; //PlayFrom(Part_Six)
Lyric={" >>パターン6,>> "}+SIX+{回 };
//Sub{n(50)}
TMP=Time; //Sub
#DR={ BD=#MR66; HH=#HH44; SN=#SN44; } II=0; WHILE(II< (SIX+2)){ Std_drm(); II++; }
Time= TMP;
Time=Time +TimeBase*4 /24*120 +TimeBase*11 *SIX;
n(51)n(50) l8r n(49) l8n(48)r l192 r //l8 n(47) l4+8+12+96+192+192 r
REV=101 p%=-4000 l2 n(52) //ラスト
TR=14 Time_adj= 0; //発音タイミング
P=54 //V=66 REV=66
//#COM_SET;
//PitchBend.onNoteWaveEx(0,-1111,!4) p.Frequency=8 p.Random=14
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=6
@26 l16
V=127 REV=40
Time=Part_One+Time_adj;
#RR1={ BD=#BD16; HH=#HH16; SN=#SN16; }
#RR2={ BD=#BD11; HH=#HH11; SN=#SN11; }
#RR3={ BD=#BD1; HH=#HH1; SN=#SN1; }
#DR={ BD=#BD1; HH=#HH1; SN=#SN1; } Rdm_drm(Splt_mke(4)); //4小節
SC_data= SC_dataP; //32小節単位
DrRdm_piyo(SC_data); //発音
V=60 REV=50
Time=Part_Two+Time_adj;
#RR1={ BD=#BD26; HH=#HH26; SN=#SN26; }
#RR2={ BD=#BD21; HH=#HH21; SN=#SN21; }
#RR3={ BD=#BD2; HH=#HH2; SN=#SN2; }
#DR={ BD=#BD2; HH=#HH2; SN=#SN2; } Rdm_drm(Splt_mke(4));
SC_data= SC_dataQ; //32小節単位
DrRdm_piyo(SC_data); //発音
V=127 REV=40
Time=Part_Three+Time_adj;
#RR1={ BD=#BD06; HH=#HH16; SN=#SN06; }
#RR2={ BD=#BD01; HH=#HH11; SN=#SN01; }
#RR3={ BD=#BD0; HH=#HH1; SN=#SN0; }
#DR={ BD=#BD0; HH=#HH1; SN=#SN0; } Rdm_drm(Splt_mke(4));
SC_data= SC_dataR; //32小節単位
DrRdm_piyo(SC_data); //発音
V=99 REV=50
Time=Part_Four+Time_adj;
#RR1={ BD=#BD06; HH=#HH26; SN=#SN26; }
#RR2={ BD=#BD01; HH=#HH21; SN=#SN21; }
#RR3={ BD=#BD0; HH=#HH2; SN=#SN2; }
#DR={ BD=#BD0; HH=#HH2; SN=#SN2; } Rdm_drm(Splt_mke(4));
SC_data= SC_dataS; //32小節単位
DrRdm_piyo(SC_data); //発音
//TR=1
//発音部
// YM_piyo
Function Elm_Rev(Array Elm_copy){ //リバースフレーズ
Int Rev_tmp= 0;
FOR(Int Rev_i=0; Rev_i< SizeOf(Elm_copy)/2; Rev_i++){
Rev_tmp= Elm_copy(0+ Rev_i);
Elm_copy(0+ Rev_i) = Elm_copy( SizeOf(Elm_copy)-1 -Rev_i); //最後を最初へ代入
Elm_copy( SizeOf(Elm_copy)-1 -Rev_i) =Rev_tmp;
}
RESULT= Elm_copy; //(0,4,7,10) -> (10,7,4,0)
} //Func
Function Ary_oct(Array Elm_copy){
Int Oct=7; //7oct.
Array Elm_tmp=();
Array Elm_out=();
FOR(Int J=0; J< Oct; J++){
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
Elm_tmp(I)=Elm_copy(I)+(12*J);
}
Elm_out=(Elm_out,Elm_tmp);
}
Elm_tmp=Elm_Rev(Elm_out); //Elm_tmpを再利用
Elm_out=(Elm_out,(Elm_copy(0)+Oct*12),Elm_tmp);
RESULT=Elm_out; //(0,6,12) -> -> (0,6,12,18,24,30,36,30,24,18,12,6,0)
} //Func
Function Ary_octRev(Array Elm_copy){
Int Oct=7; //7oct.
Array Elm_tmp=();
Array Elm_out=();
FOR(Int J=0; J< Oct; J++){
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
Elm_tmp(I)=Elm_copy(I)+(12*J);
}
Elm_out=(Elm_out,Elm_tmp);
}
Elm_tmp=Elm_Rev(Elm_out); //Elm_tmpを再利用
Elm_out=(Elm_tmp,0,Elm_out); //リバース
//Print(Elm_out)
RESULT=Elm_out; //(0,6,12) -> (36,30,24,18,12,6,0,6,12,18,24,30,36)
}
Function Yurimodoshi(Array Elm_copy){
Int TT=Time; //
Int DUB=0; //1/4小節数
Int TW=0; //分割step数
Int TU=0; //帳尻
Array Elm_chd=();
Array Elm_out=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
V.T( 7,127,!%(TimeBase*DUB *3/4), 127,7,!%(TimeBase*DUB *1/4) ) //音量変化
#LYRC_IN;
IF(Random(2)==0){ Elm_out=Ary_oct(Elm_chd); }
ELSE{ Elm_out=Ary_octRev(Elm_chd); }
//Print(Elm_out)
TW=TimeBase*DUB/(SizeOf(Elm_out)-1); //Print(TW)
TU=TimeBase*DUB%(SizeOf(Elm_out)-1); //Print(TU)
FOR(Int I=0; I< SizeOf(Elm_out); I++){
IF(I==0){ l%(TU)} //帳尻
ELSE{ l%(TW)}
TT= Time;
Time= TT+ TimeBase*10; P=(127*Elm_out(I)/84) n(24+Elm_out(I))
Time= TT+ TimeBase*3 ; n(24+Elm_out(I))
Time= TT; n(24+Elm_out(I)) //スケール発音
} //
//Time=TT +DUB*TimeBase; //Time Reset
} //Func
Function YurimodoshiW(Array Elm_copy){
Int TT=Time; //
Int DUB=0; //1/4小節数
Int TW=0; //分割step数
Int TU=0;
Array Elm_chd=();
Array Elm_out=();
Array Elm_outRev=();
Int Tmp=MML(v);
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
V.T( 7,127,!%(TimeBase*DUB *1/4), 127,7,!%(TimeBase*DUB *3/4) ) //音量変化
#LYRC_IN;
Elm_out=Ary_oct(Elm_chd);
Elm_outRev=Ary_octRev(Elm_chd); //Print(Elm_outRev)
TW=TimeBase*DUB/(SizeOf(Elm_out)-1); //Print(TW)
TU=TimeBase*DUB%(SizeOf(Elm_out)-1); //Print(TU)
FOR(Int I=0; I< SizeOf(Elm_out); I++){
IF(I==0){ l%(TU)} //帳尻
ELSE{ l%(TW)}
TT= Time;
Time= TT+ TimeBase*8; P=(127*Elm_out(I)/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
Time= TT+ TimeBase/2; P=(127*Elm_out(I)/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
Time= TT; v(Tmp) 'n(24+Elm_out(I))n(24+Elm_outRev(I))' //スケール発音
} //
//Time=TT +DUB*TimeBase; //Time Reset
} //Func
Function YurimodoshiW2(Array Elm_copy){
Int TT=Time; //
Int DUB=0; //1/4小節数
Int TW=0; //分割step数
Int TU=0;
Array Elm_chd=();
Array Elm_out=();
Array Elm_outRev=();
Int Tmp=MML(v);
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
V.T( 7,127,!%(TimeBase*DUB *1/4), 127,7,!%(TimeBase*DUB *3/4) ) //音量変化
#LYRC_IN;
Elm_out=Ary_oct(Elm_chd);
Elm_outRev=Ary_octRev(Elm_chd); //Print(Elm_outRev)
TW=TimeBase*DUB/(SizeOf(Elm_out)-1); //Print(TW)
TU=TimeBase*DUB%(SizeOf(Elm_out)-1); //Print(TU)
FOR(Int I=0; I< SizeOf(Elm_out); I++){
IF(I==0){ l%(TU)} //帳尻
ELSE{ l%(TW)}
TT= Time;
Time= TT+ TimeBase*8; P=(127*(84-Elm_out(I))/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
Time= TT+ TimeBase/2; P=(127*(84-Elm_out(I))/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
Time= TT; v(Tmp) 'n(24+Elm_out(I))n(24+Elm_outRev(I))' //スケール発音
} //
//Time=TT +DUB*TimeBase; //Time Reset
} //Func
Function YM_piyo(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
SWITCH(Random(3)){
CASE(0){#RR1; }
CASE(1){#RR2; }
CASE(2){#RR3; }
} //SW
Yurimodoshi(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
Function YM_piyoW(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
SWITCH(Random(3)){
CASE(0){#RR1; }
CASE(1){#RR2; }
CASE(2){#RR3; }
} //SW
YurimodoshiW(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
Function YM_piyoW2(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
SWITCH(Random(3)){
CASE(0){#RR1; }
CASE(1){#RR2; }
CASE(2){#RR3; }
} //SW
YurimodoshiW2(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
//Data_piyo
Function Rdm_piyo(Array Elm_copy){ //Rdm_piyo(Elm_chd)
Int TT=Time; //
Int DUB=0; //1/4小節数
Int OCT =0; //oct.変更 / #RRより
Array Elm_chd=();
Int VEL=MML(v);
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
#LYRC_IN;
FOR(Int I=0; I< 3 *(DUB/4); I++){ // 4コ/小節 bpm=177 程度
Time=TT +Random(DUB)*TimeBase +Random(4)*TimeBase/4 +Random(TimeBase/4); //負荷対策済み、発音タイミング
SWITCH(Random(3)){
CASE(0){#RR1; }
CASE(1){#RR2; }
CASE(2){#RR3; }
} //SW
#RS;
l( RandomSelect(3,6,12) )
TMP=Time; //Sub
r%(TimeBase/2) v(VEL/2) n( RandomSelect((48+OCT),(60+OCT),(72+OCT))+RandomSelect(Elm_chd) );
Time=TMP;
v(VEL) n( RandomSelect((48+OCT),(60+OCT),(72+OCT))+RandomSelect(Elm_chd) ) //演奏
} //
Time=TT +DUB*TimeBase; //Time Reset
} //Func
Function Data_piyo(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Rdm_piyo(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
//マクロ、変数
#LYRC_IN={ Lyric={ }+(DUB/4)+{ 小節 / Scale: }+Elm_chd; }
#TR_SET={
q87
#COM_SET;
V=127 //V.onNoteWaveEx(111,127,!6,125,111,!1) V.Frequency=16 V.Random=4 //+-2
EP=120 //EP.onNoteSine(0,121+Random(11),125,!1,4) EP.Frequency=16 EP.Random=4
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=6
PitchBend.onNoteSine(1,0,333+Random(11),!1,2) p.Frequency=8 p.Random=4 // SinCrv,Min,Max,Len,Loop
P=64
}; //
#TR_SET1={
q87
#COM_SET;
V=127 //V.onNoteWaveEx(111,127,!6,125,111,!1) V.Frequency=16 V.Random=4 //+-2
EP=120 //EP.onNoteSine(0,121+Random(11),125,!1,4) EP.Frequency=16 EP.Random=4
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=4
PitchBend.onNoteSine(1,0,333+Random(11),!1,2) p.Frequency=16 p.Random=2 // SinCrv,Min,Max,Len,Loop
P=64
}; //
#TR_SET2={
q87
v.Random=14 q.Random=12 t.Random=8 l.Random=24
V=127
EP.onNoteSine(0,111,123,!%(TimeBase*2),16) EP.Frequency=2 EP.Random=6
M.onNoteSine(1,0,8+Random(4),!1,4) M.Frequency=8 M.Random=6
PitchBend.onNoteSine(1,0,333+Random(11),!1,2) p.Frequency=4 p.Random=14 // SinCrv,Min,Max,Len,Loop
P=64
}; //
TR=1 Time_adj= 4; //発音タイミング
Time=Part_One+Time_adj;
CoarseTune=64
FineTune=64+3
#TR_SET; REV=36 CHO=0
Time=Time+TimeBase*4*2; //休符がわり
#RR1={@81,1 v111 }
#RR2={@81,8 v102 }
#RR3={@82,1 v114 }
SC_data= SC_dataP; YM_piyo(SC_data); //発音
//Time=Time+TimeBase*4*2; //休符がわり
Time=Part_Two+Time_adj;
#TR_SET1; REV=40 CHO=116
Time=Time+TimeBase*4*2; //休符がわり
#RR1={@81,1 v86 }
#RR2={@81,8 v88 }
#RR3={@82,1 v89 }
SC_data= SC_dataQ; YM_piyoW(SC_data); //発音
//Time=Time+TimeBase*4*2; //休符がわり
Time=Part_Three+Time_adj;
FineTune=64-2
#TR_SET2; REV=67 CHO=0
@15,0 //読み込みエラー防止
Time=Time+TimeBase*4*4; //休符がわり
#RR1={@12,8 P=115-Random(34) v101 OCT=36; }
#RR2={@10,0 P=64+17-Random(34) v91 OCT=12; }
#RR3={@15,0 P=12+Random(34) v111 OCT=-12; }
#RS={ q( RandomSelect (40,60,80) ) }
SC_data= SC_dataR; Data_piyo(SC_data); //発音
Time=Part_Four+Time_adj;
FineTune=64-3
EP.Random=8 p.Random=28 M.Random=12 REV=51 CHO=66
@128,1 //読み込みエラー防止
Time=Time+TimeBase*4*4; //休符がわり
#RR1={@128,1 P=64+12-Random(24) v116 OCT=12; }
#RR2={@126,0 P=12+Random(24) v106 OCT=-12; }
#RR3={@125,1 P=115-Random(24) v126 OCT=36; }
#RS={ q( RandomSelect(18,22,26) ) }
SC_data= SC_dataS; Data_piyo(SC_data); //発音
//TR=2
//マクロ、変数
#LYRC_IN={}
TR=2 Time_adj= 4; //発音タイミング
Time=Part_Two+Time_adj;
CoarseTune=64
FineTune=64+3
#TR_SET1; REV=40 CHO=116
Time=Time+TimeBase*4*2+TimeBase*3/4; //休符がわり
#RR1={@81,1 v86 }
#RR2={@81,8 v88 }
#RR3={@82,1 v89 }
SC_data= SC_dataQ; YM_piyoW2(SC_data); //発音
Time=Part_Three+Time_adj;
FineTune=64-1
#TR_SET2; REV=33 CHO=0
@12,8 //読み込みエラー抑止
Time=Time+TimeBase*4*4; //休符がわり
#RR1={@12,8 P=115-Random(34) v96 OCT=36; }
#RR2={@10,0 P=64+17-Random(34) v86 OCT=12; }
#RR3={@15,0 P=12+Random(34) v106 OCT=-12; }
#RS={ q( RandomSelect (40,60,80) ) }
SC_data= SC_dataR; Data_piyo(SC_data); //発音
Time=Part_Four+Time_adj;
FineTune=64-2
EP.Random=8 p.Random=28 M.Random=12 REV=24 CHO=66
@128,1 //読み込みエラー抑止
Time=Time+TimeBase*4*4; //休符がわり
#RR1={@128,1 P=64+12-Random(24) v96 OCT=12; }
#RR2={@126,0 P=12+Random(24) v86 OCT=-12; }
#RR3={@125,1 P=115-Random(24) v106 OCT=36; }
#RS={ q( RandomSelect(18,22,26) ) }
SC_data= SC_dataS; Data_piyo(SC_data); //発音
//TR=4
Function Pad_chg(Array Elm_copy){
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
Elm_copy(I)=Elm_copy(I) +I*12 +72; //n()数へ変換
} //
RESULT= Elm_copy; //
} //Func
Function Pad_out(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
Array Elm_chd=();
Array Elm_tmp=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
TMP=Time; //Sub
V.T(7,126,!%(TimeBase*(DUB-4)),126,7,!%(TimeBase*2),7,7,!%(TimeBase*2)) //ループ発行のためV.T
EP.onNoteSine(0,66,123,!%(TimeBase*2+TimeBase/8),16) //+TimeBase/8 Sineの起点まで
EP.Delay=(TimeBase*(DUB-4)); //後半ノイズ付加
l%(TimeBase*(DUB/4+3)) r //EP.onNoteSineのみ発行
Time=TMP;
EP.Delay=(TimeBase*(DUB/4)); //前半ノイズ付加
l%(TimeBase*DUB) Elm_chd= Pad_chg(Elm_tmp); CHD_Piyo(Elm_chd);
} //Func
Function SCL_pad(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Pad_out(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
//マクロ、変数
#TR_SET={
q87
#COM_SET;
V=0 //プチノイズ対策
V.Frequency=4 V.Random=2 //+-2
REV=36 CHO=0
EP.Frequency=4 EP.Random=8
}; //
SC_data=SC_dataS; Array TR_copyS= Scle_CNV(SC_data);
TR=4 Time_adj= 0; //発音タイミング
Time=Part_Four+Time_adj;
CoarseTune=64
FineTune=64-1
P=77
#TR_SET;
@82,1 v123
Time=Time+TimeBase*4*2; //休符がわり
SCL_pad(TR_copyS);
//TR=15
//CNV_reader
Function Rdm_int(Int DD){
Array AA=(); //元値
FOR(Int I=0; I< DD; I++){
AA=(AA,I);
} //RESULT=AA;
Int RR = 0; //選択
Array BB=();
Array CC=(); //出力
FOR(Int I=0; I< DD; I++){
RR= Random(SizeOf(AA));
BB=AA;
AA=();
FOR(Int I=0; I< SizeOf(BB); I++){
IF(I!=RR){ AA=(AA,BB(I)); }
ELSE{ CC=(CC,BB(I)); }
} //
}
RESULT=CC; // 4 -> (3,0,2,1)
} //Func
Function CHD_CHG(Array Elm_copy){
Array JJ= Rdm_int(SizeOf(Elm_copy)); //ランダム数抽出
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
Elm_copy(I)=Elm_copy(I) +JJ(I)*12 +48; //n()数へ変換
} //
RESULT= Elm_copy;
} //Func
Function Chd_ply(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
Array Elm_chd=();
Array Elm_tmp=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
l%(TimeBase*DUB/2)
Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
l%(TimeBase*DUB/4) r
Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
} //Func
Function Chd_plyW(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
Array Elm_chd=();
Array Elm_tmp=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
IF(DUB!=16){
l%(TimeBase*DUB/2) Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/4) Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
}
ELSE{
l%(TimeBase*DUB/2) Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/8) Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd); Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
}
} //Func
Function CNV_reader(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Chd_ply(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
Function CNV_readerW(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Chd_plyW(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
//マクロ、変数
#TR_SET={
V=0 //プチノイズ対策
q87
#COM_SET;
V.onNoteWave(99,125,!6,125,0,!1+8) V.Frequency=8 V.Random=2 //+-2
EP.onNoteSine(0,111+Random(6),125,!1,2) EP.Frequency=4 EP.Random=8
M.onNoteSine(0,0+Random(4),7,!1,8) M.Frequency=8 M.Random=6//6
PitchBend.onNoteSine(0,5+Random(4),24,!1,12) p.Frequency=4 p.Random=4//14
REV=48 CHO=1
}; //
#TR_SET2={
EP.Frequency=8 EP.Random=2
p.Frequency=8 p.Random=4//14
V.onNoteWave(111,125,!24,125,116,!2) V.Frequency=8 V.Random=4 //+-2
CHO=27
}; //
Array SCL=(); //スケールマクロ読込
Array TR_copy=(); //4コード配列群
SC_data=SC_dataP; Array TR_copyP= Scle_CNV(SC_data);
SC_data=SC_dataQ; Array TR_copyQ= Scle_CNV(SC_data);
TR=15 Time_adj= 6-TimeBase/8; //発音タイミング
Time=Part_One+Time_adj;
CoarseTune=64-12
FineTune=64+1
P=88
#TR_SET;
@87,0 v96
Time=Time+TimeBase*4*4; //休符がわり
TR_copy=TR_copyP; CNV_reader(TR_copy);
//残り8小節
CoarseTune=64-24
#SCLE_Nm; @97,0 v108 l%(TimeBase*8) Elm_chd= CHD_out(SCL); Elm_chd= CHD_CHG(Elm_chd); CHD_Piyo(Elm_chd);
Time=Part_Two+Time_adj;
CoarseTune=64-12
#TR_SET2;
Time=Time+TimeBase*4*4; //休符がわり
@99,1 v108
TR_copy=TR_copyQ; CNV_readerW(TR_copy);
//残り8小節
CoarseTune=64
#SCLE_Hn; @99,0 v80 CHO=72 l%(TimeBase*4) Elm_chd= CHD_out(SCL); Elm_chd= CHD_CHG(Elm_chd); CHD_Piyo(Elm_chd);
//TR=16
Function B_Piyo(Array Elm_copy){
Int DD=Elm_copy( Random(SizeOf(Elm_copy)) );
Str Chd_str={'n(}+(DD+12)+{)n(}+(DD+12+12)+{)'};
Chd_str; //発音 'n(28)n(40)'
} //Func
Function Chd_plyB(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
//Array Elm_chd=();
Array Elm_tmp=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
IF(DUB==4){
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/4) r
}
ELSE{
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/4) r
}
} //Func
Function Chd_plyBW(Array Elm_copy){
Int DUB=0; //TimeBaseの個数
//Array Elm_chd=();
Array Elm_tmp=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
} //
IF(DUB==4){
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/4) r
}
ELSE{
l%(TimeBase*DUB/4) r
l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) r
l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp); r
l%(TimeBase*DUB*3/16) B_Piyo(Elm_tmp);
l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
}
} //Func
Function CNV_readerB(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Chd_plyB(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
Function CNV_readerBW(Array Elm_copy){
Array Elm_chd=();
FOR(Int I=0; I< SizeOf(Elm_copy); I++){
IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
ELSE{
Chd_plyBW(Elm_chd); //呼び出し発音
//Print({EC:}+Elm_chd);
Elm_chd=();
}
}
} //Func
//マクロ、変数
#TR_SET={
V=0 //プチノイズ対策
#COM_SET;
q87
//v101
V.onNoteWaveEx(111,125,!5,125,111,!1) V.Frequency=16 V.Random=4 //+-2
EP.onNoteSine(0,111+Random(11),125,!1,1) EP.Frequency=16 EP.Random=4
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=6
PitchBend.onNoteWaveEx(111,-444,!3) p.Frequency=16 p.Random=14
REV=42
}; //
TR=16 Time_adj= 3; //発音タイミング
Time=Part_One+Time_adj;
FineTune=64
P=33
#TR_SET;
@39,1 v121
Time=Time+TimeBase*4*4; //休符がわり
TR_copy=TR_copyP; CNV_readerB(TR_copy);
//残り2小節
//l%(TimeBase*8) r
Time=Part_Two+Time_adj;
Time=Time+TimeBase*4*4; //休符がわり
@40,8 v121
TR_copy=TR_copyQ; CNV_readerBW(TR_copy);
//残り2小節
//l%(TimeBase*8) r
//無限音階
Function Piyo_R(){
EP=66 V=127
Int KK=0; //最低ノート
Int NN=0; //ノート
Int TT=7; //最小音量
Int VV=0; //ベロシティ
FOR(Int I=0; I< 119; I++){
NN=KK+I;
IF(I< 119/2){ VV=TT+I*2; }ELSE{ VV=TT+(119-I)*2; }
v(VV)n(NN) //出力
} //
} //Func
Function PiyoCal(Array TT){
FOR(Int I=1; I< 13; I++){
TR=I;
IF(I%2==0){ P=76 }ELSE{ P=56 }
@81,1
l24 q99 //v111
#TR_SET;
IF(TT(2)==0){ Time=TT(0)+TT(1)+Time_adj+TimeBase*I; } //トラックディレイ
ELSE{ Time=TT(0)+TT(1)+Time_adj+TimeBase*(13-I); }
Piyo_R(); //発音
} //
} //Func
Function PiyoCalW(Array TT){
FOR(Int I=1; I< 13; I++){
TR=I;
IF(I%2==0){ P=76 }ELSE{ P=56 }
//@82,1
l24 q99 //v111
#TR_SET2;
SWITCH(Random(3)){CASE(0){ @81,1 }CASE(1){ @81,8 }CASE(2){ @82,1 }}
Time=TT(0)+TT(1)+Time_adj+TimeBase*I; Piyo_R();
Time=TT(0)+TT(1)+Time_adj+TimeBase*(13-I); Piyo_R();
} //
} //Func
//マクロ、変数
#TR_SET={
//CoarseTune=64+12;
FineTune=64+3
Time_adj= 3; //発音タイミング
#COM_SET;
q87
EP=66
//PitchBend=0
PitchBend.onNoteSine(1,0,666,!1,4) p.Frequency=16 p.Random=0 // SinCrv,Min,Max,Len,Loop
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=6
V=127 REV=66 CHO=1 //P=77
}; //
#TR_SET2={
//CoarseTune=64+24;
FineTune=64+2
Time_adj= 2; //発音タイミング
#COM_SET;
q87
EP=66
//PitchBend=0
PitchBend.onNoteSine(1,0,333,!1,1) p.Frequency=16 p.Random=0 // SinCrv,Min,Max,Len,Loop
M.onNoteSine(0,0,21+Random(11),!2,1) M.Frequency=16 M.Random=0
V=127 REV=66 CHO=1 //P=77
}; //
//全トラック
Time=Part_Five;
FOR(Int I=0; I< FIVE; I++){
PiyoCal(Part_Five,TimeBase*I*11,I%2);
} //
Time=Part_Six;
FOR(Int I=0; I< SIX; I++){
PiyoCalW(Part_Six,TimeBase*I*11);
} //