ボイスチェンジャー
■はじめに
トランジスタ技術2007年8月号、9月号の連載付録を利用したボイスチェンジャーです。
音声のピッチ変換をするもので、カラオケのキー変換、モザイク音声、ヘリウム・ボイス、ドナルドダック効果などに利用されます。
入力信号をほぼリアルタイムでテンポを変えずに周波数を上下させます。周波数を1.5倍くらいにするとドナルドダックのような声になります。
潜水士が海上と交信するとき、ガスボンベの影響で音質があがることが知られています。聞きやすい音声にするため周波数を下げる必要があります。
音声信号をdsPICでピッチ変換処理します。
■仕様
周波数帯域 | 5KHz |
サンプリング周波数 | 20KHz |
周波数変換範囲 | -100% - 100% |
■回路図
2007年8月号、9月号の連載付録をそのまま使用します。回路の変更点はありません。
■ブロック図
dsPIC30F2012でリングバッファーを構成し、ピッチ変換してPWM出力します。
- リングバッファーを256個用意します。
- 20KHzでサンプリングしリングバッファーに格納します(タイマー3を利用)。
- リングバッファーの読み出しタイミングを可変させてピッチ変換を行います(タイマー1を利用)。
- 読み出されたデータをPWM出力します(タイマー2を利用)。
リングバッファーを読み出すタイミングがサンプリング周波数と同じであれば、ピッチは変わりません。
つまり、タイマー3とタイマー1が同じときはピッチが変わりません。タイマー1を変動させることでピッチが変動します。
■使用方法
準備
- dsPICモジュールのJP1をカット(RS232C簡易機能を分離)
- 電源はUSBポート、外部電源のどちらでもOK。5V安定化電源を推奨
- トレーニングボードのJP1設定、PROGオープン、RXDショート、TXDショート
使用方法
- dsPIC30F2012用のファームウェア(Pitch.hex)をdspicguy.exeで書き込みます。
- 音源を入力します。
- SW1でプラス・ピッチです。
- SW2でマイナス・ピッチです。
■ファームウェア
MPLAB C30を使用して開発しました。
キーポイントの部分のフローチャートは次のとおりです。
- タイマー3のサンプリング周波数でA/D変換します。
- データはリングバッファーに格納します。
- タイマー1のタイミングでリングバッファーを読み出します。
- データをタイマー1のタイミングでリングバッファーを読み出し、PWMにセットします。
- タイマー2でPWM出力します。
■評価
1KHzの正弦波を入力し、-25%ピッチでの出力です(1.33KHz)。
1KHzの正弦波を入力し、-50%ピッチでの出力です(2.00KHz)。
音楽(メリーさんの羊, MIDI)をピッチ変換したものを録音してみました(MP3)。左=入力,右=出力
若干変換後の音が悪いのは、リングバッファーのつなぎ目データが不連続なためです。滑らかになるようにデータ処理するときれいになるでしょう。
「メリーさんの羊」は著作権切れしており、評価に便利です。
■ダウンロード
ファームウェア(Pitch.hex)
■履歴
Version | date | 備考 |
1.0 | 2008-08-10 | リリース |
(C)2008 All rights reserved by Einstein.