2011/08/22

ゆっくり音声合成ICの組み立て4 ~MSG歌えなくても演奏するよ~

まずは動作の様子を動画に。

前回MICROTALKの周りは完成したので、今回は色々と追加している。 追加したハードウェアは
  • VS1033D breakout MP3/MidiコーデックIC
  • LM35 温度センサ
  • 制御線いろいろ(リセット、スリープ、アンプのシャットダウン)



    <コーデックIC>
    シールドの裏に配置。 UNOだと干渉するかも
    VS1033D は千石の値引き品で、VS1053Dがある今となっては一世代前の石。 Midiを再生する分には同じ。 MP3の再生は結構配線が増えるので、昔の外部Midi音源と同じ扱いが出来るリアルタイムMidiモードを使う。

     配線はMidiデータ入力のシリアル1本と、電源、音声出力、リセット端子のみ。リセットはArduinoの適当なデジタルI/Oに。あとはGPIOで動作モードをリアルタイムMIDIにセットするだけ。

     はじめは全く再生しないので悩んでいたのだが、初期化時にリセット信号をかけるようにしたらあっさり動いた。
    Midi再生に関しては、SparkfunのMusic Instulmentシールドが参考になった。 
    http://www.sparkfun.com/products/10587


    <オーディオミキサ (PSoCでアナログ加算)>
    アンプも載ってるからついでにMidiもつけよう、という魂胆で実装したものの、信号ソースが2つあり、アンプは1つなので、信号をミキシングしないといけない。

    OPアンプで加算するといいらしい。そういえばLPFにPSoCを使っていたと言うことで、加算もできそうだ。
    VS1033Dの入力を受けるPGAをもう一つ追加して、元のMICROTALKの入力PGAにRef電圧参照先として接続た。接続元PGAのゲインを1以下にすると加算が可能らしい。SCBのパラメータはまだ手強いので、こちらを試してみた。

    実際書き込んだ所ちゃんと加算しているらしく、2つの出力が衝突せずにアンプで増幅されるようになった。 Midi側もLPFでカットされてしまうのと、音が単純にそれぞれ1/2になるので、Midi側の音が若干劣化している。これ以外の手法はブロックと出力ピンが足りないので無理そう。

    こうしてちょっとした事ならソフトウェアを書き換えるだけで済むあたり、PSoCは奥が深くて難しいけど勉強になる。 小型化する時は、MICROTALKの制御も含めて担当させると効率よさそうだ。 
    ブロック図

    <アンプICの電源>


    Midiをつないだ所頻繁にハングアップするようになったので、Arduinoのレギュレータにつながっていたアンプの電源をVinにつないだ。 アンプが結構電力を喰っている。シャットダウン端子を付けて、発音、演奏時以外はスリープさせることにした。

    こうして、MIDI演奏と音声合成をおこなえる誰得なシールドが誕生したのであった。

    はじめてのPSoCマイコン  http://www.amazon.co.jp/dp/4789842150

    MICROTALK(ATS001B)http://www.actbrain.jp/development/inhouse/index.html
    千石電商の取り扱い

    HT82V739使用ミニモノアンプキットhttp://akizukidenshi.com/catalog/g/gK-03234/