2023年2月6日月曜日

4 keyミニキーボードを使って楽器のインターフェイス(ガジェット)を作ってみた

このところ、IchigoJamを使って電子楽器を作る実験をしてきました。マイコンボードを使って簡易な電子楽器を作ろうと考えると、Arduinoとかmicro:bitあたりを使うのが定番な感じがしますが、本体でプログラムができるところがIchigoJamの強みではないかと思っています。しかも、PS/2キーボードがメイン(IchigoJam RはUSBキーボード対応)とは言え、市販のキーボードを直接つないで使えるという魅力もあります。(その意味では、Raspberry piScratchの組み合わせも良いと思います)

そんな中、電子楽器づくりに使えるガジェットはないかと思って探していたところ、Amazonで4 keyしかないミニキーボード(SIKAI CASEの製品らしい)を見つけて衝動買してしまいました。かなり昔、ArduinoやPicoBoardにつないで電子楽器のインターフェイスとして使うものを電子工作していたのですが、作ったあとから本職が忙しくなりすぎてしまって(言い訳)長いこと放置していました。(そろそろこっちも何かやってみたい)

早速、購入した4 keyのミニキーボードをMacにつないで動作確認してみました。まず、4つのどのキーを押しても「c」が打ち込まれるようになっていて、デフォルトではどうにも使いにくいことがわかりました。キーの割当を変更したいのですが、このミニキーボードの設定をするためのソフト(MINI KeyBoard.exe)がWindowsにしか対応しておらず、自室にWindowsで動いているPCがないので設定ができません。このところWineの需要もなかったため、自宅のPC環境を再構築してからWineも使っていませんでした。そこで、不本意ながら別のWindows機を使わせてもらって、4つのキーをそれぞれ「1」「2」「4」「8」に設定しました。(この後、時間を見つけてWineHQの設定をしましたが、MINI KeyBoard.exeの起動には成功したものの、ミニキーボード自体との接続がうまくいきませんでした)

次に、この4 keyミニキーボードはホットスワップ対応なので、キースイッチ(Cherry MXの互換品)を元々ついていた赤軸(OUTEMU)から自宅に在庫していた黒軸(AJAZZ)に変更しました。この黒軸キースイッチは、だいぶ昔にHARD OFFでジャンク品として売られていた不動箇所があるキーボードから救出したもので、キーボードの筐体から取り外して別の自作キーボードに使おうと思って在庫していたものでした。赤軸と同じリニアタイプですが、少し反発力が強く楽器としての演奏感を出せたら良いと思って交換することにしました。実際は、少しは重くなったものの大きくは変わらないので変える程のことではなかったかもしれません。

ここまできたら、キーキャップを交換して楽器っぽくしてみようと考えて、タイプライター風のキーキャップにシルバーのスプレーでペイントを施して、管楽器のピストン風にしてみました。出来上がりは以下のとおりです。

これを使って楽器のように演奏できたらと妄想しています。IchigoJamだとUSBキーボードに対応したIchigoJam Rを使うか、Raspberry PiとScratchの組み合わせでやるか思案中です。「吹く(音を出す)」という動きをどうするか、持ち歩いて演奏できるようにするにはどうするか、まだまだ解決しなければならないことがあります。

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」で呼び出せるようにしました。
(「プログラムのほぞん」を参考にしました)

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

2022年12月27日火曜日

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

前回の続きです。IchigoJamのピンソケット(「SOUND」と「GND」)からパルス(矩形波)を出して、それを簡易なシンセサイザーに入れて音を変化させてみたいと思います。まずはGAKKENの「大人の科学」の別冊マガジン「シンセサイザー・クロニクル」に付録していた「SX-150」とその後継のSX-150 mark IIを使ってやってみます。回路図を見ると、外部入力(「EXT.SOURCE」か「LINE IN」)からVCF(Voltage Controlled Filter)につながっているようなので、IchigoJamからのパルスを変化させることができそうです。

ちょっとつまずいたのは、電池の問題でした。しばらく電池を使うものをいじっていなかったので、電池の在庫を切らしていました。普段は充電池や電源アダプタで事が足りるため、普通の電池を使っていません。SX-150も電源アダプタ駆動に改造しようかとも思っていたのですが、まだ手を付けていなかったので電池が必要です。試しに充電池で動くかどうかやってみたのですが、思うように音が出ません。普通の電池が1本当たり1.5 Vで、充電池は1.2 Vです。SX-150は4本の電池が必要なので、普通の電池では6 Vとなりますが、充電池では4.8 Vしかありません。アナログ・シンセサイザーは、電圧の違いが問題になることがあるので、電圧が足りないと音が不安定になります。(簡易なシンセサイザーなので、電源からの昇圧回路は含まれてないのだろうと推察します)取り急ぎ、近所の家電量販店で電池を調達してきました。これで無事に思った通りの音が出るようになりました。

ここまでで準備が整ったので、IchigoJamとSX-150をつないで音を出してみます。前回作ったケーブルをIchigoJamの「SOUND」と「GND」に挿して、ミニジャック側にTSケーブル(モノラルミニプラグ)を挿してSX-150につないだのですが、微妙に音が安定しません。しかも、音が聴こえてもかなり音量が低い状態です。このことから、IchigoJam側の出力が小さすぎて圧電スピーカーでは音が聴こえるけれど、SX-150のOscillatorとしては使えないことがわかりました。

次にできることとすれば、IchigoJamとSX-150の間に増幅(アンプ)回路を入れること。つまり、IchigoJamの出力信号を増幅させてSX-150に入力するということです。たまたま、「PAM8403(←データシートのPDF)」というD級アンプICを積んだアンプモジュール(別の需要があってAmazonで購入していた)があったので、これを使ってみることにしました。IchigoJamからの電気信号をアンプに通してSX-150に入れるための道具を作りました。

気合を入れてがんばってみましたが、結論から言うとうまくいきませんでした。IchigoJamから「PLAY”C1”」で音を出しているときは、「ド」の音の電気信号が出ている感じなのですが、何の音も出していないときには別の電気が流れてしまうようで、ハウリングのような音がします。また、出ている音自体も、とぎれとぎれで何かが足りない感じです。これは、SX-150の「OUTPUT」にアンプ内蔵コンパクトスピーカー(YAZAWATVR35WH)をつないでも同じです。PAM8403のアンプモジュールの電源をIchigoJamの「VCC」と「GND」にしても同じでした。増幅が大きすぎるのかもしれません。となるとトランジスタで1石アンプでも作ってやった方が良いのかもしれません。もう少し時間がかかりそうです。

2022年12月17日土曜日

IchigoJamの音を増幅させる

以前の続きです。圧電スピーカーで音を鳴らすところまではできたものの、この音を増幅させるにはアンプにつながなければなりません。そこで、IchigoJamのピンソケット(「SOUND」と「GND」)にジャンプワイヤーのオスを挿してステレオミニピンジャックに変換するケーブルを自作しました。SOUNDがステレオになっていないので、LとRの両方をSOUNDにつなぐようにハンダ付けをしました。

これを使って電池駆動の簡易なアンプ内蔵コンパクトスピーカー(YAZAWATVR35WH)につないだところ、問題なくIchigoJamの音を増幅させることができました。また、ダイソーのUSB給電300円スピーカーにもつないでみましたが、こちらの方が大きな音量で鳴らすことができました。簡易なチューナー(MORRISというギターメーカーのクリップチューナー=CT-3)で測定すると、「PLAY”C”」は間違いなくCの音で、Dは少し高め、Eは少し低めに測定されました。これは、以前オシロスコープ(DSO 062)で測定した値と見比べると、納得できる結果です。
#「12平均律と周波数」を参考にしました。

ここまで来たら、次に考えるのは音色を変えることです。IchigoJamのパルス(矩形波)をOscillatorとして使えば、単に音楽の演奏だけでなく音そのもののを変えて表現のバリエーションを増やすことができると思います。IchigoJamをつなぐ楽器の候補がいくつかあるので、試してみたいと思います。

GAKKEN

KORG

2022年12月12日月曜日

IchigoJamの楽器としてのポテンシャルを確かめる〜IchigoJamから出せる電気信号

以前の続きです。DSO 062というオシロスコープを直したので、IchigoJamから音を出したときにどのような電気信号が出ているのかを調べてみることにします。今回使ったIchigoJamは、基板に圧電スピーカーが組み込まれたIchigoJam Sですが、別に用意した圧電スピーカーを「SOUND」と「GND」につないで、オシロスコープにつないだプローブの赤(+)を「SOUND」側に、黒(-)を「GND」側につないで測定しました。

まずは、Google先生に翻訳してもらったDSO 062の取扱説明書を見ながらオシロスコープの使い方を学びました。正直なところ何となくわかったようなわからないような状況で、とりあえず使ってみてどうなるのか確かめながらやってみることにしました。いろいろと設定をいじりながらやってみて、わかったことをまとめておきます。

〈DSO 062の設定〉

  • 「x1」(電圧値の倍率)…x5、x2、x1 から選択
  • 「1V」(測定する電圧値)…GND、1V、0.1V から選択 ※上の電圧値の倍率と組み合わせて使う
  • 「DC」(測定する電圧)…AC、DC、Freq から選択
  • 「1ms」(測定する時間)…0.5ns〜50ms から選択 ※選べる時間はいくつかの値に決められている

この設定でIchigoJamから「PLAY “C1”」でC(ド)の音を出すと、1v弱の電圧でパルスが出ているのがわかりました。(DSO 062の反応がイマイチなので、ちょっと長めに鳴らしてやらないとうまく表示されませんでした)正確な数値を測るのは難しいのですが、大体100Hzよりも大きいくらいかなといった感じでした。そこで、DSO 062の「DC」を「Freq」にして周波数を測定すると、”C”が131Hz、”D”が148Hz、”E”が164Hzあたりでパルスが出ていることがわかりました。
(より長く音を出して比べるために、「PLAY “C1C1C1 D1D1D1 E1E1E1”」として測定しました)

BEEPとPLAYで同じ音を探してみると、60と”C”、53と”D”、48と”E”が同じ周波数になる感じでした。ついでに楽器用のチューナーで調べてみようと思ったのですが、音が小さすぎて反応してくれませんでした。音を増幅する何かが必要なようです。

131Hzというのは、音楽的には「A(ラ)=440Hz」とした平均律の「C3」の音です。1オクターブ上の「C4」は、262Hzです。「PLAY “<C1>”」として1オクターブ上のC の音を出すと、オシロスコープでも262Hzになっていました。これはちょっと感動的です。本当は、小数のあるもう少し細かな数値のはずですが、DSO 062では測定できないので整数の範囲で良しとします。D(レ)の148Hzはちょっと高いかなといった感じでしたが、その1オクターブ上のDは、293Hz程度とそれほど高くないので、単純に整数倍しているわけではないのかなと思いました。このあたりの実装は、音によって調整されているのかもしれません。

ここまで来たら、次回は音を増幅させてスピーカーで鳴らしてみたいと思います。(道具を作らないとね)

 〈参考サイト〉