パラメトリックイコライザーを検討する!の巻き(後編) 2019.8.23

前編はこちら。

ちょっと息抜き・・・VR基板の作成
ソフトばっかりいじっていると、すこし体がなまってくる(?)ので、すこし力作業を行いましょう。
ということで、構想だけしていた入力基板を作成してみました。基板は適当に片面基板でも良かったのですが、
部品面にスライドVRを半田で固定する必要もあったので、両面スルーホールが必要です。
また、GND配線を簡単に行いたかったので、ちょっと贅沢してWIDEサイズの自家製の基板をつかっています。


まずはレイアウトを考えて、最初にスライドVRを取り付けです。
回転式のVRは、簡易的に1回転の調整用のVRをつかいました。安価な中華製です。

完成
 配線数はさほど多くありません。各VRに電源を配線して、VRの中点をPICに接続するだけです。
基板の部品面にGNDメッシュがあるので、GND配線はそこへ半田ジャンパーさせるだけでいいので
簡単です。このGNDメッシュは配線の簡易化に役立ち、またGNDインピーダンスを低下させるのにも
有効で、一度使うとやめられません。
 今回はADの入力点数が多いこともあるので、PICには40Pinのものを用いました。


完成です。それほど時間はかかりませんでした。夜中の悪戯にベストマッチ(笑。

まずは単独で動作確認
 合計で15個のVRがあるので、それらをすべてAD変換してLCDに表示させるソフトを作成しました。
そして、それぞれVRを動かしたときに、所定のチャンネルが動作するかの確認です。

まずは単独で動作するソフトを作成です。


おいおい!
 1個1個VRを回しながら値が動くかをチェックしていきますが、中華製のVRはどうも回転がスムーズではありません。
と、1個づつチェックしていると、あるVRをまわした瞬間に「ポロ」と回転部分がとれてしまいました。
あれまあ〜。安いからか、つくりが粗雑なのや性能が悪いのは我慢するけど、壊れるのは我慢できないな〜。
まあ、一個くらい壊れても無視すればいいのですが、その部分だけ値がふらつく(接点がなくなっているため)し、
見た目も悪いので、仕方なく交換しました。
 しかし、この調子たど他のVRも壊れそうだな〜。

あちゃ〜、こんなん壊れるの初めてみた。

通信ソフト作成
 単体で動くことが確認できたので、DIV5142との接続テストです。DIV5142とVR基板との通信は
2線インターフェイスとしています。DIV5142からクロック信号を送出して、それに同期してVR基板から
データを1ビットづつ送信します。だいたい、15個のVRのデータ(10ビット×15)を送出するのに、
全体で2mS程度かかりました。1ビットあたりに換算すると約12usですね。すこし早いRS232C程度という
感じでしょうか。ソフトをもう少し見直せば早くなりそうですが、まあ2ms程度で全データが通信できれば
十分でしょう。実際には1秒間に10回程度しかサンプリングしませんので、まだまだ余裕があります。

 一応、送り出しデータと受けとりデータが一致することが確認できました。これで、VR側のLCDは
お役ご免です。

通信ソフトも完成しました。VR側とDIV5142側で同じ値が表示されることを確認したので、
もうこれでVR側のLCDは不要になります。


簡単にPEQを動かしてみましょう!

さて、入力部分もできたので簡単にPEQのソフトを作ってみましょう。
係数を各BIQUADフィルターに書き込むだけの簡単なものを作成します。
といっても、今日は週末だから夜鍋コースかなあ〜(いつも夜鍋のような気も・・・・)

簡易版完成!2019.8.24
 とりあえず、入力装置が5素子なので5素子分のイコライザを作りました。
ほんとうは、それぞれの素子の役割は任意に決められるようにできるのですが、
ここでは決めうちです。そのためpeakingEQとして動くのは3素子になります。
どのように素子を割り当てたかといえば
 素子1: LowShelf      f0=20〜200Hz Q=0.3〜30 Gain=-15 to 15dB
 素子2: peakingEQ1    f0=20〜200Hz Q=0.3〜30 Gain=-15 to 15dB
 素子3: peakingEQ2    f0=200〜2kHz Q=0.3〜30 Gain=-15 to 15dB
 素子4: peakingEQ3    f0=2k〜20kHz Q=0.3〜30 Gain=-15 to 15dB
 素子5: HighHSF      f0=2k〜20kHz Q=0.3〜30 Gain=-15 to 15dB


5素子にしても設定の組み合わせが無数にできてしまいます。まあ、すべての素子を動かすことは
ないかと思うので、使わない素子はスルーも選択できるようにしたおいたほうがいいでしょう。

ディジタル設定の憂鬱
 さて、できたのはいいのだけれど、ディジタルにすると設定はイライラする側面がでてきます。
というのも、ボリュームの値はADで読み込みますが、PIC内蔵のADとはいえ分解能が10ビットあります。
ほぼそれに近い分解能を割り当てることができるのですが、そうするとゼロ調がイライラします。
どうしても、ティジタルなので設定値が「0.0」になるようにしたくなるのですが、かなり微妙な調整
が必要です。これが、アナログなら適当にゼロ付近ということで、済むのですが・・・・
 ということで、仮の設定ですが現状10ビットある分解能を32階調に減らしました。そうすれば、
ゼロ調が簡単です。
 j実際の分解能はどの程度にすればいいかは思案のしどころです。大体100分割くらいかな?

試聴の前にデータ取り

色々と設定してデータを取ってみましょう。
表示の見方は下図の通りです。




まずはフラットな特性から。すべての素子のゲインを
0dBにしています。192kHzサンプルなので96kHz以降
がばっさり切れています。


まずはLow Shelfです。周波数100Hzでゲイン6.6dB、
Q=0.71の特性です。



同様にHigh Shelfです。周波数8kHzでゲイン5.7dB、
Q=0.71の特性です。


中心を膨らますためにf=1kHzで5.7dBゲインを上げました。
Q=0.52なのでかなり横軸に膨らんで上昇しています。


Q値を3と高くしてみました。かなりシャープになりました。
これって聞いたら不自然に聞こえるのだろうな〜。


HighShelp とLow ShelfとpeakingEQを組み合わせてみました。


さて、試聴してみましょう!

おっと、その前に視聴用に電源を調達する必要があります。
現状は実験用の電源をつかっているので、そのまま移設はできません(できるけれど、とても面倒・・・)。
部品箱から、適当なものがあるはずなので捜索しましょう。

あ、そろそろ出かけなくっちゃ。試聴は明日かな?〜。

試聴の前に 2019.8.25

まだ(夜中なので)音だしできないこともあり、すこし気になっていた最大素子数について試算してみました。
DIV5142をつかってグライコ並みにどこまで素子数が増やせるか、です。
 検討しているときに気づきましたが、PCM5142ではDACを動かすこと自体がかなりの実行サイクルが必要になるのと、
それと実行サイクルの制限がでてきます。それに対して、DAC出力をカット(音声出力なし)とすれば、実行サイクルの
制限から開放される(データの時間遅れは気にならない)ので、素子数を増やすことができます。実際に音声なしの場合での
最大素子数はPCM5142のRAMに格納できる命令ステップの上限で決まるようです。
 Biquadフィルターの係数は最大で254までつかえますが、実際にはその半分も使わないということです。

で、試算した結果は下記の通りです。

CASE 構成 音声ありの場合
(DAC稼動)
音声なしの場合
(DAC非稼動)

1個だけ使用した場合。
7素子
24素子

2個使用し、それぞれL,Rの専用プロセッサとして使用。出力は合成器をつかって
1つのPCM出力にまとめる。
14素子 49素子

2個のPCM5142をシリーズでつなぐ。
31素子
(全段をDAC非稼動で24素子、
後段をDAC稼動の7素子)
48素子
上記の3段シリーズ 55素子

1段目 DAC非稼動 24素子
2段目 DAC非稼動 24素子
3段目 DAC稼動 7素子
72素子
上記の4段シリーズ 79素子

1段目 DAC非稼動 24素子
2段目 DAC非稼動 24素子
3段目 DAC非稼動 24素子
4段目 DAC稼動 7素子
96素子

PCM5142では4個のPCM5142を搭載できるので、やる気になれば最大で96素子のグライコあるいはパラメトリックイコライザーが作れることになります。
しかし、それだけ素子数があっても設定が大変なので実用的には最大で30もあれば十分でしょうね(それでも、どうやってパラメータを入力するの、とは
なりますが)。

この場合、構成としてはCASE2あるいはCASE3になりますが、CASE2だと外付けで若干の回路が必要になります。
CASE3ならば基板内のパターンカット1箇所とジャンパー1箇所ですみます。
やるとすれば3ですね。

ただ、パラメータの入力方法をどうするかがもっとも頭をつかうところです。
スライドボリュームを30個並べるのは壮観だなけどなあ〜。

試聴準備

試聴室(リスニングルームです)に基板類を持ち込むわけですが、ばらばらのままだと、いざというときに
落として配線をきったりする恐れもあるので、まずは一体にまとめます。このあたりは基板サイズが同じなので
積みかせねるだけでいいのですが、VR基板とDIV5142が重なると液晶がみにくくなるので、VR基板は片持ちでの
とりつけです。
 しかし、相変わらずこの状態って「ハウルの動く城」だなあ〜と思ったりです。

持ち運び出来るように一体にまとめました。


電源は部品箱にあったスイッチング電源です。+5V、正負15Vの出力がでます。

試聴!
さて、試聴室に持ち込んで結線して試聴開始です。
接続の構成は下記の通りです。

CDプレイヤー(同軸出力)→SRC4137(192kHz変換)→DIV5142(5素子PEQプログラム)
                     →プリアンプ→チャンデバ→パワーアンプ(×3)→スピーカ(3WAY)


DACはそのままDIV5142のアナログ出力を用いています。


こんな感じで試聴しています。

まずはフラットな特性で聞いて、普段の音を確認したのち、まずはLowShelfから試してみます。
「これはいい!」

使っている3WAYのトールボーイは、以前から気になっていたのですが、バスレフポートが長くて低音の量感に
すこしかけるところがあります。まあ、バスレフがあまり効いていないということは、自然な音なんだろうな〜と自分自身を
納得させていましたが、PEQを入れてすこし低めのF0で低音を持ち上げてやると、見違えるような音に変身です。
POPSなどで低音が響く音楽には、やはりドンシャリ気味の方が聞いていて気持ちいいところもあるのですが、
まさしく心に響く音になりました。
 いろいろと試してみて、fo=60Hzあたりで6〜7dBくらい上げるといい感じです。
それ以上あげると、さらに低音は増すのですがすこし不自然に大きな低音です。また、f0を上げると
同様に、低音領域全体が持ち上がるのでそれもすこし不自然になります。スピーカユニットの不足とする領域のみを
持ち上げるのが良さそうです。
 次は、高音部です。高音部は触る必要はないと思っているのですが、心持ちあげるとシャキットした音になりそうなので
2dBほどあげまあした。


低音を持ち上げるとやはり気持ちいいです。

中音部、たとえばボーカル領域については調整はかなり難しいです。
上げると、たしかにボーカルが前にでてくるのですが、上げすぎるとすこし乾いた音になってきます。
このあたりはQ値を変更すればいいのかもしれませんが、中音域はさわらないことにしました。

結果としては、低音部についてはfoを低めにして持ち上げるというのが私のシステムではもっとも効果が
ありました。あと高音部についてもすこしだけ持ち上げてみました。
しばらくこれで音楽を聴いていますが、落ち着いたらもっと色々と調整してみたいものです。
でも、この調整ってかなり泥沼に陥りそうですが・・・・・

気になる点は
 PEQのソフトをつくりましたが、気になる点が1つありVRを動かして特性が変更されるときに
音がすこし途切れます。これはテーブルを書き換える前に一旦MUTE状態にしているからなので、
どうしようもありません。ひょっとしてもMUTEをかけなくてもよいのかもしれません。
PCM5142には係数用のRAMが2テーブルあって切り替えることができます。これは上記の
対策のために作られたものと思うのですが、特性を変更するときは他方のテーブルに書き込んで、
書き込みが終了したら、テーブルごと切り替えることで音の途切れを最小限にするものでしょう。
まだ、その使い方は知らないで、すこし調べてみる必要がありそうです。
 DIV5142ではプッシュスイッチで特性を変更していたこともあり、スイッチ操作時に音がすこし
途切れるのは気にならなかったのですが、VRだと操作が連続していることもあり、その操作中に
音が途切れるのはすこし気になりました。すこし課題ですね。

まあ、週末はのんびり音楽でも聴きましょう。

なるほど!

前述したように、PCM5142の係数用RAMは2つあり、それぞれがA,Bという名前がついています。
アダプティブモードにすると、DSPが動いている間はAがアクセスされています。その状態ではAには書き込みができません。
Aに書き込みをするには、DSPをとめる、すなわちDACをスタンバイさせる必要があるというわけです。
それに対してBにはDSPが動いている間でも書き込みができる。
いままでは、Aだけをつかっていたので、係数を書き込む前には一旦DSPを止めて(DACをMUTE状態)、係数を書き込んだのちに、
再スタートをかけていました。そのため書き込む係数の量にも依存しますが、数mS〜数10mSはDACが止まった状態になり、
そこから再スタートをかけたときに、起動時のプチという音が聞こえたのだと思います。
 そこでレジスターのセッティングをみると、RAMのスイッチがありAとBをスイッチ(どちらかといえばSWAP)ができるようです。
すなわち、DSPが動いている間(Aをアクセスしている)にBに新しい係数を書き込んで、スイッチをさせれば
音が途切れることなるフィルター特性を切り替えることができます。

たとえばゲイン(スケール)を変更する係数を換える場合ですが、従来方法との比較で空白の時間が新しい方法ではゼロになっています。

今まで方法だと、新しい係数を書き込むときに
DSPを停止させていたので、数mSの空白期間
があります。
アダプティブモードでのスイッチ機能をつかえば、
空白期間なしに、切り替えることができます。


切り替え時のデータの連続性もあるようです(ゲイン切り替え時)


このスイッチをつかえば、音が途切れることなくフィルタの特性を変更することができそうです。
ただ、1つ面倒なことがあって、RAMのA,Bを入れ替えるのはいいのだけでど、切り替えられたRAMの内容には、
変更した内容が反映されいませんから、以前に変更した内容もふくめて新しい内容を書き込む必要があります。
すなわち、変更にすこし時間がかかりそうなことです。一つ前に書き換えた内容を覚えておいて、それを追加で
書き込むのが時間的に早いですが、結構面倒なのでフィルター全体を書き込むのがソフト的には作成が簡単です。
ただ、フィルターすべてを書き換えるのにどのくらい時間がかかるか、一度測ってみないとわからないな〜。
 まあ、このあたりは細かいところではありますが、意外と時間のかかるところだったりします。


タイムアライメントを調べてみましょう 2019.9.2
もともとオーディオでタイムアライメントを調べてみると、カーオーディオへの適用が多いようです。
そりゃ、考えればそうですよね。運転席は国産なら右前方ですから、左右のスピーカならびに
前後のスピーカとも距離がバラバラです。ツーイタが目の前にあるにもかかわらず、ウーハが後部座席
の後ろにあったりしたら、音の到達時間はバラバラになってしまいます。
 一方、ホームオーディオはどうでしょう? すくなくとも、リスニングポイントは左右のスピーカの真ん中
です。考えられるとすればウーハとツイータのボイスコイルの位置の違いくらいでしょうか。
そういればタイムアライメントのために、ツイータの位置を後ろにずらすなどの工夫がされているものも
ありますね。
 やっかいなのはホーンをつかっている場合かもしれません。巨大なホーンだとウーハとホーンドライバ
の距離は1m以上はなれている場合もありそうです。まあ、それは極端な事例として、タイムアライメント調整
がPCM5142でできるか調べてみました。

DELAY素子?

Purepath Studioの中のブロック図にはDELAYなるものもがあります。
おそらく、時間遅れを発生させる機能なのでしょう。これがあることは知っていましたが、
どのくらいの時間が遅れるかは、定量的に調べてことがないので、この機会に調べてみました。

極端な例ですが、DELAY素子の各素子の設定値を最大(45)にして、12個並べてみてどのくらいの
時間遅れが発生するかを調べてみました。
 片チャンネルだけにDELAY素子を集中して配置します。


Lチャンネルのみに、12個のディレイ素子を並べてみました。

結果は192kHzサンプルの場合ですが、12素子を並べると約1.06msの遅れを発生させることができました。


12素子を並べると約1mSの遅れが発生します(192kHzサンプル時)

各素子あたりで約88usの遅れが発生できるようです。各素子の最小値は3で最大で45ですから、
概算で88/45=1.95usですから約2usの調整ができる可能性がありそうです。
 音速を340m/sとすれば約0.66mmの分解能になります。

問題は・・・・・
 DELAY素子の設定に問題があります。ディレイ素子の遅延時間は定数テーブルとして入っているのではなく、
命令の中に組み込まれているという点です。すなわち、どこかの値を書き換えれば任意の時間遅れが設定できる
というわけではなさそうです。命令群になにか規則性がわければいいのですが・・・・・
 色々と知らべていますが、結構難航中です。

ちょっと妄想・・・・ 2019.9.16

スライドボリュームをつかって、ゲイン調整できるようになればカッコいいけど、周波数がたくさん増えると大変だし、
それにケース加工がものすごく面倒そうです。それに、キャラクターディスプレイへの数値の表示は定量的でいいのだけど、
ちょっと感覚的にわかりにくい。
 やっぱりグラフィカルになったほうがいいな〜と妄想していました。
で、何気に部品箱をみていると、あまり買った記憶がない(ひょっとして福袋に入っていた?)のだけど、グラフィックLCDがあったので
これをつかうといいかも!と思ってしまいました。
 ドット数は128×64とちょっと少なめですが、それでも色々な表示ができるはずです。
これを使えば、こんな感じのものができるかな〜っと。



・周波数とゲイン、Qはロータリーエンコーダで調整。
・折角なのでグラフィックイコライザ(GEQ)とパナメトリックイコライザ(PEQ)を切り替えできるように。
・PEQだとフィルターの種類もかえられるといいかな?といってもpeakingEQとhighShelfとLowShelfだけですが・・・。
・DIV5142と組みあわせるならCHの変更もできるといいかな? しかし、1chで十分じゃない?という気も・・・・。

とりあえず

手元にあるグラフィックLCDを動かしてみましょう。


こんなんが見つかりました。ちょっと古そう・・・・
秋月での最初の販売は2007年のようです。

まずは、簡単にブレッドボードに組み込みます。配線数が以外と多いです。
キャラクターディスプレイは全部で制御線が6本で済みましたが、グラフィックLCDは
全部で14本必要です。そのため、PICも40Pinタイプをつかいました。

まずはブレッドボードに組込みです。

なかなか動かない・・・・・

GLCDの取説をみながら、プログラムを書いているのですが、なかなか動きません。
正確には、表示はされるのだけれとノイズだらけ。予期した表示がされません。

なぜかな?と悩みつつ、何気なくPICのクロック周波数を落とすと動き出しました。
どうやら、書き込み/読み込みのタイミングの問題のようです。でも、
マニュアルにあるタイミングは守っているのだけどな〜。
 たとえば、書き込むクロックについては最小幅450nsとあるのですが、
実際には3usにしないと動かないという始末。なぜなんだろう?
 まあ、原因調査は別途行うとしても、まずは動き出してホットしました。

ちょっと雰囲気だけ・・・・

GLCDが動き出したので、ちょっと雰囲気だけ感じるために図形を描いてみました。

グライコをイメージした表示。


パラメトリックイコライザーをイメージ。
バーの位置が周波数で、高さがゲイン、そしてバーの幅がQ値です。

まあ、128×64だけど、使えそうな雰囲気です。これに、数値や文字も表示するようにすれば、
それなりにカッコイイ感じになっていくでしょう。でも・・・・・・

ちょっとコントラスト低いな〜

このGCLDのコントラストはものすごく低いです。バックライトをつけてもほとんど改善しません。
コントラスト調整のVRがわるいのかな〜。これだと、ちょっとやる気が出ないです。
もっと、いいLCDを調達しましょう・・・・

これあたりが良さそうです。

これだと、もうちょっと綺麗かな〜。

明日、東京にいくついでに秋月に寄ってみましょう〜。

新しいGLCD調達! 2019.917

東京の出張ついでに秋月に寄って、GLCDを調達です。平日の4時ごろなのに、結構サラリーマンを含めて
人がたくさんいました。仕事サボって?って・・・人のこと言えた義理ではありませんが・・・。


新しいGLCDを購入しました。

購入した袋の中には、なぜかメスの20pのコネクタが2つあります。
たぶん、メスとオスの一対でいれつつもりがまちがえたのでしょうね。
オスのピンが手元になければ、すこしムッとしていたかもしれませんが、部品箱には
いくつかありますので、ノープロブレムです。秋月さんも忙しいのでしょうね・・・。

早速なので、つないでみました。
やっぱり、新しいGLCDはコントラストはいい感じです。
バックライトもそれほど電流は流していない(40mA程度)けど、結構明るいです。 


やっぱり、新しいGLCDはコントラストいいです。これならやる気でてきます。

ついでに

小型のロータリ−エンコーダも何個か購入です。いままで使っていたエンコーダが200円だったのに対して、
小さいためか1個80円です。これなら、オキラクに使えそうです。小型ということで、すこし強度的な心配もありましたが、
つくりはしっかりしてそうです。そりゃ、天下のアルプス電気さんですからね。


小さいロータリーエンコーダも購入です。

ロータリーエンコーダはスイッチとともに、ブレッドボードで使いやすいように小さい基板に組み込みました。
3個のエンコーダと4個のスイッチを搭載です。それぞれにはプルアップ抵抗も実装しておきました。


こうのように組んでおけば、ブレッドボードでも使いやすいです。

ブレッドボードも引越し!

すこし大きめのブレッドボードに引越しです。
その理由は、PCM5142あたりも一緒に載せられるようにしたかったのと、PICマイコンとGLCDの間に
レベルコンバータを入れる必要があったためです。


すこし大きめのブレッドボードに引越しです。

最初の段階では、PICもGLCDも5Vで動作させていたので、直結できていたのですが、
今後PCM5142などのロジック系の電圧が3.3Vのものとつなぐことを考えるとPICも3.3V で動作させた
方がなにかと便利です。
 そうなったときに問題になるのがGLCDとのインターフェイスです。GLCDを書き込み専用につかうのなら
問題はないのですが、読み込みも行うとなると、GLCDの動作電圧の5Vがそのまま3.3Vで動作するPICに
作用してしまいます。そうなるとPICが誤動作したり、最悪壊れたりします。そこで、74LVC245の双方向バッファーを
途中にかましました。74LVC245は3.3Vで動くロジックICですが、5V入力を許容しているので、5V動作するGCLDと
接続しても問題ありません。
 で、今日のところは74LVC245を途中に挟んでGCLDが動くところまで確認です。

さて、明日も早いことだし寝ましょう。

グラフィック表示の前に
GLCDをつかうとキャラクター表示にした場合に文字数が増やせる利点があります。
いままでよくつかったSC2004は80文字でしたが、128×64のGLCDだと5×7のフォント(空白いれて6×8)
なら168文字表示できます。となればいままでの2.1倍です。これは大きい。
 ちょうど7素子のPEQなら、すべての変数が表示できます。
 まずは、これを動かせるようにしてPEQのソフトをくみたててみましょう。


まずは表示ができるかどうかの確認です。8桁あると結構な量が表示できます。

ソフト完成!ん・・・苦戦!
 表示ソフトができたら、あとはそこで設定した値をPCM5142の中のフィルターに書き込むだけなので
あとは力勝負です。一気に書き上げました。で、動作させてみますが、なにやらおかしな挙動です。

フィルターは全部で7個あるのですが、左チャンネルが最初から5個目、右チャンネルが最初から6個目に
書き込むと、とたんにシステム全体の動作がおかしくなります。
 フィルターの書き込みはプログラムのループの中でおこなっているので、特定のフィルタのみの書き込みが
おかしくなることはないはずなのですが・・・・。とりあえず、自分のソフトにバグがあるだろうから、あれやこれや
調べますが一向に原因がわかりません。
 いつもは不具合があると、その原因を解決することでプログラミングの腕があがるんだ!と思って、割と
ポジティブに捕らえて対応するわけですが、今回はなかなかその糸口がつかめません。ん・・・・・時間だけが過ぎていきます。

で、思い切ってPUREPATH STUDIOでのフィルターのメモリー上の配置を変更してみました。
フィルターの構成はまったく変わっていませんが、フィルターとスケールの定数の置き場所を変更しただけです。
すると、いままでの問題がスッキリ消えて、動き出しました。
 どうやら、Purepath Studio側の問題のようです。そりゃ、わからないわけだな〜。

今回の不具合から1つわかったことは、バイクワッドフィルタのメモリー配置は0,5,10・・・・とした方が無難ということです。

まあ、見ている人は何のことかわからないと思いますが・・・備忘録かわりです。

再度試聴!
 以前にも試聴しましたが、今回の構成で再度試聴です。その目的はDACにはリファレンスでつかっている
DAC1704-4D(PCM1704)での音だしをしたかったのです。そのため、本機の出力にはPCM to SPDIF基板を搭載して
PCM信号を一旦、SPDIF同軸に変換しています。
 すんわち以下の構成です。

 CDP → (本機:SRC4137→DIV5142→PCM to SPDIF) → DAC1704−4D


まずはバラックの状態ですが試聴にかかりました。

鳴らない・・・・
 機器を配線して、すべての電源をON。ボリュームを上げていますが・・・・鳴りません。
あれ?なんで?・・・オシロでSPDDIFの信号も確認したはずなんだけど・・・・

原因はDAC1704-4Dが192kHzに対応していないという、オチでした。

プログラムは簡略するために、192kHzオンリーで動くようにしていたのですが
DAC1704-4Dが対応していないことを失念していました。DAC1704-4DのDIRには
DIR9001をつかっているのですが、これは96kHzまでしか対応していないからでした。

で、一応SRC4137側の送り出し周波数を96kHzにしたら音がでることは確認できました。
が、192kHzで動くように設計したプログラムで96kHzで再生するとフィルターの設定値が
まるで違ってきますから、まともな試聴にならないので、今回は見送りです。

かわりに・・・
かわりにDIV5142のアナログ出力(PCM5142のアナログ出力)をつかって試聴です。

やはり結論として、低域をすこし持ち上げると鳴りがまったく違いますね。はやく、一つの機能
としてまとめたくなりました。

ちなみに、今回のプログラムでは以下を改善をはかりました。

1.PICの動作クロックを8MHzから64MHzに
  いつもはクロックは8MHzをつかっていますが、これはこの速度でも問題なかったからで、むやみに高速化して
 消費電流を増大させることを嫌ったからです。しかし、今回はGLCDをつかったこともあり、表示が遅い!ということで
 その他の速度を上げることで、その遅れを挽回しようということでPICの最高速度までクロックを上げました。
  フィルターの計算には三角関数をはじめ、対数やべき乗計算がはいるので、いままではそれなりに時間が
 かかっていましたが、流石に64MHzの8倍になると、フィルターの計算&設定もかなり早くなっていることでしょう。
 ストレスなく動きます。でも、8MHzに戻しても問題なければ、戻すかも・・・です。人生、細く長く〜です(笑。

2.ポップノイズレスに
 DIV5142ではフィルターの切り替え時に若干のポップノイズがありました。これは、フィルタを書き換える前には
 PCM5142内のDSPの動作を止めないといけないので、その間はMUTEをかける必要があります。そして、フィルター書き換え後の
 復帰時にノイズがでていたのですが、今回はフィルター定数用の裏RAMをつかってポップノイズレスにしました。
  DSPが動作中でも裏RAMには書き込めるので、書き込み終了後に表RAMと瞬時に入れ替えを行います。これでノイズの
 発生は抑制されます。ただし、弊害がひとつあり、表RAMが裏RAMにかわったときに、もう一度同じ内容を切り替わった裏RAMにも
 書き込んでおく必要があります。そうしないと裏RAMの内容は更新の前の値のままになってしまいまるからね。
 ということで、書き込みを2回行う必要がでてきますので、その分時間がかかりますが、前述したクロックを64MHzに上げたこともあり
 ほとんど意識する必要もないほど、高速で書き込めているようです。

妄想中・・・・・
 今回検討している機器は1枚に納めて、CDPとDACの間に挟みこんで、こそっと音質調整をおこなう装置にしようかと考えています。
 色々な基板を組みあわせてもいいのですが、そうなると必然的に大きくなってしまいます。どちらかといえば、ケーブルみたいに
 本来は目立つ存在でもないのかな〜っと。



こんな感じで妄想中・・・・

必要なIC類ですが、
 CASE1:入出力にSPDIFを備える場合
      使い慣れたパターンだと入力にDIX9211を使い、DSPにPCM5142、出力にDIT4192 かな?
      ちょっとICが多いです。ひょっとして入出力にPCM9211が使えればICが1つ減るな〜。

 CASE2:入出にPCMだけを備える場合
      これだとDSPのPCM5142だけなので、とてもシンプル

 CASE3:DIV5142と併用
      DIV5142と連結して使用するパターンです。DIV5142に4つのPCM5142が載っていますから、
      さらに色々なことができそうです。タイムアライメントもできるかも・・・・。
      が、2枚に分かれちゃいますね。

 一番コストがかかるのはCASE1の場合ですが、それでも基板やIC類、さらに液晶やスイッチ類も含めても
1万円くらいでできそうな気配です。あ、結構高い部品がある!アルミのツマミがこれがまた高い!
プラスチックのものだと100円ちょっとでありますが、アルミの削りだしのものだと1000円近くします。
これが3個となると・・・・・。やっぱりプラスチックにしよう!(笑

いづれにしても、秋の夜長には面白い企画かな〜。


色々と壊れるな〜
んんかこの検討中に、モノが色々と壊れました。
ふと気づくとSRC4137の液晶表示が壊れていました。左側に大量のドット欠けが発生しています。
まだ、なんとか使えそうだけど・・・・

使用頻度の高いSRC4137の液晶が逝ってしまいました。

HPの作成に欠かせないディカメですがメモリカードを認識しなくなってしまいました。
これは寿命かな〜。これは早急に代替品を調達しないといけないなあ〜。
 
メモリーカードを認識しなくなったNIKON COOL PIX S6100
7年ほどつかったのかな?

を!ディジタルオシロって便利じゃ?

イコライザの特性を調べるためには、周波数を変化させてそのゲイン特性を調べる必要があります。
そこで今までは、Wavegenをつかって周波数を変更して、そのゲインをオシロでみていました。
あるときWavegenにスイープ機能があるのを知って、20Hzから20kHzまで変化させて、その様子を
オシロでみていました。でも、オシロで見ているとどの周波数かがよくわかりません。
 で、ふとディジタルオシロも持っていることに気づいて(いまさら?)、それなら波形が記録できるのでは?
と思い、久しぶりに動かしてみて波形が固定できることがわかりました(ディジタルなので当たり前ですが・・)。
 で、周波数をスイープさせながら振幅を記録してみました。

これは便利!

 いや〜〜、ディジタルオシロの便利さを実感しました(笑。
 まるで、過去の人間が10年先にタイムトリップした感じです。ああ・・・・年を感じる・・・(爆


イコライザでLowShelfとHighShelfをかけた場合の振幅(20〜20000Hz)


グラフィックイコライザにも挑戦! 2019.9.21

24素子のグラフィックイコライザにも挑戦です。なぜ、24素子かといえば、これがPCM5142のフィルタメモリーも容量ぎりぎりだからです。
また、ここまで素子数が多いと命令サイクルも長くなり、96kHzでの再生が限界です。
 192kHz対応にしようとすれば、素子数を減らすか、あるいはPCM5142を複数個用いてPCM5142毎の負荷を減らす必要があります。

なお24素子のフィルターを動かすとなると、PCM5142でのアナログ出力は無理(命令サイクルがオーバする)なので、ディジタル出力のみです。
そのため、外部にPCM to SPDIF基板を搭載します。

まずは24素子でのグラフィックイコライザに挑戦です。

値の設定はグラフィカルに行うわけですが、128×64しかないGLCDでどのように表示させるかは、結構悩みます。
おそらく、センスがものすごく問われるところなんだろうな〜というころですがまずは実用的に攻めます。
検討にはエクセルで128×64の方眼紙をつくって、そこにドットを打ち込みながら考えていきます。

方眼紙を作成して、表示パターンを考えます。

とりえあえずソフトは完成!

まだまだ表示ソフトにバグは残っていますが、本当に24素子で動くかどうかの確認もはやく行いたいこともあり、動かしてみることにしました。
出力はPCMディジタルをSPDIF変換しているので、DAC4497-2.1で動かしてアナログ信号を得ることにします。
操作は3つのロータリーエンコーダで行います。周波数のエンコーダは、ゲインを可変する周波数を選択。そしてゲインはその周波数でのゲインを設定します。
3つ目のQ値のエンコーダは、すべてのフィルターのQ値を一斉に変更します。個別の調整にしてもよかったのだけど、そうすると調整の自由度が広くなりすぎて、
反対に使いにくくなるとの判断からです。まあ、変更は自由にできますが。


動作確認の様子です。最後のアナログ変更を行うのが一番左のDAC4497-2.1です。

音の追い込みが大変そう!

まずは、適当な特性を設定してテストです。
低音と高音、そして中音(1kHz近傍)を急に持ち上げておいて特性のチェックです。
なお、今回の24素子での周波数分割は対数で割り当てています。
具体的な中心周波数は次の通りです。

f=20; 27; 36; 50; 66; 90; 120; 160; 220; 300; 400;550; 740; 1000;1350;
  1800; 2500; 3300;4500; 6000; 8100; 11000; 15000; 20000(Hz)


さて、測定結果は次の通りです。主にQ値を変更して測定してみました。



Q値 3.0 かなり大きいです。



Q値が大きい(急峻)ため、周波数分割したときの山が明確にわかります。
もうちょっとQ値は低いほうがいいかもしれません。
なお、低域でゲインが落ちているのはオシロに交流入力で接続しているため、
低域の特性が落ちるのと、フィルターは重ね合わせで効く為、最初段(20Hz)あるいは
最終段(20kHz)ではゲインが落ちてしまいます。まあ、ほとんど聞こえない領域ですが・・・。


Q値 1.6 すこし落としてみました。

すこしQを落としたため、山が消えました。案外、フラットな特性になってきているように見えます。
このぐらいがちょうどいいかな?


Q値 1.1  さらに落としてみました。

かなり特性がブロードになってきました。音的には滑らかになるかもしれません。

Q値 1.1 で20kHzの要素のゲインを
あげてみました。

広域での落ち込みがなくなりましたが、ちょっと上げすぎかな?

とりあえず、問題なく動作することがわかりましたが、
調整できるパラメータが多いので、音の追い込みはかなり大変だろうな〜という気がします。
まあ、それが楽しみでもあるのですが・・・・。

試聴は、また明日

ここまでくれば、システムにつないでスピーカで音だしをしたいところですが、夜も遅いのでまた明日にでもしましょう。
ただ、ヘッドホンでの試聴は問題ないので、ちょっとだけ遊んでみようかと思います。

ちょっと年寄りバージョンでドンシャリの特性に設定してみました。

このような特性でヘッドホンを鳴らしてみましょう。


このぐらいの特性が年寄りにはいいな〜(笑

実際に試聴してみましょう! 2019.9.22

こんどは96kHzで動かしているので、DACにはリファレンスでつかっているDAC17904-4Dをつかいます。
で、事前テストの最中にわかったのですが、SRC4137でつかっているDIX9211にはトランスミッタの機能もあるので、
わざわざPCM to SPDIF基板を用いるここともありませんでした。
 いままではSRC4137でSPDIF(44.1kHz)で受けてASRCで96kHzにアップサンプリングして、その信号をDIV5142に渡し、
DIV5142で処理されたPCM信号をPCM to SPDIF基板に渡してSPDIF(96kHz)に変換するということをしていました。
 が、DIX9211のDITを使うと、SRC4137でSPDIF(44.1kHz)で受けてASRCで96kHzにアップサンプリングして、その信号をDIV5142に渡し、
ここまでは同じですが、DIV5142で処理されたPCM信号を再度SRC4137のPCM1入力に戻して、その信号をDIX9211内部で
SPDIF(96kHz)に変換できます。ただ、そのためにはSRC4137のPICをすこし書き換える必要がありますが、部品が増えるよりましです。
 ただ、今回の試聴では配線の変更が面倒だったので、そのままPCM to SPDIF基板をつかってSPDIFに変換しています。

さて、試聴の結果ですが、やっぱりDACが違うといい感じです。PCM5142のアナログ出力もイイのですが、
やっぱりPCM1704が好きだな〜。

でもって、グライコの効果ですが音的にはパラメトリックイコライザと同じ(当たり前ですが)、視覚的に振幅特性が見えるので
調整がしやすいです。まあ、もともとグライコとパライコとは使用目的が違いますから、調整方法を比較しても意味はないですが・・・・。


試聴時の様子。今回はアナログ音声の配線がないのですこしスッキリ(え?わからない?)

久しぶりに大黒摩季さんのCDを聞いていますが、低音と高音をすこし持ち上げるといい感じです。
でも、あまり持ち上げすぎると不自然になるので、控えめがちょうどいい感じです。

で、聞きながら設定したのは下のような値です。もともとの想定よりはかなり控えめですが、
やはりドンシャリです(笑。


試聴時の設定です。ちょっとだけドンシャリにしています。

仕上げにかかりましょう!

さて、パラメトリックイコライザもグラフィックイコライザも実現できることがわかったので、
すこしシステムに組み込めるように、仕上げていきましょう!

ちょっと、長くなってきたのでページを新規に立ち上げたほうが良さそうです。
現在、ネーミングを考えています・・・・。

FESP企画へつづく・・・

(つづく)