2023年1月22日日曜日

IchigoJamを楽器として使う実験〜SX-150 mark IIのOscillatorにする

以前のリベンジです。今回は、SX-150 mark IIをメインに使っていきます。以前は、PAM8403というD級アンプICを載せたモジュールを使ってケーブルを自作して、IchigoJamSX-150や同mark IIにつないでみましたが、ハウリングのような音が出てしまったり、音が安定しなかったりで実験に失敗してしまいました。その原因を、PAM8403モジュールからの出力が大きすぎるのではないかと考え、出力の小さい簡易な増幅回路(1石トランジスタ増幅回路)のモジュールを自作するか、抵抗を加えて出力を落とすかというようなことを考えていました。

そう思いながらAmazonでちょっと探してみると、ボリューム(可変抵抗)付きのPAM8403モジュール(GF1002)を見つけました。これを使ってしまえば良いかもしれないと早速購入して、ケーブルをはんだ付けしてIchigoJamからの電気信号をSX-150 mark IIにつなぐものを作ってみました。

入力側をIchigoJamの「SOUND」と「GND」につないで、出力側をSX-150 mark IIの「LINE IN」に接続してみました。すると、今回は音が出るようになりました。(できるだけ安定した電源を確保するために、IchigoJamの「VCC」と「GND」からPAM8403モジュールの電源を取りました)

この状態でSX-150 mark IIの「OUTPUT」に圧電スピーカーをつないでオシロスコープ(DSO 062)で測定すると、波形が変化していることはわかりました。しかし、耳で聴き取れるほど大きな音が出なかったので、いつものアンプ付コンパクトスピーカー(TVR35WH)をつないで音を確かめてみました。SX-150 mark IIの「CUTOFF」つまみを左右に回すと、フィルタがかかって音が開いたり閉じたりするような変化がありました。また、「RESONANCE」つまみを右に回すと、CUTOFF部分が強調された感じにはなるのですが、あまり強く変化しないことがわかりました。ちょっと残念だったのは、どうしてもノイズが入るのを防ぐことができなかったことでした。これは、電池を使っているためかもしれません。電源アダプタが使えるように改造した方が良いのかもしれません。

ということで、IchigoJamからSX-150 mark IIに電気信号を送って音を変化させることに成功しました。

2023年1月8日日曜日

IchigoJamからの電気信号は簡易なシンセサイザー(monotronシリーズ)のOscillatorになるのか検証する

以前の続きです。IchigoJamのピンソケット(「SOUND」と「GND」)からパルス(矩形波)を出して、それを簡易なシンセサイザーに入れて音が変化するかやってみています。今回使うシンセサイザーは、KORGの「monotron Duo」と「monotron DELAY」です。回路図を見ると、外部入力(aux)からVCF(Voltage Controlled Filter)につながっているようなので、これでもIchigoJamからのパルスを変化させることができそうです。(SX-150のときも同じことを思っていた)

例によって自作のケーブルを使ってIchigoJamからの電気信号をmonotron Duoの「aux」に入れるように配線して、前回作ったプログラムを使ってPS/2キーボードを操作して音を出してみました。SX-150ではうまくいきませんでしたが、今回はあっさり音が出てくれました。VCFを通って出て来た音をオシロスコープ(DSO 062)で測定すると、ノコギリ波のような波形を作ることができました。monotron DELAYの方でやってみると、フィルタがかかって波形は変化するもののDuoほどには変化しませんでした。

アンプ付きコンパクトスピーカー(TVR35WH)で音を聴いて確かめてみると、パルス(矩形波)が歪んだ感じになることがわかりました。monotron DuoのVCF(「CUTOFF」と「PEAK」)やmonotoron DELAYのVCF(「CUTOFF」のみ)のダイヤルを回すと、音の変わり具合を調整することができました。

という訳で、IchigoJamの電気信号は、monotron DuoやDELAYのOscillatorになることがわかりました。ここまでできたら、再度SX-150とつないで音を変化させるとか、KORGのvolca modulerとつないでみるとかといったことに挑戦してみたくなりました。

SX-150の方はmark IIもあるので、PAM8403(D級アンプIC)にボーリューム(可変抵抗)をつないだモジュール(GF1002)を見つけて購入したのでやってみたいと思っています。

volca modularの方は、その名の通りモジュラーシンセサイザーですので、こういう実験とは親和性が高いものと思います。どんどん沼にハマっていく予感がしますが、楽しいのでやめられません。

2023年1月3日火曜日

IchigoJamでPS/2キーボードを鍵盤のように使うプログラム

以前前回の続きです。この実験を続けているうちに、音を出すたびに「PLAY "C1"」コマンドを書いて実行するのが面倒に感じるようになりました。すぐに思いつくのは、IchigoJamにつないでいるPS/2キーボードを鍵盤のように使うことです。そこで、「IchigoJamチップチューン!? PLAY文とMMLで音楽演奏」を参考に、PS/2キーボードを鍵盤のように使って音を鳴らすプログラムを作ってみました。

110 K=INKEY()
119 IF K=ASC(”A”) PLAY “O2A-”
120 IF K=ASC(”Z”) PLAY “O2A”
121 IF K=ASC(”S”) PLAY “O2A+”
130 IF K=ASC(”X”) PLAY “O2B”
140 IF K=ASC(“C”) PLAY “O3C”
141 IF K=ASC(“F”) PLAY “O3C+”
150 IF K=ASC(“V”) PLAY “O3D”
151 IF K=ASC(“G”) PLAY “O3D+”
160 IF K=ASC(“B”) PLAY “O3E”
170 IF K=ASC(“N”) PLAY “O3F”
171 IF K=ASC(“J”) PLAY “O3F+”
180 IF K=ASC(“M”) PLAY “O3G”
181 IF K=ASC(“K”) PLAY “O3G+”
190 IF K=ASC(“,”) PLAY “O3A”
191 IF K=ASC(“L”) PLAY “O3A+”
200 IF K=ASC(“.”) PLAY “O3B”
210 IF K=ASC(“Q”) PLAY “O4C”
211 IF K=ASC(“2”) PLAY “O4C+”
220 IF K=ASC(“W”) PLAY “O4D”
221 IF K=ASC(“3”) PLAY “O4D+”
230 IF K=ASC(“E”) PLAY “O4E”
240 IF K=ASC(“R”) PLAY “O4F”
241 IF K=ASC(“5”) PLAY “O4F+”
250 IF K=ASC(“T”) PLAY “O4G”
251 IF K=ASC(“6”) PLAY “O4G+”
260 IF K=ASC(“Y”) PLAY “O4A”
261 IF K=ASC(“7”) PLAY “O4A+”
270 IF K=ASC(“U”) PLAY “O4B”
280 IF K=ASC(“I”) PLAY “O5C”
281 IF K=ASC(“9”) PLAY “O5C+”
290 IF K=ASC(“O”) PLAY “O5D”
291 IF K=ASC(“0”) PLAY “O5D+”
300 IF K=ASC(“P”) PLAY “O5E”
410 GOTO 110

「ASC」でキーボードからの入力を文字コードに変換し、「INKEY」に入れて「PLAY」で音を出すという仕組みです。ネットでいろいろ調べてみると「C」のキーを「C(ド)」に当てている例が多かったので、それに習ってプログラムしてみました。出来上がったプログラムを「SAVE0」で保存して、使うときに「LOAD0」で呼び出せるようにしました。
(「プログラムのほぞん」を参考にしました)

ところどころ不具合があって、何度かやり直しをしましたがようやくまともに動くプログラムになりました。音痴なところは「仕様」なのでとりあえず我慢することにします。