« FRマイコン基板でMIDI実装&SX-150を演奏(その2) | トップページ | FRマイコン基板でMIDI実装&SX-150を演奏(最終回) »

2008年10月17日 (金曜日)

FRマイコン基板でMIDI実装&SX-150を演奏(その3)

SX-150のタッチペンに可変抵抗経由で5Vを印加して、電圧を変化させながら音程を確かめてみると、音として認識できる下限が約1V、ピッチが変わらなくなる上限が約4Vと言う結論に。ちなみに私が所有するSX-150本体のカーボンパネルの左端では約1.7V、右端で約3.2Vでした。

今回はFRマイコンのPPG出力をPWM制御してLPFで積分してアナログ電圧を取り出しますが、範囲は0~3.3Vとなるわけで、さらにLPFに用いる抵抗による電圧降下も考えると、上限の音程までは少し足りない状態になりますが、

まぁ、これはしょうがないと妥協する事にしました(下限が1Vなんでバイアスかける手もありますがね)。

PPG出力の部分は前にWAVファイルを再生した時のコードがあるので流用してサクっと実装できましたが、以外と手間取ったのがPWMの周波数とLPFのコンデンサの選定。不慣れなせいでなかなか良いところに収まりません。結局現状ではPWMの周波数は500Hz(PPGのカウントが0.2usecで10000カウントにしてます。これで合っているのかはちょっと自信無い)で、抵抗は6KΩ、コンデンサは1μFになっています。Web上で見つけたCRローパス・フィルタ数計算ツールで計算したカットオフ周波数(fc)は26Hzです。ちなみにコンデンサが0.1μFだと265Hzになるんですがこれだとかなりノイジー。周波数特性の500Hzのあたりを見るとfc=26Hzの時での減衰量が-25db、fc=265Hzで-7dbですからまぁ、妥当な感じ(自分の計算が合っていればだが)ですね。

とりあえず、それなりに聴ける音が出たので今度はピッチの調整です。こちらも色々手間取りましたが、最終的に手持ちのウクレレチューナーのマニュアルチューニングモードを使って半音単位となるようにPPGのPDUTの増減値を調べると大体105となりました。

MIDIからの信号を処理する場合だと得られたノートナンバーに対してオフセットと増減値の組み合わせでPPGのPDUTに指定する値を簡単に求められるのですが、今回はPCのキーボードから入力されるキャラクターで判定させるので、やむなく分岐処理で実装。Javaで言うHashMapとか使えりゃいいんですが、使い方を調べてないもので・・・。

ま、そんなこんなでとりあえずそれっぽく形になったのがこちら(ちなみに冒頭とエンディングのBGMはSX-150の音ではありません)。

とりあえず1オクターブ強程度の対応ですがそれなりに楽しいもんです。某所でSX-150をMIDI化して鍵盤で弾くなんて邪道と言うコメントがありましたが、単純にMIDIで繋いでみたいという好奇心の方が勝ってしまっています。さて、ここまで出来れば後はMIDI信号で演奏させるだけです。(続く)

|

« FRマイコン基板でMIDI実装&SX-150を演奏(その2) | トップページ | FRマイコン基板でMIDI実装&SX-150を演奏(最終回) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2790/42820279

この記事へのトラックバック一覧です: FRマイコン基板でMIDI実装&SX-150を演奏(その3):

« FRマイコン基板でMIDI実装&SX-150を演奏(その2) | トップページ | FRマイコン基板でMIDI実装&SX-150を演奏(最終回) »