2014年4月18日金曜日

Pdのノブ型オブジェクトを作った

2017/08/14 Update:
Pd ver.0.46以降で動かなくなったので対応版に更新しました.
Pd自体のGUIの仕様が変わったので互換性はありません.

Pd-extendedの中には,実は数式評価[expr]の他にもGPLやLGPL適用のソフトが結構あって,普通のツマミ[knob](flatgui/knob)も何気にその1つです.

AndroidやiOSアプリは,上記のような感染性ライセンスとの相性が悪く,Pdを使う場合に留意する必要があることはたびたび強調されています.
公式メーリングリストでもトピックになっています:
[PD] Legal restrictions for apps


libpdはGUIを持たないので実行時にツマミを使うことはないのですが,PC側で仕込むパッチからも排除する必要が出てきてしまうという都合の悪さがあります.

まぁ,そもそもGUIとしての[knob]には
・中央値で垂直にならない(なんかちょっと左にずれてる)
・インディケータが円からはみ出ることがある
・ツマミの分解能が表示サイズに依存している
・可変角の範囲が350°と深すぎる

と個人的に好みに合わない点がいくつかあるので,これを機にGPLフリーの互換品を自前で作ってしまおう,ということで…

PdのexternalとTcl/tkのお勉強がてら作ってみました.[abcknob]と命名.


zipで置いておきます.
Githubにソースごと上げてますが,ビルド済みのデータも置いてあるので動作環境に合うものを取り出して使って下さい.

ポイント
・[vslider]のコードがベース.[knob]の中身は見てません
・ツマミの分解能はポインタの動きを直接読み,128pxに固定
・可動角は300°
・インディケータの描画に円弧を描くコマンドを使うので円周部とズレない
・ゲージが伸び始める地点を任意で設定可能.中央値に設定すると左右に向かって伸びる
・レンジを変更してもインディケータの位置がしっかり追従
 (ただし,linear<->logのスケール切り替え時は値をリセットします)
・中央部に数値を表示する機能を追加(プロパティのSteady ON/OFFで切り替わります)
・[knob]に対して上位互換性あり
 (pdファイルをテキストエディタで開いて"knob"を"abcknob"に置き換えれば動きます)

なんやらかんやらで,Tcl/Tkの図形描画の不正確さを潰していく作業に一番時間がかかってると思います…特にWindows用の環境が酷い.

Pd本体と同じSIBSD Licenseをつけて配布します.
バグや変な動作,追加で欲しい機能等があったらコメントを貰えると有難いです.

0 件のコメント :

コメントを投稿