2017年10月22日

久しぶりにSignalHoundの整備を行う。

本家のサイトで新しいアプリケーションのDLが可能だったので、コレを試す。

WS001164.JPG

WS001163.JPG

SpikeImage0000.png

なんちゃって受信機の機能が上がっている他、以前のヴァージョンとは格段に遣い易くなっている。

残念ながらWindowsのみ対応なので、OSX環境下ではParallelsを起動して動かすことになる。 

偶にコレを使ってThereminのオシレーターの周波数を調整しているが、デジタル系ラインの調整と確認には別にロジアナが必要。

https://www.silvertone.com.au/content/bitscope-bs10u-micro-oscilloscope-analyzer
posted by Yasuski at 00:33| AudioElectronics

2017年10月21日

Open.Theremin@Interruptの整理とRAMの活用

昨日は思いついて、グローバルインターラプトを拒否る cli() に関連した処理の整理を行っていたが、

WS001162.JPG

残念ながら清書後に音質の改善は殆どみられなかった。

その後、以前MCUの容量不足で失敗していたWavetableのデータをRAMに全部載せする計画に再チャレンジしたが、IDEのリザルトを観る限りでは成功しているようだ。

WS001161.JPG

ただし、こちらも音質の向上を感じることはなかった。
 
ついでに Wavetable とそれを扱うシーケンスのデータ型を「工業用のDACを使用する限りオーディオDACの2'sコンプリフォーマットに拘る必然は殆ど無い」と判断して、int から uint に変更している。

RAMにデータを集約すると、ROMからデータを読み出す場合と比べてアクセススピードが超絶に速くなる筈だったのだが、体感的に明確な形で何かが変化した感触はない。 強いて言うならば、アンテナのセンシングの精度が上がって動作が軽くなった感がするが、動作の過程で消費される時間を実測していないのであくまでもこれは印象にすぎない。 期待した程の成果が上がら無いのは、他の処理と比較してROMへのアクセスに要していた時間の割合が大したものではなかった、、、ということなのかもしれない。

以上、コードの改良を行ってはみたものの音質に明確な改善を感じられない残念な結果となって仕舞ったが、引き続きノイズっぽい発音の発生原因を探ることにする。
posted by Yasuski at 05:51| open.Theremin

2017年10月18日

Open.Theremin@オシレーターのドリフト等

オシレーターのドリフトを記録した、見るのが辛気臭い資料映像。



10分以上通電してもこんな感じなので、楽器としての精度を考えると、かなりアカン雰囲気である。

録画の過程で、オシレーターのドリフト値がソフトウエアに拠る修正可能な限界を超えた結果、閾値辺りの挙動が大変雑になり、センシングのダイナミックレンジが狭まる現象を体験した。

こうなると再度キャリブレーションを行うしかないのだが、オシレーターを直接CVでコントロールすると二度手間が省ける。 

ソフト的に対処できる限界を超えるポイントは、水晶発振子を分周したリファレンスクロックとLC発振器の周波数の差分により発生するビートの周波数が、MCUの周波数タイマーがセンシング出来る最高周波数を上回った時で、ソフトウエア側で差分の修正を行って辻褄を合わせようとしてもダイナミックレンジが極端に狭まってしまう。 これはPitch/Volume双方に発生する現象だが、Volume側ではより深刻な影響が顕現している。

オシレーターの安定性を確保できない現状では、CVを印加する機能を導入するしか無いだろう。

ID-292版ではオシレーター間に生じる相対誤差を軽減するために、物理的に近似した回路構成の発振器をリファレンスに用いているが、一方の回路をVariCapコントロールにしてしまったところが画竜点睛だったかもしれない。 現行の回路は運用試験を行って評価していくが、誤差が大きくなる場合はアンテナ以外は完全に一致した回路を組むことにしている。 完璧を期するには外部にアンテナに該当するカウンターバランスを接続する手もあるが、そこまでやるかどうかは微妙なところ。

その後、モードを切り替えるインターフェイスを改良した。 波形選択モードを各和音モードの合間に挿入している。 映像の後半ではヴォリュームコントロールのレスポンスを試している。



操作感の印象だが、多少はまどろっこしく感じるも特に和音でトランジションのコントロールを行う際の音のバラけ方が、瞬時に判るのが良い。 以前はバランスの確認をするにはモードの間を行ったり来たりする必要があり、最大で4ステップを超える作業が必要だったが、新しいインターフェイスではこれが1ステップで済む。 

問題は、戻るにしても進めるにしても混乱の原因となるのがダブルクリックを判定する間隔で、出来る範囲でこれを最適化しなければならない。 特にFWDにシングルクリックでモードを進める場合、閾値の設定次第で機械側の判定が微妙になってくる。 一方、ダブルクリックでRWD方向に進む場合、FWDに較べて判定の確実性が高い結果が出ているので、クリックの間隔をタイトに調整する方向で修正を検討している。

10月27日 追記:

前回行った改良では「波形選択パラメーターの出現頻度」を上げるものだったが、実際に使用してみたところ、不安定なチューニング系のパラメーターを弄りたくなる場合が少なくなかった。 基本的にオシレーターの周波数ドリフト問題に関してはアナログな手法で対処することを考えているが、ファインチューニングはデータ側で行うことを想定している。 

現在設定している循環するパラメーターの選択項目は 

→黒 (空は波形選択パラメーター)

としているが、

→黒 

のように、出来るだけ短い距離で緑と青の項目にもアクセスできるように改変を行ってみよう。 
posted by Yasuski at 20:16| open.Theremin

Open.Theremin@チューニングとキャリブレーションのポットデータ

オシレーターのキャリブレーションモード専用のレジスタを組んで、チューニングとキャリブレーションのポットデータを分離した。

WS001159.JPG

同時に、モード変更の順番を、ピッチ(緑)→ヴォリューム(青)→波形選択(水色)の順番に変更している。

波形選択モードに関しては、他のモードの合間に挿入すると、便利かもしれないので、インターフェイスの変更を検討しよう。

追記:

スイッチの判定機構を間違えていたので修正。 

WS001160.JPG

Volumeは問題なく操作できるが、何故かPitchがアカンので、
今一度、処理ルーティンを精査中。
posted by Yasuski at 06:12| open.Theremin

2017年10月17日

Open.Theremin@GigaTrimをVariCapにリプレイスする

高価なGigaTrimを使用せず、多回転VRTでチューニングを行う方式に回路をリプレイスした。

WS001158.JPG

厳密には、実装スペースの限界から回路のグループ毎にオシレーターの周波数を決定するCの実装サイズが異なってしまうのが残念だが、これはあくまでも基板上の問題。 対象となるCのサイズを実装時に1206から0805に縮小してしまえば問題は解決する。

現行回路の評価次第だが、次期ロットはこの基盤を発注して実験を行うかもしれない。

adat回路が失敗した場合は、DACを複数個増設することになるだろう。

追記:

オプションのTOSLINKを装着する場合、回路に供給する電源ラインにLを入れ忘れていたのでこれを追加する必要がある。

WS001158e.jpg

まず、プリントされた電源ラインをカットし、切り離した回路にLを挿入する。 Lを経てデバイスに供給される電源ラインにコンデンサとバイアス用の抵抗を追加して作業は終了。

こちらは2ndDACを増設した場合のケース。 空きエリアだったTOSLINKの端子付近にMAX5541を追加している。

ID292withStereoOut.png

DACのデータ入力が浮かしてあるので、オプション装着時はMCUとの配線をジャンパ線で行う必要がある。
posted by Yasuski at 16:51| open.Theremin

Open.Theremin@発振器の相対誤差の問題

よくよく考えると、折角アナログ的な手法で、ピッチをセンシングしているのだから、アナログ的な手法でチューニングを行うのが筋ではある。

デジタル処理は、音源周りに限定すべきなのだろう。 

オシレーターにVariCapを使う設計の利点は、外乱に敏感なオシレーターの素子をシールド線で引き回さなくて済むところで、実際モダンな設計の短波ラジオは、これとマイコンを組み合わせて発振器の電圧制御を行っている。 

リファレンス用のオシレーターの安定度を上げるにはPLLの使用が望ましいが、片方の発振器にアンテナを繋いで不安定化しているので、相対的な安定度を考えなければならない。 リファレンス・オシレーター単体で安定度の向上を追求する意味は全く無い。

相対性の確立をつきつめていくと現行の設計には疑問があって、VariCapを積んでいる回路とそうでない回路の併用による誤差の発生が気になってくる。 将来的には双方のオシレーターをVariCapコントロールにした方が良いかもしれない
posted by Yasuski at 13:50| open.Theremin

2017年10月16日

Open.Theremin@オシレーターコントロール用のVRポットを追加する

ボディー上面に、オシレーターコントロール用のCVを調整するVRポットを追加した。

IMG_7710.JPG

VRに印加する電圧は3.3Vで、抵抗値が1/2のポイントでオシレーターのベース電圧になるようにDAC出力との調整を行う。 発振周波数の調整はVariCapとの兼ね合いがあるので、実測した結果からCの値を調整して擦り合わせていく。

CVinput.png

Volume側との混信を避けるため、Pitch側のLを2mHに増やして発振周波数を低い方に変更する予定。またVariCap搭載側をリファレンスに変更し、アンテナは固定LCのオシレーターに接続する。

IMG_7714.JPG

VRポットは左右のポジションを置換して、調整時にアンテナとポットを回す手の位置を出来るだけ離すことにした。

IMG_7715.JPG

ケース上面左側のPitch調整用ポットは3回転型なので、細かな調整を行える。 右側のVolumeを調整するポットは、1回転(未満)のVRを仮付けしている。

次のヴァージョンでは基板上に部品を追加する予定。

WS001157.JPG
posted by Yasuski at 18:50| open.Theremin

2017年10月15日

OpenTheremin@CV機能の追加を検討する

キャリブレーションを行う過程でVRに中点のオフセットを掛けることで、正負両方向のドリフトに対処できる事に気付いた。

掛けられるオフセットのレンジ設定についてはとりあえず2/300kΩを予定しているが、最終的にはドリフトの発生量から逆算することになるだろう。
posted by Yasuski at 18:42| open.Theremin

Open.Theremin@オシレーターの補正について

昨日、二時間ほど継続して行った OpenThermin V3 の実証試験に於いて、「楽器としての基本性能と限界」が明らかになってきた。 ここで整理のために、今回発覚した問題点をまとめておく。

まず、演奏を行っている2時間余の間、オシレーターのチューニングが全く安定しなかった。 電源投入後に発生する初期の変動は通電後約10分程度で収束するものの、そこからは常にピッチが上がる方向にドリフトがゆっくりとではあるが継続する。周波数カウンタでオシレーターの発振を測定していないので断定は控えるが、オシレーターの発振周波数は明らかに低下する方向にドリフトしている。 特にドリフトが顕著に大きくなるのは、限界付近までの高音程を長時間に渡りキープした時で、試しに右手の位置がアンテナ直近の高音域から、低音域に右手をスライドさせてみると、高音域にポジションを上げる前に確認していた最低音の限界域が明らかにアップしている。 高音域に限らず、演奏を長時間継続した場合も同様に最低音域が高い方にドリフトする。 ドリフトの原因はコイルの発熱の影響と予想しているが、これは発信器の機構上の問題なので、根本的な解決は難しい。 ドリフトはVolume側でも同様のパターンで発生しているので、やはり構造上の問題と推測せざるを得ない。

次に、AC駆動時に明らかに増加するポップ音の発生率と、左手の動きに連動して生じる独特な低周波ノイズの 問題を確認した。 低周波ノイズは電池駆動アンプの場合でも発生していたが、AC駆動時の場合、これが無視できないレベルまで増幅されてしまう。 対処法として考えられるのは電源部にリップル除去用の手当てを行うことだが、ひとまず電源平滑用の電解コンの容量をアップするところから対策を開始する。 ただ、電池/AC、何れの駆動形態においても程度の差こそあれリップルが確認できているので、この件は視点を変えて調査を行う必要がある。

最終的には、ソフトウエア側からの修正で誤魔化せるレベルを超えた時点でドラスティックにシステムの破綻が発生するのだが、先のトピックで述べたように、DACからVariCapを制御するルーティンはそれだけで12bit×2の通信タスクが生じるわけで、これは音声再生を行うために使用するDACとの通信帯域を限定することに繋がる。 通信帯域のボトルネックを避けるためにVariCapの駆動はキャリブレーション・モード内に限定しているのだが、二回目のキャリブレーションで修正を行う際に、ソフト上のドリフト対策として生成されたオフセット値が、そのままDACの制御値に反映されてしまうというバギーな仕様にハマって、二度目の修正は困難を極めることになる。 このような状況を避けるために、キャリブレーションを行う際は常に電源を落としてリセットを掛けているのが現状なのだが、PA接続時の事故を想定するとあまりにヤバ過ぎるバギーな仕様は改めた方が良いだろう。 が、それ以前の問題として冷静に考えてしまうと、そもそもこのような状況下でソフト側から外部のアナログシステムに介入する意義が全く認められないのだ。

オシレーター回路へのVariCapの導入はチューニングのインテリジェント化を狙ってのことと想像しているが、外気温の変化だけではなく、演奏の影響で発生する自己発熱による周波数ドリフトが疑われるシステムに於いて、自動チューニングは実効性が欠ける仕組みと判断して良いだろう。 そこで、根本的な解決策はあるのかというとV3基盤に依存する場合の選択肢は回路のリプレイス以外に思い付けないが、その実際的な手法は、DACに代わってVariCapを手動でコントロールするアナログな方法だ。 つまり、オシレーターをVRポットを使って電圧制御するしかないのだ。

WS001154.JPG

回路図を参考にすると、DACの出力に繋がる R4/R8 の端子をフローティングし、そこにVRで分圧した電圧を加える。印加する電圧レンジの調整が必要だが、これにより、非常にアナログ的な手法ではあるものの、より確実にそして直接的にオシレーターのチューニングと修正を行うことが出来る。 またC6/C13とRの結節点に新たにMix用のRを追加してDACの出力とアナログCVを合成する手法をとれば、適正な初期値を呼び出した後に電圧を印加してCの値を減少方向にコントロール出来るので、

WS001155.JPG

こちらの方法も是非検討していきたい。 その場合は、VRの中点から得られる電圧をミックスする抵抗値を調整してで周波数の可動レンジを決定すればよいだろう。
posted by Yasuski at 05:17| open.Theremin

2017年10月14日

Open.Theremin@試験運用のリザルト

今日の午後は2時間ほどぶっ通しでテルミンの運用試験を行っていたのだが、その間最後までオシレーターの周波数補正を行わざるを得なかった。 体感的に「高いピッチ」を発音する度にドリフトが拡大していく感触を得たことから、オシレーター回路内の”L”の発熱による影響が疑わしい。

オシレーターの他の構成部品を考えると、温度変化の影響を受け易い”C”に加えて更に”VariCap”の温度係数が影響してくる訳で、しかも”L”に関しては外気温以外に発振の影響による部品の自己発熱という動的なファクターが絡んでくる。 つまり、演奏の内容によってドリフト値が変動しかねないということで、これは楽器としての性能を考えると由々しき事態といえる。 

現在、周波数の修正を行う構造は、キャリブレーションモード内でオシレーターのVariCapに送るDACからの制御電圧を調整しつつ、通常モードではソフトウエア的にオフセット値を解消するという2段構えの構造なのだが、この部分の複雑さが逆に制御を難しくしている可能性もある。 通常モードからDACの制御を外すのは、DACへのアクセスタイムを削る意味合いもあり、この部分を修正するのは余り得策ではなさそうだ。 

結論は、ソフトウエアで辻褄を合わせることを諦めて、単純にバリコンで発振周波数を調整する従来のチューニング方法を選択するのが正しい在り方なのだろう。 VariCapを活かす場合は、VRによるチューニングが可能だが、この場合出来れば多回転タイプのものを選択すべきだろう。
posted by Yasuski at 21:05| open.Theremin