チュートリアル18:
テスト 3 - 比較と決定

比較と決定

MIDI キーボードで弾いた音を調べて、その情報を基に次の動作を決定するパッチを書くことができます。この演習では、比較を用いた決定についての理解度をテストします。

・ MIDI キーボードで演奏されたノートを受信し、ノートがミドル C( MIDI ノート60)、もしくはそれより高い場合には、演奏されたピッチより1オクターブ低いノートと1オクターブ高いノートを演奏するパッチを作成しなさい。

ヒント

演奏されるピッチが「60以上」かどうかを検出するために比較が必要になります。

この比較に基づいて、オリジナルのピッチより1オクターブ低いノート(12半音低い)と1オクターブ高いノート(12半音高い)を演奏するかどうかを決定します。

オリジナルのピッチが60よりも小さい値の場合には、何もする必要はありません。しかし、ピッチが60以上の場合には、2つの新しい音が生成される必要があります。低いピッチを得るにはオリジナルのピッチから12を引き、高いピッチを得るにはオリジナルのピッチに12を加えなければなりません。

新しいピッチは、ノートオンとノートオフ・メッセージをシンセサイザに送信するために、ベロシティ(おそらくはオリジナルのベロシティ)と結合されなければなりません。

・ この問題に対する2つの可能な解答を見るために、パッチャーウィンドウ を右にスクロールして下さい。

解答 1

2つの解答では共に、演奏されたピッチが 60 以上の場合に検出できるように、関係演算子の >= を使用しています。それぞれの解答は、多少違った方法で比較の結果を用いています。

解答1では、比較の結果が真の場合に、数値12‐12をトリガするようになっています。ピッチの値は比較を行なわれる前に  オブジェクトの右インレットに格納されます。そして、ピッチが60以上ならば、>= オブジェクトは 1を送信し、sel オブジェクトにメッセージ -1212をトリガさせます。これら2つの数値はオリジナルのピッチに加えられ、その合計が noteout に送信されますが、そこで演奏された音のベロシティと結合され、シンセサイザへのノート・メッセージをトリガします。このプロセスはノートオンとノートオフの両方で生じるため、トランスポーズされたピッチは首尾よく演奏され、オフにされます。

解答2では、比較の結果が真の場合に gate を開き、ピッチを通過させます。そのため、60 以上のピッチだけが渡されます。

>= オブジェクトの位置は非常に重要です。それは、>=gate オブジェクトの右にあるため、>= が最初にピッチを受信し、ピッチがgate に到達する前に gate のインレットの開閉を行うからです。

ピッチが通過すると、1つのオブジェクトでは12を引かれ、もう1つのオブジェクトでは12を加えられます。その結果はピッチとして noteout に送信され、そこで(ノートオンとノートオフの両方とも)オリジナルのベロシティと結合されます。

注: MIDI キーボードからの音が両方のパッチに影響を及ぼさないように、解答2の noteinnoteout オブジェクトは MIDI チャンネル2だけを送受信するように設定されています。

まとめ

この演習では、 >= 60 という比較は、一方ではメッセージをトリガするために使用され、もう一方では gate を開くために使用されました。問題の解答にはどちらかの方法が組み入れられるでしょう。

テストを行なって決定する場合、次の質問を自問自答してみて下さい

  1. 決定するために何を知る必要であるでしょう?(何をテストするのでしょう?)
  2. テストが成功した場合(真の場合)、次にどのような動作を行なえばいいでしょうか?
  3. テストが失敗した場合(偽の場合)、次にどのような動作を行なえばいいでしょうか?