NOISE TOASTER にMIDIキーボードを繋いでみた! MIDI-CVの製作 2017.11.17

    1.はじめに

     秋月電子に、アナログシンセサイザーパーツセット(NOISE TOATSTER)というものが販売されています。

     このセットを組み立てて出来上がるシンセは、NOISE TOASTERという名前が付いているとおり、キーボードで音階を奏でるようなシンセサイザーではなく、ヘリコプタの音や機関銃の音、風の音などの疑似音・効果音を作って遊ぶシンセサイザーです。

     私も以前に購入して遊んでみたのですが、効果音を鳴らしているだけでは面白くなく、これにMIDIキーボードを繋いで音階をだせないものかとキーボードの接続に挑戦してみました。


    2.NOISE TOASTERの外部CV入力

     NOISE TOASTERのホームページを見てみますと、基板設計の段階で外部からのCV入力の信号接続が考慮されていました。

     ページを下のほうへ繰って行くとModification Pads#2の項目で、次のような図がみつかります。

    基板上の接続点です。
    参考図です。要は高抵抗を通して電圧を入力すればよさそうです。

     ここに、PICマイコンで作ったMIDI-CVからの制御電圧を繋げば、音階を奏でることが出来そうです。

     解説のVCOの項を読んでみると、As a matter of fact when the output of U1-C changes by about 18mV (up or down) the oscillator's frequency changes by approximately an octave (also up or down). 実際のところ、U1-Cの出力が約18mV(上下)変化すると、発振器の周波数は約1オクターブ(上下)変化します。(google翻訳)との記述があります。

     これより、MIDI-CVの制御電圧はオクターブ毎に等間隔の電圧を生成(シンセ製作の場では普通)すればよいことになります。18mVへの電圧スケールの変換は、基板写真のRによって行います。


    3.MIDI-CVの製作

     MIDIキーボードのMIDI信号を読み取って押された鍵盤のノートナンバーに応じてしかるべく制御電圧を発生するのがMIDI-CVの役目です。通常はゲート信号も合わせて発生させるものですが、今回は、電圧発生だけにしておきます。

     MIDIキーボードとの接続は、レガシーキーボードならDIN5ピンのコネクタを使ってフォトカプラを通してPICのUARTに繋ぎます。USB-MIDIのキーボードならUSB-HOSTの機能を持ったPICにUSBで繋ぎます。

     どちらのキーボードであっても、扱うMIDI信号は同じですので、接続に関する部分の説明は省略し、制御電圧の出力について説明します。

     使ったPICは、USBキーボードをPC98に接続するキーボード変換器の製作で作った基板を流用しましたので、PIC32MX220F032Bとなります。

     PICのアウトプットコンペアモジュール(OC2)を使いPWMで電圧を生成しました。

     OC2モジュールのタイムベースには、Timer3を使い、次のように設定を行いました。

      
          T3CON = 0;
          T3CONbits.TCKPS=0b010;   // 1:4 40MHz/4=10MHz
          PR3 = 255;               // 10MHz/256=39.1KHz
          T3CONbits.TON=1;         // Go Timer
      
          OC2CON = 0;
          OC2CONbits.OCM=0b101;
          OC2CONbits.OCTSEL=1;     // use Timer3
          OC2RS=255;
          OC2R=128;                // Note Number 60(C3)
          OC2CONbits.ON=1;         // OC2 on
      

     この設定でPWMの分解能は256となります。中央ドの音C3の出力が、PWMの中央値128で約1.65Vとなるようにしました。

     キーボードからのノート番号に対して次のようにプログラムしています。OC2の出力パルス幅は設定値と反転します。

      
          void cv_out(int note_number)
          {
              if(note_number >= 92 || note_number <= 28){
                  OC2R = 254;
              }else{
                  OC2R=256- ((note_number - 60)*4+128);
              }
          }
      

     以下、各オクターブ毎の出力は次のとおりとなりました。
      記号ノート番号PWM設定出力電圧(実測:V)
      F02940.045
      C136320.398
      C248801.008
      C3601281.619
      C4721762.23
      C5842242.84
      G5912523.198

     F0からG5までの範囲の音階を出力しています。オクターブ毎の電圧差は、実測で全て0.61Vになっています。

     PWM信号は、PICのRB5から出力します。1KΩの抵抗と1uFのコンデンサで積分回路を構成して直流電圧にします。基板に接続する抵抗は、(0.61V/18mV)*2KΩで、68KΩとなり、51KΩと可変抵抗で構成しました。


    4.動作確認

     製作したMIDI-CV回路にMIDIキーボードを接続し、NOISE TOASTERに繋いで音出しのテストを行って見ました。

    私が作ったNOISE TOASTERです。
    裏面です。CV回路はブレッドボードの手前側です。
    緑のワイヤがGNDです。
    水色のワイヤが制御電圧でここに繋ぎます。

     さて、期待どおりに音階を奏でることが出来たでしょうか。次の動画をご覧ください。

     なんとなくドレミがそれなりに鳴っているようですがもう一つです。2オクターブに跨って鳴らしてみると音階がくずれているのが判ります。

     そこで、NOISE TOASTERのVCOの制御入力電圧と発振する周波数の関係を調べてみることにしました。

     操作パネル左上のFrequencyのボリュームで周波数を動かします。動かした時の周波数とボリュームの出力電圧を測定します。

     測定箇所は、端子X1の入力電圧とオペアンプU1の1番端子のランプ波形出力です。テスターとオシロの周波数計で測定しました。

     測定結果です。差電圧のバラつきが大きいです。

      周波数制御電圧(V)差電圧(V)
      111Hz-1.181
      220Hz-0.5590.622
      440Hz-0.1590.4
      880Hz0.8851.044
      1760Hz1.7940.909
      3524Hz2.6360.842

     これでは、うまく音階を奏でることは無理です。もう一度周波数を少しずらして測定してみました。

      周波数制御電圧(V)差電圧(V)
      102Hz-1.230
      200.3Hz-0.6290.601
      400.9Hz0.07130.7003
      800Hz0.7980.727
      1603Hz1.690.892
      3207Hz2.5430.853
     バラつきは先の測定よりも少ないですが、音程が高くなる方向で差電圧が大きくなっていく傾向が見てとれます。


    5.さいごに

     NOISE TOASTERにMIDIキーボードを繋いでメロディーを演奏するとそれなりには鳴りますが、使えるものではないということが今回の実験で判りました。

     もともと、音階をきちんと奏でるように設計されたものではありませんので期待する方が無理ということでした。