テンポ表示スクリプト
レイヤーを2段使う。ざっくり上段がデータ入力・処理用、下段が表示用。
オブジェクトの始点が1小節1拍目に合うように配置
・上レイヤー:テキストオブジェクト+スクリプト制御
テキスト内容
------------------------------------------------------------
<?
rhythm = 4
tempo = {300}
timing = {0}
?>
------------------------------------------------------------
データ入力エリア。
rhythm:拍子
tempo:テンポ
timing:そのテンポになる拍(※曲が始まって○拍後、と数える)
例えば、テンポ100で始まり、第2小節1拍目(=最初から4拍後)で120、第3小節1拍目(=最初から8拍後)で150となる場合は
tempo = {100, 120, 150}
timing = {0, 4, 8}
と書く。
スクリプト制御内容
------------------------------------------------------------
if obj.frame==0 then
table.insert(timing,9999)
time = {0}
for k, v in pairs(tempo) do
time[k+1] = time[k] + 60/tempo[k]*(timing[k+1]-timing[k])
end
n=1
end
if(obj.time>=time[n+1]) then n=n+1 end
beat = timing[n]+(obj.time - time[n])*tempo[n]/60
bar = math.floor(beat/rhythm+1)
beat = math.floor(beat%rhythm+1)
------------------------------------------------------------
なんかいろいろ処理してる。
・レイヤー下:テキストオブジェクト
テキスト内容(例)
------------------------------------------------------------
<?
mes(tempo[n].."\n")
mes(bar.."\n")
mes(beat)
?>
------------------------------------------------------------
tempo[n]:テンポ
bar:小節番号
beat:拍
を表示する。