TK80/BSの
シンセシステムを復活/拡張したい〜
その16
16stepアナログシーケンサ完成
MSP430−USB−MIDI変換ボード
2017年
12月9日
先週の続きです。16ステップアナログシーケンサのクオンタイズステップの不具合解析を行います。アナログディスカバリー(USBロジックアナライザ)を会社からもって来るのを忘れたので、2chの小型オシロでタイミングを見ました。原因はクオンタイズステップをカウントするダウンカウンタのロード信号を生成するコンデンサの実装ミスでした。680pFのコンデンサに間違えて100pFを実装していました(笑)。
クオンタイズステップの動作の動画を撮りました。LEDが0000、0001、0011、0111、1111に変化します、それぞれ1、2、4、8、16クロックに対応してます。
16ステップアナログシーケンサの完成したところで、TK80シンセシステム全景を撮ってみました。
12月10日
曲データに16ステップで新しくテンポを付けます。0〜Fが16ステップシーケンサの1〜16に対応します。
VCAの出力モニタLEDが暗いので制限抵抗を小さくしました。逆にディレイドモジュレータの方は明るすぎなので、次回、再調整予定です。
VCFのボリュームでガリが出ているものがあるので、接点復活剤を塗ります。細い筆を使うと他に掛からずに塗れます。その後、何回かボリュームを回転させます。少し良くなりました、
12月16日
VCFのカットオフのボリュームの位置がずれているものがあるので調整しました。
このVCFの回路ですが、ウェーブキットの”スーパシーケンスエフェクタ”が元みたいです。ここに当時の広告があります。”ピンクフロイドに使われている〜”これは”狂気”の”On The Run”のことですね。
ディレイドモジュレータの出力モニタ用のLEDの制限抵抗を大きくしました。
DCO4は出力にポップノイズが出るのでDACとオペアンプを交換しました。ノイズは出なくなりました。
12月17日
夏に作製したDCO用の電圧異常検出回路を取り外しました。不具合の原因はバイパスコンデンサが12Vに接触していたのが原因と思われます。
TK80の拡張ボードを固定するアクリル製のステーが割れたのでレーザ加工機で再作しました。キーホルダもついでに再作しました。
SMFをシンセサイザ用内部データに変換するプログラムですが、以前から1小節のステップ数が0xC0(192)ではない曲はうまく変換できないものもありました。以下は変換できなかったBWV540の楽譜です。データ確認のため楽譜を印刷しました。BWV540はトッカータだけで9分近い大作です。プログラムを修正して正しく変換できるようになりました。楽譜はIMSPLからダウンロードできるので便利です。MP3はここです。
12月23日
シ
ンセサイザ本体が一段落したので、MSP430を使ったUSB−MIDIをMC80+バスに変換するボードの作製を再開します。前回は別ページでUSB−MIDIデバ
イスとしてWin7から認識されるところまでプログラムを作成しました。タカチの200x80x140mmのアルミケースに入れるために基板を小さくします。
基板は奥行きを縮めてコネクタを2つに減らしました。
TK80とMSPからのバスを切り替えるためのHCT245バッファと周辺ロジックのICソケットを載せました。
下はTK80のシンセサイザ用の8255インターフェース基板です。MC80+との接続は30ピンの圧接コネクタです。コネクタのピン配置を確認しておきます。単純に1番ピンからPA0−7、PB0−7、PC0−7、GNDの順番に並んでいました。
TK80で演奏した時のバスのタイミングをアナログディスカバリで確認しておきます。
友人Sの作成した8chシーケンサを動作させます。以下はリフレッシュ時のタイミングです。CV用のS/Hのホールドコンデンサをリフレッシュしているタイミングです。8〜1chの順番でリフレッシュしていました。
左はアドレスの幅です。約18uSecです。続いて右はデータです。セットアップは約8uSecでした。
タイミングも分かった所で、MSP430にテストプログラムを追加します。USBのAPIを使って4バイトづつエンドポイントからデータ確認用のメモリに書き込みます。は
じめに、プログラムチェンジなどの余分なイベントを入れないで、Dominoから1chのみでMSPに送信してみます。先頭の1バイトはUSB−MIDI
にMIDIイベントを乗せるために追加された、ケーブルナンバ(上位4ビット)とコードインデックス(下位4ビット)です。正常にPCからデータが来ているようです。
次に同じく余分なイベント無しで、3ch分送ってみます。
左が演奏開始時です。1chが出て、続いて3ch、その後1chが続いています。右はストップボタンを押したところです。2chが出ています。最後は3chが書かれています。データの通り、多チャンネルでも正常に受信できているようです。
ここで、ちょっと寄り道。MSP430のUSB−MIDI変換ではノートオン、オフ以外のすべてのイベントは無視します。ノートオンに含まれるベロシティの扱いをどうするかですが、現状のままではベロシティに対応することはできません。MSP430の基板に8chのDACを載せてEGの振幅を制御するか、VCAを追加する必要があります。こ
のシンセサイザのEGは”エフェクター自作&操作術'81”の電圧制御EGを2個合わせて基板化しています。回路を見てみると、回路の赤枠の+15V電圧をDAC
に接続すればEGの振幅が簡単に制御できることが分かりました。この3本の+15Vを一度、浮かせてボリュームを付けて動作確認しまし
た。
12月24日
結果は良好で、外付けしたボリュームの電圧でEGの振幅が制御できていることが確認できました。基板にDACを載せる方向で進めます。
Dominoから普通に演奏するとノートオン/オフ以外のイベントもいろいろ流れてきます。編集しないでそのままSMFを演奏してみました。左は広範囲に見えるようにMSP430の開発環境のCCS
でメモリエリアをファイル化して、バイナリエディタで表示したところです。パラメータチェンジとプログラムチェンジが発音前に送られていることがわかります。こ
れらのデータは無視する必要があります。
プログラムを修正してノートオンとオフ以外は無視するように変更しました。0x09と0x08のコードインデックス以外はメモリに取り込まないようにして、メモリダンプウインドで確認します。余分なイベントがメモリに入らなくなりました。
MC80
+は元々普通のVCO用に作られているので、上記にもあった、ホールドコンデンサのリフレッシュを行わないとVCOやVCFのキーフォロー時にCVが少しづつ下がっていきます。当初、アク
ティブセンシングを受信したらリフレッシュを行う予定でしたが、Dominoからは送信されないようです。そこでMIDIクロックをオンにしてみましたが、
こちらは多数来すぎて、オーバヘッドが大きいです。4分音符で24回なので大量です。これは使うのをやめて、別の方法を考えます。
プ
ログラムを変更して受信したノートオン/オフイベントによって8ビットのデータと4ビットのアドレスを制御するプログラムに変更しました。受信バッファは
1イベント(4バイト)に変更しました。早速、MC80+のコネクタをTK80から外して、MSP430のGPIOに直接接続してみます。
正常に動作しているようです。短い動画を撮ってみました。
プログラムは基本的に動作しているようなので、基板の作製を進めます。ベロシティに対応するため、8chのDACを選定して追加する予定です。
TK80用の簡易ICEで使用しているXPマシンでは”MIDICONVMC80+”というデバイス名ではなく”USBオーディオデバイス”になります。XP上のDominoからも正常に制御できることを確認しました。平均律クラヴィーア1番のプレリュードを録音してMP3にしました。やはりテンポが制御されるといい感じです。
12月30日
MSP430ボードの続きです。昔、廃棄品になったものを取っておいたデバイスです。HCT/HCで使えるものを探します。HCT32と04がありました。MC80+のパラレルインターフェースのバッファはHCT245です。HCT/HC123は見つからなかったので、発注しておきました。部品は年明け予定です。
GPIO制御の128x64のLCDを下ボードを通して動作確認を行いました。ベロシティ用のD/Aのアドレスはノート/ゲートのアドレスと共用するため、上記の32、04と123を使ってD/A用のライト信号を生成する回路を追加しました。
早速、デバイスをソケットに実装してみます。裏側はこんな感じです。ベロシティ出力用の20ピンのコネクタも追加しました。
の
12月31日
ベロシティ用のD/A用のライト信号が動作しているか確認するために、ロジックアナライザ用のコネクタを追加しました。
早速、確認していみます。アドレスが0と9以外の1〜8の時にライトを出力します。D/Aのアドレスは3ビットなので、8chはアドレス0に出てきます。WRを細いパルスにしているのは123ですが、とりあえずLS123で代用中です。
MC80+内のS/Hをリフレッシュするコードを追加しました。USBからデータが来ていないと判断した時に、ハードウェアタイマを使って、約50mSec間隔で1CH分フレッシュします。
だいぶ前に友人Sから貰った3300ppmの温度補償用抵抗を旧モジュールから再生したVCOに組み込んでみました。ペアトランジスタにシリコングリスで熱結合しておきます。