目次

VCO動作テスト

 アナログシンセサイザーで、音の周波数を変える
 ためには、VCO(Voltage Controlled Oscillator)
 を使います。

 安価に入手できるVCOのICに、NE555があります。
 次のようにして使います。




 CVOUTに電圧を与えると、対応した周波数の
 発振をするので、VCOとして使えます。

 IchigoJamでは、可変の電圧出力ができないので
 専用D/A変換器であるMAX525を使います。



 MAX525とNE555を接続して、VCOの動作テストが
 できるようにしていきます。

 NE555の基板は、以下。



 MAX525とIchigoJamの接続は、次のようにします。



 MAX525に、必要な情報を与えるためには、次の
 タイミングチャートに相当する信号線の変化を
 させればよいとなっています。



 サブルーチンを利用して、上のタイミングチャートで
 16ビットの情報を与えます。

300 ' MAX525 control
310 LET B,[0]
320 OUT 3,0
330 FOR X=1 TO 16
340   LET A,B & #8000 : LET A,(A >> 15)
350   OUT 1,A : OUT 2,1 : OUT 2,0
360   LET B,(B << 1)
370 NEXT
380 OUT 3,1
390 RTN

 出力したい16ビットの値を、配列の[0]に入れて
 サブルーチンを呼び出します。

 MAX525を動かすためには、初期化が必要で
 D/A変換器から電圧を出力するときにも細工
 をしないと駄目です。

 16ビットの内容を、どう設定するのかは
 次の表を参照。



 初期化には、16進数で#4000を送信すればよいと
 わかります。また、チャネル0へとD/A変換値を
 出力するには、#3000にD/A変換値を加えた値を
 求めて与えるとなります。

 初期化では、次のようにして対応できます。

100 LET [0],#4000
110 GOSUB 300

 NE555は、DISCHに電源電圧の2/3以上の値を
 与えると、発振します。

 NE555の電源電圧を5Vとすると、2V以上の
 電圧を与えられると、発振周波数を変える
 ことが可能。

 MAX525は、12ビットの分解能をもつので1を設定すると
 (5/4096)Vの値になります。これが2Vになるように値を
 かけて計算しておきましょう。

 N*(5/4096)=2 より N=8192/5 で 1638 程度。

 NE555の電源電圧が5Vのときには、最大5Vになるように
 上限が必要です。

 N*(5/4096)=5 より N=4096 で 4000 程度。

 配列[0]に、1700から4000までの値を格納して、音が
 どう出てくるのかを、実験してみます。

100 ' test VCO
110 OUT 3,1
120 LET [0],#4000 : GOSUB 300
130 GOSUB 200
150 LET [0],#3000 : GOSUB 300
160 ? "exit"
170 END
200 ' play sound
210 FOR I=0 TO 23
220   LET J,#3000 + 1700 + 100*I
230   LET [0],J : GOSUB 300
240   WAIT 120
250 NEXT
260 RTN
300 ' MAX525 control
310 LET B,[0]
320 OUT 3,0
330 FOR X=1 TO 16
340   LET A,B & #8000 : LET A,(A >> 15)
350   OUT 1,A : OUT 2,1 : OUT 2,0
360   LET B,(B << 1)
370 NEXT
380 OUT 3,1
390 RTN

 これで、スピーカから出力される音の周波数が
 高くなっていくのがわかります。

 効果音を出したいときには、配列に値を入れて
 おいて、サブルーチンを呼び出す仕様に設定と
 なります。

100 ' sound effect
110 OUT 3,1
120 LET [0],#4000 : GOSUB 300 
130 LET [1],2000,1800,1900,2400
140 LET [5],2800,3000,2200,2100
150 FOR I=1 TO 8
160   LET [0],[I]+#3000
170   GOSUB 300
180   WAIT 120
190 NEXT
200 LET [0],#3000 : GOSUB 300
210 ? "exit"
300 ' MAX525 control
310 LET B,[0]
320 OUT 3,0
330 FOR X=1 TO 16
340   LET A,B & #8000 : LET A,(A >> 15)
350   OUT 1,A : OUT 2,1 : OUT 2,0
360   LET B,(B << 1)
370 NEXT
380 OUT 3,1
390 RTN

 ラベルを利用すると、もう少し見やすくなります。

100 ' sound effect
110 OUT 3,1
120 LET [0],#4000 : GSB @MCON
130 LET [1],2000,1800,1900,2400
140 LET [5],2800,3000,2200,2100
150 FOR I=1 TO 8
160   LET [0],[I]+#3000
170   GSB @MCON
180   WAIT 120
190 NEXT
200 LET [0],#3000 : GSB @MCON
210 ? "exit"
300 @MCON
310 LET B,[0]
320 OUT 3,0
330 FOR X=1 TO 16
340   LET A,B & #8000 : LET A,(A >> 15)
350   OUT 1,A : OUT 2,1 : OUT 2,0
360   LET B,(B << 1)
370 NEXT
380 OUT 3,1
390 RTN


目次

inserted by FC2 system