ミニMIDIキーボード完成

以前からシンセの音色確認用に小型のMIDIキーボードを作ろうと思っていたんだけど、とりあえず完成したので公開する。

前にキーの部分だけの実体配線図を公開していたんだけど、いろいろ考えた末予定変更し、C基板2枚重ね単3乾電池1本駆動方式にした。

完成品の写真はこれ。

マイコンは当初PIC16F690を使用予定だったけど、基板の大きさの制約からPIC16F688に変更した。

それに伴ってキースキャンの方式を2×8から4×4に変更した。PORTAのWeakPullupをフル活用して部品数を極限まで減らしたが、プログラムは結構ややこしくなった。まぁこの辺の加減ができるのがマイコンのいいところで・・・w。で、回路図がこれ

電源は、とにかく持ち運びを考えて乾電池1本にこだわり、昇圧することで5Vを得ることにした。最近は昇圧ICも安くなったので9V電池を使うよりもスペース的にもコスト的にも有利なのではないかと思う。

基板の配線は、上下2枚のC基板をラッピング用のICソケットを加工して接続させた。他の方式でもいけると思うが、この辺はスマートにいきたかったので・・・w。MIDI端子は上基板に大穴を開けて(この加工が一番面倒だった)古いPCから取ってきたLEDなどの配線を加工してピンヘッダをつけた。この部分もこだわらなければ普通に配線の直づけで構わないと思う。上下の基板間は20mmのスペーサではさんで取り付ければ電池と干渉することはない。ICSP端子はプログラムを書き換える必要がないなら要らないと思う。実は私の製作物はほとんどの場合、このICSP端子にキャラクタLCDを接続して情報表示を行ってデバッグなどに使用しているので必須なのだ。

で、プログラムがこれ(右クリックでリンク先を保存でDLしてから拡張子をhexに変更してください)

mid688.hex Ver.1.01(2010/2/23更新 起動音のライニングステータス使用をやめた)

mid688.hex Ver.1.02(2010/2/24更新 起動時に200msの待ち時間を挿入)

mid688s.hex Ver.1.02s(2010/2/25更新 起動音を出さないサイレントバージョン)

mid688.hex Ver.1.03 (2010/3/3更新 出力ポート初期化バグを修正)

こんな感じで使用する。

    • nao_denha
    • 2011年 2月 16日

    はじめまして、アナログシンセ掲示板から来ました、原田と申します。
    ミニMIDIキーボードを追試させて頂いたのですが、”ド”を押すと”ミ”が出てしまいます。すべての鍵盤キーが4半音ずれていますが、実際はどうなのでしょうか?回路図中のABCDを入れ替えるだけでは、octup、octdnキーの関係で出来なさそうです。大変お手数ですが、検証して頂けないでしょうか?

  1. 追試していただいたみたいでありがたいことです。
    プログラムですが、私の勘違いでC4=60のところを64にしていました。ということですのでミの音が出るのが正解です。
    とはいえ、これでは不便なのでちゃんとC4の音が出るように直しておきましたので、再度HEXをDLして使ってみてください。
    いつもは自作のアナログシンセに接続してチューニングをC(正確にはラでA)で取っていたので全く気がつきませんでしたw

    • nao_denha
    • 2011年 2月 16日

    早速ご対応頂きまして、ありがとうございます!
    修正済みhexの動作を確認しました。

    自作アナログシンセにつないだときはミニMIDIキーボードの電源投入時に「ピラッ」と鳴りますが、RolandA-880経由で他のメーカー製シンセにつないだときはその音が無く、低い音が出っぱなしになったりします。oct up,dnキーを押せば止まりますので使用上問題ありませんが、念のためご報告します。

    大 感 謝 !

  2. 実は、電源投入時にピロっと音が鳴るように仕込んであります(昔のPC-98とかみたいにw年がばれるって?)。でも、低い音が出っぱなしになるのは変ですねぇ。オクターブ切り替え時にはオールノートオフを送っているので止まるとは思いますが、ちょっと私も調べてみましょう。

    • nao_denha
    • 2011年 2月 16日

    挙動を調べてみました。
    電源投入時の「ピポ」は64,,66ですね。
    「ピポ」も鳴るときがたまにありますが、たいていはNote#0,32,64,65,66が鳴りっぱなしになります。#32の頻度は他に比べて少ないです。

  3. ロジックアナライザを使ってチェックしてみました。解析結果は以下の通りです。
    電源投入から
    200ms後に0x90,0x40,0x40
    100ms後に0x40,0x00
    100ms後に0x42,0x40
    100ms後に0x42,0x00
    このあとはキーインまで何も出ていません。
    最初はPICの初期化時に短いパルスか何かが出ているのかもしれないと思っていましたが、それは見られませんでした。
    このことから、データは正しく送出されているみたいです。
    ただ、この起動音だけはランニングステータスを使用して0x90を省略しているので、もしかしたら音源によっては誤作動しているのかもしれません。
    そこで、ランニングステータスを使用しない様にプログラムを修正しましたのでお試しください。

    • nao_denha
    • 2011年 2月 23日

    こんばんは。
    今度は以前のような鳴りっぱなしの症状は”ほぼ”なくなりました。
    ですが、出力が安定しないようです。
    本機→E-mu0404→MIDI-OX→E-mu0404→音源とつないで出力を5通りMIDI-OXでサンプリングしました。
    http://www.denhaku.com/midiout.zip
    正規にnote#64,66のみが電源投入毎に続く時もあります。
    一度PCに取り込まれる(E-mu0404を通る)とこうなるようです。
    直接音源等につなぐと正常なときとnote#66しか鳴らない時があります。

    以上、今回のご報告でした。

  4. ログを見る限りにおいて、一番最初の1音転送(0x90,0x64,0x40)がうまくいっていないみたいです。その後はとりあえずちゃんと送信(受信)されているみたいです。
    考えられる原因としては、電源投入時の電源が安定してないうちに送信されたなどが考えられます。昇圧ICの立ち上がりが遅いのかもしれませんので、私の方でもちょっと調べてみます。

  5. 電池の電圧や負荷状態によっては電源の立ち上がりが不安定になることもありそうなので、起動時に200msの待ちを挿入してみました。私の環境では、Edirol UM-1+MIDI-OXでログを取っていますが、通常では変なデータが送信されることはありませんでした。ただ、電源をON→OFF→ONをカチカチっとやると最初の1音のみの転送ができないことがたまに出たので、待ち時間を入れることにしました。最初の1音のNOTE OFFは正しく送出されているので、100msの待ちでよいのですが、念のため倍の200msにしてあります。お試しください。

    • nao_denha
    • 2011年 2月 24日

    6882試しました。
    以前とほとんど変化が無いようです。
    相変わらず電源投入時のnote#64がどこかへ行ってしまいます。
    電源はCR2032を昇圧してますが、念のため単3電池2本に換えましたが同じでした。
    ところで消費電流は4mA程度で正常でしょうか?

  6. 私のバージョンでは1.5Vなので7.5mA程度流れています。たぶん2本だと4mAくらいになるでしょう。ところで、昇圧後の電圧は正常でしょうか?5Vを大きく下回っているとMIDIのカレントループの電流が少なくなってしまいます。この辺に問題があれば、昇圧コイルやコンデンサなどの不具合が考えられます。また、MIDI出力の220Ωを小さくするなどすればしのげるかもしれません。また、起動音のないバージョンをアップしておきますので、電源ON後一番最初に送出する音が正しく発音するか確認してみてください。

    • nao_denha
    • 2011年 2月 25日

    電圧は5V来ています。
    起動音なしバージョン試しました。
    MIDI-OXで見ると、電源オン後にnote#0,Vel0が507個受信されます。
    タクトSWでの発音は正常です。
    作業上問題ありませんので、このままでいいような気がしますが、デバッグには協力させて頂きます。

  7. 先日のログにもあったので気にはなっていたのですが、0のデータを大量送出されているみたいですね。私の環境では全く出ていないので気になるところです。ログからはNOTE OFFを検出しているので、0x80,0x00,0x00のデータが送出されている模様です。シリアルデータ的に考えれば時々パルスが発生していることになります。このことから、何らかのノイズがMIDI信号に乗っている可能性があります。電源に問題がなければはんだ、配線不良かその他の外的なノイズがMIDIケーブルなどに加わっていることも考えられます。確認していただけるとよいと思います。

    • nao_denha
    • 2011年 2月 28日

    今テストで使っている基板直出しMIDIケーブルが250mmほどで、シールドの網線をグランドにつなげていなかったので、これだ!と思ってつないでみましたが結果は同じでした。
    あとは、ミニMIDIキーボードから2系統にパラって片方は音源、片方はMIDIをモニタするためのPCにつないでデータを観察することでしょうか。

  8. 電源ON時に最初の1音が送出できない問題は解決しました。Ver.1.03をお試しください。大量に0x00が出るのはこちらでは再現できません・・・。

    • nao_denha
    • 2011年 3月 8日

    完璧です!
    電源オン時、ノート2音以外出ません。
    調査の記事も拝見しました。大変興味深いです。
    この手の工作をされている人はMIDI出力処理をどうされているのでしょうね。
    この度はとことん対応して頂きまして大変感謝しております。

    余談ですが、ここ数日アクセスできなかったことをご報告します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。