※テキスト音楽「サクラ」のストトン表記で、ちょっとだけ和音をラクに入力しよう的なものです。
#-----------------------------------------------------------------------
#「サクラ」の和音入力支援的な
#-----------------------------------------------------------------------
#-----母艦設計----------------------------------------------------------
!母艦設計=「母艦の可視はオフ」
母艦をウィンドウ背景色で画面クリア。
母艦のクライアント幅は320。
母艦のクライアント高さは240。
母艦のタイトルは「和音入力」
母艦のスタイルは「枠固定」
オフに母艦の最大化ボタン有効変更。
オフに母艦の最小化ボタン有効変更。
母艦を中央移動。
#-----------------------------------------------------------------------
#-----宣言--------------------------------------------------------------
音程とは配列=「シ{~}ラ
#{~}ラ{~}ソ
#{~}ソ{~}ファ
#{~}ファ{~}ミ{~}レ
#{~}レ{~}ド
#{~}ド」
Noとは整数=0
MMLとは文字列=空。
#-----GUI------------------------------------------------------------
鍵盤マウス=「-1,-1」
鍵盤とはイメージ。
これについて
可視はオン。
位置は「10,30」
幅は100。高さは170。
#白鍵(7)と白鍵+黒鍵(12)の最小公倍数=84*2+2
マウス出た時は~
鍵盤マウス=「-1,-1」
-1,-1で鍵盤描画。
マウス押した時は~
もし、マウスX<50ならば、
「{音程¥(マウスY/14を切り下げ)}ー」をMML演奏。
もし、マウスX>50ならば、
「{音程¥(マウスY/24を切り下げの全鍵変換)}ー」をMML演奏。
マウス移動した時は~
もし、鍵盤マウス=「{マウスX/50を切り下げ},{マウスY/14を切り下げ}」ならば、戻る。
違えば、もし、マウスX>50ならば、
(マウスY/24を切り下げ),-1で鍵盤描画。
違えば、もし、マウスX<50ならば、
(マウスY/14を切り下げの白鍵変換),(マウスY/14を切り下げ)で鍵盤描画。
-1,-1で鍵盤描画。
#-----------------------------------------------------------
入力パネルとはパネル
これについて
位置は「110,30」
幅は200。高さは170。
入力画面とはイメージ。
これについて
可視はオン。親部品は入力パネル。
位置は「0,0」
幅は200。高さは170。
マウス出た時は~
鍵盤マウス=「-1,-1」
-1,-1で鍵盤描画。
マウス移動した時は~
(マウスY/14を切り下げの白鍵変換),(マウスY/14を切り下げ)で鍵盤描画。
マウス押した時は~
もし、押されたボタン=「右」ならば、
もし、マウスY≧168でなければ、
「{音程¥(マウスY/14を切り下げ)}」をMML演奏。
違えば、
もし、マウスY≧168でなければ、
ノート音程はマウスY/14を切り下げ
ノート位置は「{(マウスX/50を切り下げ)*50+1},{(マウスY/14を切り下げ)*14+1}」
ノート作成。
「{音程¥(マウスY/14を切り下げ)}」をMML演奏。
線色は黒色。塗り色は白色。
入力画面の0,0から200,170へ四角。
線色は$999999
11回
入力画面の1,14*回数から199,14*回数へ線。
線色は青色。
3回
入力画面の50*回数,1から50*回数,169へ線。
#-----------------------------------------------------------
部品間隔は0
再生ボタンとはボタン。
その位置は「10,0」
そのクリックした時は~
MML作成。
もし、MML=空でなければ、MMLをMML演奏。
コピーボタンとはボタン。
その位置は再生ボタンの右側。
そのクリックした時は~
MML作成。
MMLをコピー。
貼付ボタンとはボタン。
その位置はコピーボタンの右側。
そのテキストは「{カッコ}サクラ{カッコ閉じ}へ貼り付け」
そのWはそのテキストの文字幅取得+10。
そのクリックした時は~
MML作成。
MMLをコピー。
「*テキスト音楽{カッコ}サクラ{カッコ閉じ}」を窓アクティブ。
「*テキスト音楽{カッコ}サクラ{カッコ閉じ}」へ『^v』をキー送信。
部品間隔は10。
確認エディタとはエディタ。
その位置は鍵盤の下側。
その幅は300。
#-----------------------------------------------------------
Rメニューとはポップアップメニュー。
Rメニューに『#親部品名,部品名,テキスト,ショートカット,オプション,イベント
-,削除メニュー,削除,,,ノート削除
-,-,,,,
-,上メニュー,オクターブ↑,,,「‘」でオクターブ変更。
-,中メニュー,オクターブ通常,,,「」でオクターブ変更。
-,下メニュー,オクターブ↓,,,「”」でオクターブ変更。』をポップアップメニュー一括作成。
*ノート削除
ノート[ノート番号]→テキストは空。
ノート[ノート番号]→可視はオフ。
*オクターブ変更(Aで)
音符=ノート[ノート番号]→テキスト。
もし、(音符の1文字左部分=「‘」)または(音符の1文字左部分=「”」)ならば、
音符=音符の1から1文字削除。
ノート[ノート番号]→テキストは「{A}{音符}」。
ノート[ノート番号]→幅は48。
#-----------------------------------------------------------------------
母艦の可視はオン。
#-----------------------------------------------------------
*鍵盤描画(W,Bで)
線太さは1。線色は黒色。塗り色は白色。
鍵盤の0,0から100,170へ四角。
yy=1
7回
もし、W=回数-1ならば、塗り色は$FFCCCC
違えば、塗り色は白色。
鍵盤の0,yyから100,yy+24へ四角。
yy=yy+24。
yy=1
12回
もし、回数=2または回数=4または回数=6または回数=9または回数=11ならば、
もし、B=回数-1ならば、塗り色は$CCCCFF。
違えば、塗り色は黒色。
鍵盤の0,yyから50,yy+14へ四角。
yy=yy+14
*全鍵変換(Aの)
もし、A=1ならば、2で戻る。
違えば、もし、A=2ならば、4で戻る。
違えば、もし、A=3ならば、6で戻る。
違えば、もし、A=4ならば、7で戻る。
違えば、もし、A=5ならば、9で戻る。
違えば、もし、A=6ならば、11で戻る。
*白鍵変換(Aの)
もし、A=2ならば、1で戻る。
違えば、もし、A=4ならば、2で戻る。
違えば、もし、A=6ならば、3で戻る。
違えば、もし、A=7ならば、4で戻る。
違えば、もし、A=9ならば、5で戻る。
違えば、もし、A=11ならば、6で戻る。
違えば、もし、A=0ならば、0で戻る。
違えば、A=-1で戻る。
#-----------------------------------------------------------
*ノート作成
ノート[No]をラベルとして作成。
ノート[No]→親部品は入力パネル。
ノート[No]→ポケットはNo。
ノート[No]→位置はノート位置。
ノート[No]→テキストは音程¥ノート音程
ノート[No]→透明はオフ。
ノート[No]→幅は48。
ノート[No]→高さは12。
ノート[No]→背景色は$FFFF99
ノート[No]→ポップアップメニューはRメニュー
ノート[No]→マウス押した時は~
ノート番号は自身→ポケット
もし、押されたボタン=「左」ならば、
自身→背景色は$999999
ノート移動フラグはオン。
ノート[No]→マウス離した時は~
もし、押されたボタン=「左」ならば、
自身→背景色は$FFFF99
ノート移動フラグはオフ。
一時は自身→位置
「{音程¥(((一時¥0,1)-1)/14)}」をMML演奏。
ノート[No]→マウス移動した時は~
一時は自身→位置
(((一時¥0,1)-1)/14)の白鍵変換,(((一時¥0,1)-1)/14)で鍵盤描画。
もし、ノート移動フラグ=オンならば、
もし、マウスY<=0ならば、
もし、ノート位置\0,1=1でなければ、
ノート位置¥0,1=(ノート位置¥0,1)-14
ノート音程=ノート音程-1
違えば、もし、マウスY>=12ならば、
もし、ノート位置\0,1=155でなければ、
ノート位置¥0,1=(ノート位置¥0,1)+14
ノート音程=ノート音程+1
もし、マウスX<=0ならば、
もし、ノート位置\0,0=1でなければ、
ノート位置¥0,0=(ノート位置¥0,0)-50
違えば、もし、マウスX>48ならば、
もし、ノート位置\0,0=151でなければ、
ノート位置¥0,0=(ノート位置¥0,0)+50
自身→位置はノート位置。
自身→テキストは音程¥ノート音程
自身→幅は48。
No=No+1
#-----------------------------------------------------------
*MML作成
一時は空。
(No)回
もし、ノート[回数-1]→テキスト=空でなければ、
もし、一時¥((ノート[回数-1]→X)/50を切り下げ)=空ならば、
一時¥((ノート[回数-1]→X)/50を切り下げ)=ノート[回数-1]→テキスト
違えば、
和音は一時¥((ノート[回数-1]→X)/50を切り下げ)
もし、和音の1文字左部分=「{カッコ}」ならば、
和音の1から1文字削除。和音の1文字右端削除
和音=「{カッコ}{和音}{ノート[回数-1]→テキスト}{カッコ閉じ}」
一時¥((ノート[回数-1]→X)/50を切り下げ)=和音。
(一時の要素数)回
もし、一時¥(回数-1)=空ならば、一時¥(回数-1)=「ッ」
MMLは一時を「」で配列結合。
確認エディタのテキストはMML。
#-----------------------------------------------------------