学研「大人の科学」付録シンセSX−150。これに外部に道具を加えてみようというものです。
PICを使った小道具を考えていますが、CPU無しでも何とかなるかも。 まずは、簡易MIDIインタフェースぐらいから製作したいと考えています。
SX-150のテスタ棒に電圧をかければ、音程が変わる。ということは、ここにCVをかけてやれば、MIDIからコントロールができそうです。
実際は、温度的な問題(温度補償されていない)や、CVのリニアリティの問題などがあり、安定性や実用性に疑問もあるのですが、とりあえず、外部からコントロールできれば、いろいろ面白いはず。
ソフトウェアは、できれば、PIC-MIDICVで作成したものをそのまま使いたい。外部回路でなんとかできれば、一番楽なはずです。
まず、SX-150にどんなCVを与えればよいのかを、調べなければなりません。テスタ棒の電圧がCVになるのですが、これが、ゲートのON/OFFも兼ねています。大まかに言えば、グランドに落とすと、音が止まるようなのですが、どのくらいの、スレッショルドなのか、気になります。とりあえず1台で測定。
最初に測定するのは、カーボンスバーの両端電圧。
左端(最小)の電圧は、1.658V。
右端(最大)の電圧は、3.294V。
音 | 電圧 | 差 |
---|---|---|
A | 1.83V | |
1octUp | 2.19V | 0.36V |
2octUp | 2.56V | 0.37V |
3octUp | 2.94V | 0.38V |
音程と電圧の関係。カーボンバーの一番左側のマークがおおよそ、Aの音だったので、これから、オクターブスパンで電圧を見てみました。
右の表が測定結果です。大雑把に言えば、オクターブ当たり、0.37V程度。もちろん測定誤差があるので、大体の数字です。
PIC-MIDICVのCPUからの出力(オペアンプを通す前)は、オクターブ当たり、0.47V程度です。これから考えれば、単に抵抗で減衰させるだけでオクターブスパンの調整ができそうです。
次に気になる発音停止のスレショルド電圧。ヴォリュームを用意して、SX-150のテスタ棒に当てて音の出なくなる電圧は、およそ、0.9V。これならば、ゲートオン時にダイオードで無理矢理引っ張っても、何とかなりそうな電圧です。
当面は、PIC-MIDICVのソフトをそのまま使い(PIC16F648A)、CCPの出力をローパスに通して、ダイオードを通してGATEで引っ張る。ダイオードの漏れ電流がそれほど問題でなければ、簡易版は、これでいけそうです。
信号 | i/o | 用途 | 接続 |
---|---|---|---|
RA0 | o | LED DRIVE | NC |
RA1 | o | LED DRIVE | NC |
RA2 | o | VREF OUT | NC |
RA3 | o | nc | NC |
RA4 | o | nc | NC |
RA5 | i | SW? | GND |
RA6 | - | xtal | セラロック20MHz |
RA7 | - | xtal | 同上 |
RB0 | i | DIPSW b0 | NC |
RB1 | i | RX | MIDI入力 |
RB2 | o | TX | MC |
RB3 | o | CCP1 | 出力回路(フィルター)へ接続 |
RB4 | o | GATE OUT | 出力回路(ダイオード)へ接続 |
RB5 | i | DIPSW b1 | NC |
RB6 | i | DIPSW b2 | NC |
RB7 | i | DIPSW b3 | NC |
ピンの接続は、左のとおり。PIC-MIDICVのCPUをそのまま使用するので、いろいろ、指定がありますが、今回は、MIDIチャンネルを1に固定します。ゲートの極性指定をグランドに落として、コルグ仕様にしておくのがミソ。
CCP1の出力は、パッシブのローパスを通って、スパン調整回路へ。それをSX-150のCVとします。GATEは、メインのCVのどこかで、電圧を引っ張るようにダイオードを通して接続。フィルターの後ぐらいで、いいのかも(ここならスパン調整で、若干電圧が下がるはずだから、ダイオードのVFが稼げるはず)。SX-150の受け側は結構インピーダンスが高い雰囲気なので調整用のボリュームも大きめで大丈夫みたいです。
実際にブレッドボードに組み立てて、動作検査しました(回路図参照)。
ゲートオフ用のダイオードの逆方向漏れ電流の影響は、やはり、あるようで、FETを使った擬似ダイオードに置き換えると、音程がやや、良くなった気がします。これも、心持なので、面倒ならば、小信号用のダイオードでも動作します(カソードをPICに繋ぎます)。
SX-150と接続します。GNDをSX-150のOUTPUTのグランドに、KEY-CVを鰐口クリップでSX-150のテスタ棒に繋ぎます。
シーケンサーなどのMIDI信号を、ボードのMIDIコネクタに繋いで、10kBのボリュームを廻して、オクターブスパンの調整をします。手元のSX150では、3オクターブ程度は、使えそうでした。
このシステムでの問題点を挙げます。
オクターブスパンの調整しかできないので、アンサンブルなど、とても困ります。もともと、本体がチューニングできません。
最初、5VのスイッチングACアダプタを繋いで試したのですが、美しいビブラートが自動的にかかってしまいました。安定化した実験用の電源に交換すると、ビブラートは取れました。現実的には、006Pなどの電池からレギュレータで5Vを作った方が良さそうです。
演奏してみると、ソロ演奏をする分には、それほど不満がありませんでした。
問題は、やはり、チューニング。アンサンブルでは、ちょっと、悲しいです。
トランスポーズに関しては、ソフト側で吸収できるのですが、チューニングとなると、ちょっと、精度が足りません。インタフェース側につけるならば、オペアンプが必要な気がします。これは、ちょっと、大げさになりそう。
MIDIのチャンネルは、ここに掲載している回路図どおり作ると、チャンネル1固定になります。PIC-MIDICVの方でゴタゴタと書いていますが、実際はPICの端子にチャンネル指定が出ていて、ここで切り替え可能。DIPSWなどをを付けておけば、随時チャンネルの変更ができます。
電源は、電池の006Pと、外部の安定化した+5Vのどちらも使えるようにしました(ジャンパー切り替え)。電池の高圧は、定ドロップタイプの三端子レギュレータXC6202P502TB。これは、秋月で@50のもの。レギュレータの入力側に1μの積層セラミックコンデンサをつけました。電池スナップで006Pを繋ぐようにしていますが、ここにACアダプタを繋いでも動作します。ACアダプタは6V以上、25Vぐらいまで使えるはずですが、消費電力を考えると9Vぐらいのものが適当でしょう。
出力は、2本の線。一本はグランドで、ミニジャックのスレーブに配線。これをSX-150のEXT.SOURCEに繋ぎます。もう一本がCV。これは先に鰐口クリップをつけて、テスタ棒を挟みます。
オクターブ・スパンの調整用のヴォリュームは、今回は半固定抵抗。多回転式のサーメット・ヴォリュームにした方が良かった気もします。操作頻度を考えると、外部に通常の10KBのボリュームをつけたほうが楽だったかも知れません。
オクターブスパンの調整は、オクターブを交互に弾きながら、調整するのですが、ヴォリュームを廻すと、絶対音高も上下してしまうので、調整しにくいです。SX-150の出力が小さいので、アンプを通してから、デジタルテスタの周波数カウンタである程度の当たりをつけるのも良いかもしれません。
ソフトウェアのV1.04では、音程が低すぎるので、トランスポーズが24(実に2オクターブ)程度、必要でしたが、V1.05ではこの点は解消しました。
回路上の注意点
特に入手が難しい部品はありませんが、フォトカプラのPC910の入手が若干困難かもしれません。秋葉原の鈴商で入手できました。
回路図 | sx150_midiif_1.pdf | 回路図です。 |
---|---|---|
プログラム | midicv648v105sx.hex | PIC-MIDICVのV1.05のオプションをSX-150用に設定しなおしたもの。大幅なトランスポーズは不要になった版。 |
プログラム | midicv648v104.hex | PIC-MIDICVのV1.04と同じもの。古い版です。シーケンサなどで+24程度のトランスポーズが必要。 |
SX-150の音源にノイズが欲しい!。なんとか、無改造で実現しようと思います。
CVをノイズで変調してやれば、ノイズになるはず。具体的には、テスタ棒でノイズ音源に触るだけで、実現できそう。 ちょっと面倒なのは、ノイズのレンジ。これをSX-150のCVの範囲に入れてやれば良いような気がします。
EXT.SOURCEに入れてやれば、アンプを付けるだけでできそうですが、こちらは、ゲートオフにできない。やはり、テスタ棒接続が便利っぽいです。
PICを使ったノイズ音源はChuckさんやRJBさんの先行作品があるので、出力をちょっと、変更するだけで何とかなってしまいそう。あまりにも、能がないので、表面実装品でコンパクトに作ってみようかとも思っているのですが、PICはともかく、チップコンデンサの手持ちがなくて、引っかかっています。電源は、当座、考えなくてもいいかとも…
例によって、プログラムは、「PICシンセパーツ」のものを流用します。CPUはPIC10F200-I/P、当面はDIP品で製作します。回路を最小に工夫するだけで何とか動きました。秋月のライターの最新版で書き込みができるようになっています。
なお、CPUに関しては、0-5Vのノイズを出すものなら何でもよく、Chuckさんや、RJBさんが作られた物も使えます。この場合は、ピン端子の配線変更が必要になります。
回路は、LPFを省き、抵抗だけで電圧の調整をしているものです。実際に接続するとLPF無しでも動作するので、これでよいと考えています(SX-150にLPFがあることだし)。
例によって秋月のC基板に実装しました。回路本体と電源回路(006Pのためのレギュレータとコンデンサ)を基板の端に寄せて配線。反対側には、薄いアルミ板を切ったものを基板にビス止めしました。これが、ノイズパネルになるわけです。
一応、電池無しで+5Vでも動作するように電源端子と、電源回路切り離し用のジャンパーを入れてあります。また、MIDIIFで電源スイッチが無くて不便したので、今回は、基板上に電源スイッチも載せました。
グランドをSX-150のEXT.SOURCEから取り、本機の端子パネルにテスタ棒で触るとホワイトノイズが出ます。フィルタのカットオフをやや絞ってエンベロープをかけてやれば、ノイズ音源のドラム音風。
また、ピッチEGも有効で、ノイズの音程?に、そのまま、エンベロープがかかった雰囲気になります。
問題は、本機を繋いだまま、SX-150の本体で演奏する場合。グランドを繋いだだけでも、本体の出音がおかしくなります。このときには、グランド(例えば、OUTPUTのコネクタ)を手で触る問題は解消します。ちょっと気に入らないのですが、実用上は問題ないと思い込むことにしました。
回路図 | sx150_noise_1.pdf | 回路図です。 |
---|---|---|
プログラム | 200noise.hex | 「PICシンセパーツ」にあるものと同じ |
masa921さん設計のSQ-150シーケンサ。ぐりぐりいじると面白そうです。アナログセレクタを使って、ヴォリュームを切り替えています。アナログセレクタにアドレスを与える部分とクロックの生成部分をPICで置き換えると回路が簡単になりそうです。
8ステップでいくなら、8ピンのPICでも十分。そのまま、機能を置き換えるのも面白そう。
少し大きめのCPUにして、機能を拡張するのも一案。ちょっと、考え付くものをあげて見ます。SX-150には不釣合いになりそうなところが、問題点。
本家のmasa921さんやtakedaさんがこの辺を手がけていらっしゃるとのことで、製作するのは、少し、待った方がいいかもしれません。同じようなものを作っても、仕方ないですものね。
せっかくだから、ステップ数を増やせるように作っておいても良さそう。
オリジナルはフリーラン走行ですが、せめて、動作指示をしたい。
ヴォリュームの先頭から数ステップでループするようにする。
各ステップを落ち着いて調整するためには、必要ですね。現在のステップを確認するためにLEDが必要かも。
GATEレベルのクロックでステップさせるものです。SX-150用と考えると不要の機能かも。
ループ/1ウェイなどです。
使われている特殊な?部品は、アナログセレクタの4051。ちょっと、調べなければいけません。