テルミン的な何かを作った

I/Oピンに抵抗とコンデンサの回路をつないで、電圧の降下時間で抵抗値を測るという
サンプルがあったので、それを使った「抵抗値で音程が変わるプログラム」です。

まずは回路。

I/Oピン(P7) – GND 間にCdSセルと0.1μFが並列に入っているだけです。
※Propeller は割と丈夫ですが、この回路ではチャージ時に電流が流れすぎるので、
 回路保護のため I/O ピンから RC 回路の間に100Ω以上の抵抗を足すべきです。

コードはこちら。

CON
  _clkmode = xtal1 + pll16x
  _xinfreq = 5_000_000

VAR
  long RCValue, IntegerTemp, RCtemp

OBJ
  RC    : "RCTIME"
  syn   : "Synth"

PUB start
  repeat
    RC.RCTIME(7,1,@RCValue)
    syn.Synth( "A", 10, RCValue / 10 - 300 )

これも非常にシンプルです。
RCTIME は上記回路の電圧降下時間を測るオブジェクトで、
Synth は指定周波数の矩形波を発生するオブジェクトです。

CdSセルに手をかざすことで抵抗値が変わり、テルミンのような音が出ます。
周波数調整は RCValue を計算している部分を変更します。

サンプル音 : ダウンロード (音量注意)

ストロー等で口の中に音を導けばトークボックス風な遊びもできます。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。