2017年4月25日火曜日

[Pduino]物理スイッチでのエフェクトOnOff

※完全に自己流のため、他に上手いやり方がありましたら是非ご連絡ください。

物理スイッチには色々種類がありますが、今回は単純に1回路をOnOffするスイッチで
エフェクターの機能を再現できるか考えてみました。


スイッチには
オルタネート(押すたびにOn・OFFが入れ替わる)
モーメンタリ(押している間だけOn。離すとOff。)
の2種類があります。
それぞれPuredataでエフェクトのOnOffをする際には工夫が必要です。

今回は

5V

スイッチ

アナログインプットA0(pinMode 54)

で接続してテストしました。
Puredata側のエフェクト回路の部分はいつもの簡易ディストーションに自作のspigot~です。


【オルタネートスイッチの場合】

フットスイッチやスライドスイッチ、トグルスイッチで入手が容易です。
押しボタンタイプもまぁ、無くはないです。

さて、考えた回路はこちらです。
まず、いつも通りポートを
[open 3(
で開けまして、
[pinMode 54 analog(
でアナログ入力 A0(arduino Megaの場合)を使えるようにします。

この状態でスイッチをOnOffすると
[arduino]
からメッセージが「常に」出力されます。
試しにprintでコンソールへ出力してみます。

Offの場合、
print:analog 0 0.2前後


Onの場合、
print:analog 0 0.9前後

analog は アナログ入力
0 は 端子番号
その後の数字は物理的な回路の状態により0~1までの間で変化・受信した値です。

※注意すべき点は、
端子を使えるようにするときは、すべての端子から数えた順番の
[pinMode 54 analog(
だったのに対し、
出力されるメッセージでは
analog 0 0.99
とアナログ端子内での順番に代わる点です。
上手く出力できない場合は見直してみてください。


必要な値は最後の0~1の値なので、他の不要な情報は
[route]
で削除します。
(入力された値にrouteで指定した文字があれば削除して左インレットから出力)
更に、値が常にフラフラ揺れるため、
>= 0.5
で値を1 or 0に置き換えて、EffectOnを制御するトグルボタンに送ります。
これでオルタネートスイッチの場合のエフェクトの切り替えはできます。

※もし、常に値がトグルボタンへ送られるのが気になる人は後述の
[change]
を使ってみてください。




【モーメンタリスイッチの場合】
押している間だけONになるスイッチです。
押しボタンタイプだと入手が容易ですが、
フットスイッチタイプは強度的なものもあり、
なかなか見つけづらそうではあります。

さて、モーメンタリースイッチの場合のPuredataの回路はこちら。
[>=5]
まではオルタネートスイッチと同じですが、
常にBangを打つが如く、フラフラ1 or 0の値がトグルボタンに向けて飛ぶため、
エフェクトOnOffの動作が不安定です。
このため、
[change]

[bang]
を間に挟みました。
これで動作が安定します。

※解説しますと、
[change]
は違う値が飛んでくるまでは、同じ値が飛んできても「何も出力しない」オブジェクトです。
違う値が飛んできて初めてその値を「1回だけ出力」します。

そしてこの後ろに
[bang]
を置きます。
エフェクトonのトグルボタンはbangが打たれる度にOnOffを切り替えするためです。

0 件のコメント:

コメントを投稿

【Puredata】ノイズゲートの作り方・考え方の備忘録【Noise Gate】

こちら にて作成したノイズゲートの仕組みについて簡単に解説します。 自己流なのであまり細かいところはツッコミ入れないでください。 【ノイズの基本的な処理について】 実際の波形を見ます。 ギターを弾いていない無音部分のはずがサーッというノイズが聞こえる事が多々あります...