チュートリアル14:
slider と dial

多様なオンスクリーン・コントローラ

このチュートリアルでは、slider と同様の機能を持つオブジェクトを紹介しようと思います。ただ、これらは slider とは外観や動作が少々異なっています。

kslider

パッチ No.1は前の章と同様のものですが、マウスによって演奏することが可能になっています。このパッチでは鍵盤形のスライダ kslider を使用しています。

kslider をクリック&ドラッグして演奏してみて下さい。これは左アウトレットから 36から 96までの数値(MIDI ノートC1からC6まで)を出力するように設定されています。数値はその後、 makenote の左インレットに送信され、そこで( kslider の右アウトレットからの)ベロシティと結合されて、noteout にノートが送信されます。

kslider の下半分に沿ってドラッグした場合には白鍵を表す数値のみが出力されます。上半分に沿ってドラッグした場合には白鍵と黒鍵の両方を演奏します。

・右アウトレットから送信されるベロシティは、演奏しているときに、マウスが鍵盤の中のどのくらい高い位置にあるかよって決まります。

kslider によって表示される Range(音域幅) とノートの Offset(オフセット) は、Object メニューから Get Info... を選ぶことによって変更することができます。Offset は kslider の最も低い音をクリックしたときに出力される値で、 MIDI ノート名として指定されています。デフォルトの値は C1(36)です。Offset を 0にしたい場合は、これをC-2に設定して下さい。Range には kslider で使用したいオクターブ数を指定します。また、インスペクタでは、kslider のサイズを Learge と Small の2つのサイズから選択することができます。

Range と Offset は kslider によって表示される数値、またはマウスでクリック&ドラッグすることでアウトレットから送信される数値のみにあてはまります。kslider のインレットで受信される数値は Offset の影響を受けずに、そのまま通過します。

並行コードを演奏する

kslider に並進行するメジャートライアド(長三和音)を演奏させたいと仮定します。どのように取り組んだら良いでしょうか?

makenote の左インレットに直接数値を送信する方法に加え、2つの異なる + オブジェクトに数値を送信することもできます。1つの + オブジェクトは数値に 4(ピッチを長3度引き上げます)を加え、もう一方には 7(ピッチを完全5度引き上げます)を加えるようにします。その後、これらのトランスポーズされたピッチは、オリジナルのピッチとともに makenote に送られます。

・あなた自身で実際にやってみて下さい。 パッチャーウィンドウをアンロック状態にして、makenote の真上に2つの新しい + オブジェクトを作成します。 そして、ナンバーボックスのアウトレットを + オブジェクトのインレットに接続し、 + オブジェクトのアウトレットを makenote の左インレットに接続して下さい。

・パッチャーウィンドウ をロック状態にして、kslider の1つのノートをクリックし、その結果を聴いて下さい。+ オブジェクトで加算している数値を変更して、他のタイプのトライアドを作成することもできます。

dial, hslider, uslider

パッチ1では、ベロシティ値は uslider という名のスライダ・オブジェクトによって表示され、デュレーションは dial によって供給されます。パッチ2は、水平なスライダー、hslider を含んでいます。


パレット内の多様な slider と dial

これらのオブジェクトと、前の方の章で扱った slider や ナンバーボックスには、いくつかの重要な違いがあります。

1.slider と ナンバーボックス はマウスでドラッグする時に数値を出力します。その他の スライダ や dial もドラッグすることができますが、マウスのシングルクリックで数値を変更することもできます。

・スライダやダイアルをクリックして下さい。それらがマウスのドラッグなしでも新しい位置にジャンプし、数値を出力する点に注意して下さい。

2.sliderkslider は、その範囲内で自動的にサイズを変更します。hslideruslider は出力する数値の範囲にかかわらず、実際にグロウバーによって、任意のサイズまで小さくしたり、大きくしたりすることができます。dial は、値の範囲に関係なく1つのサイズしか持ちません。

3.sliderkslider はドラッグで出力できる数値の範囲には限りがありますが、それらを通過する数値の範囲には制限がありません。dialhslider、 ナンバーボックス、 uslider はインレットで受信する数値に制限を加えます。 0よりも小さい数値(ナンバーボックスの場合には minimum で指定された値より小さい数値)、あるいは指定された範囲を超える数値は、自動的に範囲内に制限されます。

パッチ2で示されているように、制限機能を利用することができます。パッチが何を行なっているかを分析してみましょう。

パッチ2の分析

・MIDI キーボードでスケールを弾いて下さい。演奏するに従って、反対方向に動いていく短い音のスケールも聞こえる点に注意して下さい。

シンセサイザでノートを演奏すると、ピッチとベロシティが stripnote に送信され、すべてのノートオフ・メッセージを排除されてノートオンだけが通過します。その後、ベロシティから 33 が引かれます。

・キーを押した際のベロシティが 33よりも小さくなるように、極めて、極めてソフトに演奏して下さい。

この結果、負の数値が、 - (マイナス)オブジェクトから出力されます。hslider はインレットで受信する数値を制限するため、0 より小さい値は生じません。そして hslider オブジェクトの Offset が 1 であるため、すべてのベロシティが少なくとも 1 になることは確実です。減少させられたベロシティは最終的に makenote の中央インレットに到着し、格納されます。

次に、ピッチ値は stripnote から出力され 127 を引かれます。これは、通常0から 127までのピッチの範囲が、-127 〜 0 になることを意味します。 61鍵のキーボードを使っている場合、ピッチ範囲は 36から 96までのため、その値から 127 を減じた結果は -91 から -31 になります。

この数値は、abs オブジェクトに送信されます。abs オブジェクトは受け取った値の絶対値(負でない値)を出力するため、ピッチの範囲は -91 から -31 ではなく 91 から 31 へ「下降する」ようになります。キーボードのより高い音を弾くにつれて、makenote に送信される値は低くなります。逆もまた同様です。

反転されたピッチは、makenote で、既に減じられているベロシティと結合され、ノートが送り出されますそして、その100 ミリ秒( 1/10 秒)後にノートはオフにされます。

まとめ

hslideruslider オブジェクトは slider と同様の機能を持ちますが、任意のサイズにすることができます。kslider は鍵盤形のスライダーで、その範囲はオクターブ数で指定します。kslider では、クロマチック・グリッサンド(半音階によりグリッサンド)、ダイアトニック・グリッサンド(全音階によるグリッサンド:白鍵のみ)のどちらも演奏可能です。

dialhslideruslider オブジェクトは、インレットで受信するすべての数値を制限します。これらのスライダを超える数値は、最大値、最小値にセットされます。slider とは違い、これらのスライダオブジェクトは、ドラッグを行なわなくても、シングルマウスクリックに応答します。

abs オブジェクトはインレットで受信した数値の絶対値を送信します。slider による制限と abs は、負の数値を避けるための2つの方法を示しています。(その他のオブジェクトでは、maximumsplit がこの目的にかなうものです)

参照

abs 入力された値を絶対値として出力する。
dial 画面上のダイアルを回すことで数値を出力する。
hslider 画面上のスライダーを動かすことで数値を出力する。
kslider 画面上のキーボードから数値を出力する。
split 数値の範囲を探す。
uslider 画面上のスライダーを動かすことで数値を出力する。