JKnobMan オンラインヘルプ
11.ダイナミックテキスト
ダイナミックテキスト
[ Japanese | English ]
「文字」プリミティブでは特殊な文法を使う事でフレームに沿って変化するダイナミックテキストを作る事ができます。
コンマ分割
文字列をコンマ(,)で区切ったものです。例えば「A,B,C」であれば 「A」と「B」と「C」がフレームに沿って分配されます。
例) "Sin,Tri,Sqr,Saw,Noise"
連続数値
文字列が次の形式を含んでいる場合、変化する値を並べたものとして扱われます。(<最初の値>:<最後の値>[:ステップ幅] [:フォーマット文字列][:数値式])
<最後の値>の後ろは省略可能です。最もシンプルな形は例えば (1:100) のようになります。もしステップ幅を指定する場合は (1:100:10) となります。あるいは、フォーマット文字列を追加して (1:100:%03d) のような形式にもできます。
更に数値式を追加する事もでき (1:100:%.2f:pow(2,x/100)) のような形式にする事も可能です。数値式を使用する場合にはフォーマット文字列を省略する事はできません。全ての要素を使用すると、 (0:100:1:%3.1f:pow(10,x/100)) のようになります。
文字プリミティブのデフォルトでは (1:99) という文字列が入っていますが、これは "1,2,3,4,.....98,99" という形に展開されます。もし、最後の値が最初の値よりも小さい場合は数値は最初の値から最後の値に向かって減少してゆきます。 また、最初の値、最後の値に負の値を使用する事もできます。
フォーマット文字列は数値の形式を指定する場合に使用するもので、例えば (0:99:%02d) のようにC言語のprintf()フォーマットと同様の文法になっています。
フォーマット文字列
フォーマット文字列は次の形式を取ります。
%[+][0][幅][.精度]型
+ | 値が正の場合、'+' 記号を数値の最初に付けます | |
0 | 桁数が幅に足りない場合、最初を'0'で埋めます | |
幅 | 全体の最小文字数です | |
.精度 | 小数点以下の桁数を指定します。型が 'f' の場合に使用します | |
型 | c | 数値をASCIIコードとしてみた場合の文字 |
d | 符号付整数 | |
x | 16進数値 (小文字) | |
X | 16進数値 (大文字) | |
f | 浮動小数点数値 |
フォーマット文字列の例
- "%d" -99 / 0 / 99
- "%+d" -99 / +0 / +99
- "%02d" 00 / 49 / 99
- "%02X 00 / 7F / FF
- "%.1f" 0.0 / 0.5 / 1.0
多くの場合、'f'型を使用する際にはステップ幅として小数を用います。例えば (0:1:0.1:%.1f) ならば 0.0から1.0までを0.1ステップで増加してゆきます。 "0.0, 0.1, 0.2, 0.3,....1.0"
フォーマット文字列を指定しない場合は "%d" が指定されたのと同様の動作となります。
数値式
数値式は複雑な変化をする数値を表現する際に使用します。数値式では、元の値を x で表し、それに対して演算子や組込み関数を使うことができます。使用できる演算子と関数は次の通りです。
演算子 | + | 加算 |
- | 減算 | |
* | 掛け算 | |
/ | 割り算 | |
関数 | log(x) | eを底とする対数 |
log10(x) | 10を底とする対数 | |
exp(x) | 指数 | |
pow(x,y) | x の y乗 | |
sqrt(x) | 平方根 |
例えば、10から1000まで指数的に変化する数値が必要な場合、
(0:100:%.2f:10*pow(100,x/100))
となります。数値式 10*pow(100,x/100) は0-100 の変化をする x に対して 10-1000 に指数的に変化します。
組み合わせ
コンマ分割と連続数値は組み合わせて使用する事もできます。次の例は「パン」つまみの例です。L(50:1),<C>,R(1:50)
これは次のように展開されます。
L50,L49,...L2,L1,<C>,R1,R2,...R49,R50
Return