2020年05月10日

BirdfishGuitarのレストアを行う

塗装のヤレが進行していたTeuffel/BirdfishGuitarのレストアを行った。

高温多湿でカビの多い土地柄&前ユーザーの喫煙の影響?で、塗装の表面が溶ける案件が発生。PickUpを含めて塗面がベタベタに溶けて気持ち悪い状態になり始めたのが数年前のことだった。

本国に送り返すと10万単位のコストを覚悟せねばならず、数年間放置して迷った挙句、仕方なく自らレストアを行うことにした。

IMG_9890.JPG

まずは塗料を剥離して下地の様子を見てみたがこの作業が大変で、ほぼ半日が費やされることになった。 使用した剥離剤は400mlで、ほぼ完全に一缶を消費している。 剥離後の雰囲気は悪くなく、再塗装を行うよりも、スケルトンっぽい雰囲気を楽しむことに決定。 下地を研磨して見栄えを良くする作業に入る。

IMG_9902.JPG

レゾネーターには固定用に金属製のアンカーが打ち込んであるが、この部分が湿気て強度が落ちるとギター全体が崩壊してしまうらしい。

IMG_9894.JPG

ピックアップのモールドは統一されておらず、クリーム色のモールド樹脂は剥離剤に弱いことが判明。素材が変更された理由は定かではないが、製作者がレジンアレルギーに罹患したことが原因なのかもしれない。

IMG_9896.JPG

シングルコイル系はエポキシ樹脂によるモールドで、剥離時に問題が発生することはなかった。

IMG_9897.JPG

シングルコイルの裏面はこんな感じで、いい感じに透けている。

IMG_9898.JPG

クリーム色の材は柔らかい感じが不安だったので、念のために表面をアロン樹脂でコーティングしている。

IMG_9893.JPG

ついでに、その辺に放置していたダンカン製の6弦ベース用アクティヴ・ピックアップを取り付けてみることにした。コネクターにはLEMOの3pinを使用している。

IMG_9908.JPG

PUのサイズがデカ過ぎて配置が上手く決まらないが、なんとか無難な位置に設置することが出来た。

IMG_9911.JPG

行方不明だったLEMOの3pinコネクターを発掘した。 それでも一個分が足りない。

IMG_9912.JPG

ブリッジは既に圧電ピックアップ付きのものと交換していて、以前から取り付けていたアルミの小型ケースに出力端子を設置する計画だった。 今回の作業では、マジックテープで取付られていたケースを本体のピックアップ固定ガイドの取付ネジ部を使って完全に固定することにした。

IMG_9913.JPG

現状ではピエゾにバッファアンプを組み込んでおらず、ハムノイズが発生している。バッファアンプの追加は今後の課題。

IMG_9914.JPG

接続はHiroseの6pinで行うが、中継コネクターを介して本体側のエレキコンパートメントに信号を送ることを可能としている。

IMG_9915.JPG

ギターのエレキコンパートメントから伸びる中継用のプラグを挿入すると、6pinへの信号がギター本体にスイッチされる。この場合、6pinは電源供給のみを行う仕様だが、あと1ch分の設置場所を確保できなかった。

IMG_9931.JPG

さらに、余っているEMGのシングルコイルピックアップにLEMOのコネクターとピックアップ固定用のスタッドを取付ける作業を行った。

IMG_9932.JPG

工作が荒っぽいが、とりあえず使用に支障はなかった。

IMG_9937.JPG

フロントに配置するには、配線の長さが足りない。3PUを配置するには、真ん中の位置が妥当だが、新たにジャックを調達する必要がある。

IMG_9935.JPG

ピエゾPUにはHirose/6pinを介して接続したほうが良さそうなので、近日中にブリッジをバラしてコネクタを追加する予定。
posted by Yasuski at 04:32| MusicalInstruments

2020年03月08日

出力波形の確認を行う過程でAudioExciter機能関連のBugを発見する

BIAS切り替え回路の接続を変更した最新回路による出力波形の記録。



スレッショルドポイントの設定を失敗していたので、もう一本撮り直し。



オシロスコープのトリガースレッショルドを最適化した修正版の映像。 今回は、Distortion と Transition のオン/オフによる波形の変化を記録している。

ディストーションをオンにした状態のフルゲイン出力の波形がトーンホイール状なのが興味深い。音もそんな雰囲気がする。

スピーカーからの音をマイクで拾って居るために録音のクオリティーはイマイチだが、実際の出音のイメージはこちらの方が近いかもしれない。



LFO使用時に発生するGitterの記録を同時に行っている。 LFOの動作に出力の制御系が追いつかず、鋸刃状のノイズが発生している。



Mサイズ筐体のAudioBoardは別設計なので若干音のニュアンスが異なる。 これはTransitionによる波形の推移。 今回の音源ソースは、マイクではなくライン録音。



個別の波形出力はこんな感じ。 波形の歪が大きいが、聴感上は然程問題を感じない。

テルミンの単独出力波形の確認を行う過程で、Exciter(波形変換モード)の動作不良を発見し、コードの修正を行った。



バグは書き込み時のスイッチ長押しのルーティンに潜んでいて、複数設定していたmode判定のプライオリティの設定ミスが原因だった。

具体的にはmode7とmode2のうち、後者の条件分岐判定が優先される状態でbreakが発動して、データの書き込み&波形の再構成がスキップされていた。

修正後に動作を確認しているが、フィジカルコントローラーの多機能化に伴うコンフリクトがまだまだ潜んでいる可能性がある。

追記:

案の定、TransitionWaveformとDistortionSWの記録が行えないバグが見つかったので、原因となっていた箇所を修正した。

WS002080.JPG

WS002081.JPG

WS002082.JPG

WS002083.JPG

これらのバグは、整備中の試作モデルの波形観測を行っている過程で発見することが出来た。 

波形観測の後半は、adat系の信号を取り回すオーディオシステムの確認のため実験だったのだが、副産物として、AudioBoardのレベル設定等、整備のメソッドを確立しつつある。

こちらは、調整後のLサイズ筐体(一番旧い160mm幅のモデル)の挙動を記録したもの。



非直線回路の過渡的特性が、破綻なく綺麗に移行しているのが判る。

posted by Yasuski at 07:18| LaVoixski

2020年02月28日

Msize筐体専用基板の新調とアナログ・スイッチの配線について

ケースに孔を開けて基板を仮組みしているのだが、孔開けの精度が絶望的にアカン感じ。 

IMG_9782.JPG

基板のクリアランスがギリギリなのは想定内だが、補機類の配置をしくじらないようにしなければならない。

IMG_9813.JPG

孔開けのズレを解消するために、次回の工作でホールソウを試すことにした。

IMG_9814.JPG

新設計の基板には、MCU接続用のPogoPinを使用する。設置するPinの長さは12mm位が妥当か。

IMG_9778.JPG

IMG_9805.JPG

基板同士のクリアランスはなんとか維持出来そう。 仕様が固まったら、Hammondに加工済のケースを発注するのが正解かもしれない。

IMG_9783.JPG

MultiTurnVRを設置するスペースがギリギリで辛い。 

IMG_9786.JPG

ホンでもって相変わらず孔の位置が微妙にズレてしまう。

IMG_9795.JPG

材が微妙に粘るのもズレが生じる原因か。 より厚みのあるID-292のアルミ材はサクサクと削れてズレが少ない。

IMG_9817.JPG

ホールソーが到着したので、停止していた孔開け作業を再開した。

今回は8mmと10mmを試したが、8mmはタッパが足りず板に傷が付いてしまった。裏面からアクセス出来ない場合はプラワッシャー等を使った防護策を講じる必要がある。

ホールソーは下孔を中心にして一発で大穴が開くのが良い。 これで工作精度の向上が達成できそう。

残るケースの加工は裏板のヴェンチレーション孔と本体?に空けるUSB端子で、それらを除いて作業はほぼ終了している。

IMG_9853.JPG

その後、組み上がったオシレーター基板が発振しない原因を探っていたのだが、プリント基板の配線ミスという極単純な失敗を発見、これを修正した。

IMG_9857.JPG

配線の修正後に発振を確認できたが、

Screen Shot 2020-02-22 at 1.45.33.png

ヴォリューム側の時定数の設定を間違えていたようで、こちらは不足側に66pFを追加という現物合わせで対応した。

Screen Shot 2020-02-21 at 23.19.28.png

Screen Shot 2020-02-22 at 7.27.54.png

一方、DA基板のディストーション/出力レベル切替えスイッチの設計がイマイチなので、これをソフト側の制御でなんとか出来ないか思案を始めた。

LV2p3AudioSch75mm.png

配線の変更は、DistortionとLevelShifter関連のアナログスイッチを全て並列化しつつ、従来接続していたD2端子(現在はTransitionWaveformSelector連動)をLED表示のみに切り替えている。 

WS002079.JPG

また、D13のみでコントロールしていたDistortion系の出力に、正論理でLED表示を行うための反転出力"D50"を加えているが、このD50によって本来はオルタネイトに動作していた逆極性のスイッチグループを平行に駆動している。

WS002078.JPG

変更の結果は良好で、ステレオ出力に現れていた不要な歪を軽減することが出来ている。

WS002077.JPG

旧式基板の配線にも変更を行ったが、端子のラインアップが少々異なるため、配線の取り回しには若干の変更が必要となった。

IMG_9864.JPG

こちらは、Lサイズ筐体の配線。何れにしてもトグルスイッチICの極性が逆転していることに注意が必要だ。

IMG_9863.JPG
posted by Yasuski at 06:42| LaVoixski

2020年02月09日

PitchAntenna用エクステンションのコネクターをリプレイスする

接続が不安定だったPitchアンテナの接点をPogoPinに改良するついでに、アルミアンテナのコネクターを全てSMAにリプレイスした。

IMG_9769.JPG

SMAはTNCの大凡1/4の体積で、物々しさがなくシンプルなところが良い。

IMG_9768.JPG

接続が確実になった所為か、以前よりもピッチの予期せぬ変動が抑えられた感触がある。

SMAはTNCに比較すると強度に若干の問題がありそうに見えるのだが、圧入構造のアングルパーツに必要なハンダによる補強が容易なので、構造体の「分解」を含むトータルの強度はSMAの方が上になる。

IMG_9740.JPG

アングルの付いたSMA端子は四角い基台にコネクタが圧入されている構造で、直角にアンテナを取付けるにはコネクタの接合部をハンダで固定して強度を稼ぐ必要がある。

IMG_9741.JPG

SMAコネクタは表面積が小さく、アンテナ全体のシェイプがスッキリする。

IMG_9742.JPG

TNCとSMAのサイズを比較すると、SMAのコンパクトさが実感できる。

IMG_9759.JPG

ついでに残りのアルミ製アンテナの端子もSMAにリプレイスしておいた。

試験的にAmazonで購入した3Turnのプラスティック導電体のVRを導入した。このポットは単純にCV生成する為に分圧を行っているだけなのだが、リプレイス後の挙動が予想外で、Pitch側のチューニングのセンターがズレたうえに挙動がやたらとセンシティヴになってしまった。

IMG_9269.JPG

これはどう考えても異常な反応なので回路を精査したところ、交換したポットの特性が記載された"B"ではなく"A"カーヴのようだ。 このままでは非常に扱い難いので、ポットの配線を逆接続に組み替えた後、ノイズ除去用のコンデンサーを仕込んだところ、動作の不具合は解消された。

購入した小型ポットの値は貼ってあるシールの値を信用するしかないのだが、抵抗値が正しい一方でカーヴが間違って表記されていたようだ。 半額セールで購入した製品故に、訳あり品だったのかもしれない。

ちなみに、VRの特性がAカーヴであっても変化の方向が適正であれば何の問題もない。 そもそも、CVの変化特性がリニアではないチューニング機構では、そちらの方が却って使い易い場合がある。

posted by Yasuski at 00:00| LaVoixski

2020年01月28日

フィルター選択機構の条件分岐をifからswitchに変更する

ifを使って複数の条件に分岐を掛ける場合、参照先のソースを全てチェックする分だけ不要な時間が消費される。 例えるなら、1番最初に設けた条件に合致した後も、2番目以降に設定した条件のチェックを行うことになり、その分だけ計算機のリソースが空費されてしまう。

switchは、入力された整数を参照してcase毎に分岐させて処理を行う機能で、breakを行うことでプログラムの下流に配置された無駄な参照と評価をスキップすることができる。

ただし、これを使う場合には事前に対象となるソースを加工してパラメーターをハンドリングが可能な規模の整数に刻んでおく必要がある。 

改修を行う前に、まずはcase判定用のレジスタをリザーブする。

Screen Shot 2020-01-26 at 19.24.32.png

入力するソースを除算してその結果からレベルを判定し、分岐先でディテクターアウトの変化に掛けるウエイトを選択する。

Screen Shot 2020-01-26 at 20.53.34.png

ifに比べてプログラムがより判り易い構造になった。

Screen Shot 2020-01-26 at 20.52.44.png

何れの場合もデータを16段階に分類している。

Screen Shot 2020-01-26 at 20.53.10.png

レベルの判定を等間隔で行う場合は以上の手法で問題はないのだが、不等間隔でポイントを設定したい場合は、ifによる条件分岐が必須となる。 今回は多項式の表現を用いて視認性をより向上させている。

Screen Shot 2020-01-27 at 10.26.43.png

最近のコンパイラは賢いのでifからswitchに記述を変えても余り差はないという話があって、場合によっては速度が低下することもあるらしい。 

体感上は若干の向上が見られているのだが、これも気分の問題である可能性は否定出来ない。 判り易い判定法としては、廃止したディテクターのstepを比較してアウトプットの同期を切替える機構を復活させ、それにswitchを組み込めばハッキリするので、後ほどこれを試してみる予定。

追記1:

switch投入後のベンチマークとして、一部のモードで動作不良が発覚して廃止に至った「参照step切り替え機構」を復活させてみたが、以前に見られた5和音以上の発音で一部のEnvelopeに遅延が出る不具合が完全に解消されていた。 今回の改訂版では条件分岐を行うルーティンを2箇所追加した分だけタスクが増大している筈だったので、これは予想外の健闘と言えるだろう。

Screen Shot 2020-01-28 at 8.03.00.png

RAMの消費が以前より抑えられているようだが、これは合理的なリソース配分が行われたことを意味している。

よって、改変の御利益はアリと判定する。

追記2:

試験運用の結果、ピッチの中間域という微妙なエリアでバウンシングが発生しだしたため、プログラムのヴァージョンを元に戻すことになった。 出来ればLEDマーカーを仕込んで境界域の挙動を徹底的に調査すべきなのだろうが、とりあえずは現状で不満の少ないヴァージョンを選択することにした。
posted by Yasuski at 02:08| LaVoixski

2020年01月25日

TransitionMode下で発生するエンヴェロープの遅延に対処する

5Voice/PresetTuneModeでTransitionModeの特定の波形プリセットを選択した場合に、オシレーター2のエンヴェロープが遅延する謎現象が再発している。 いまのところ解決策は発見できておらず、問題が発生する発音パターンのプリセットを回避する対症療法を行うしかなさそうだ。

Screen Shot 2020-01-25 at 7.36.04.png

トラブルの発生はMCUの処理能力をオーヴァーした結果なので、これからシステムのダイエットを行っていくことになるのだが、まずは正攻法としてトラブルが発生する発音パターンを把握して原因を解析した後に、発音数を減らす方向で調整を行ってみたが、効果は全く無かった。

システムダイエットの過程で、コンパイラ頼りで適当なデータ型に記述していた箇所、例えば16bitでデータをハンドリングしているところにFloatを突っ込んでいたりするのがマズそうなので、データをキャストして辻褄を合わせることにした。

まず、取り扱うデータ幅を拡張するために、受け側のデータ幅を32bitに設定し直す。 

Screen Shot 2020-01-25 at 7.34.51.png

Pitchデータは16bitでハンドリングしているので、Floatを乗算した後に

Screen Shot 2020-01-25 at 7.35.19.png

データ型のキャストを掛けている。

あと、ステップ数でディテクタの結果を補完するタイミングを切り替える機構を廃止して、

Screen Shot 2020-01-25 at 7.36.21.png

Screen Shot 2020-01-25 at 7.36.36.png

Screen Shot 2020-01-25 at 7.37.29.png

Screen Shot 2020-01-25 at 7.37.49.png

代わりに元データを16bit幅で丸めていた各Transitionの制御信号を32bit精度に変更し、結果をbitshiftする方式にVolumeコントローラーの構造を変更している。

Screen Shot 2020-01-25 at 7.37.01.png

改変のリザルトはマアマアで、グリッチは相変わらず発生するもののエンベロープの遅延を無くすことができた。

削除したステップ数による切り替え機構は有効なので、Teensy4ではこれを復活させることになるだろう。


posted by Yasuski at 22:28| LaVoixski

2020年01月20日

ディテクタの改良

Pitch/Volumeデータが確定するタイミングを、FTMキャプチャ出力が更新されるサイクルの比較とadd_value(wavetableのポインタ)に設定した閾値で切替える機能を追加した。 

Screen Shot 2020-01-20 at 1.47.43.png

更新サイクルが長くなった方のタイミングで処理が行われ、補完のステップにはそれに準拠した値が設定される。

Screen Shot 2020-01-20 at 1.48.02.png

以前行った実験で、Pitch側のタイミングでデータを更確定させると高域でノイズが発生する現象を確認していたが、add_valueに閾値を設定しなかった場合に同じ症状が発現した。 

Screen Shot 2020-01-20 at 1.48.30.png

切替機能の実装後、低域で発生するグリッチが減少した一方で一定の周波数におけるバウンシングの発生を確認している。

オシレーターを物理的にリチューンするとバウンスが消滅することが判明しているが、原因がデジタル側のチューニングシステム内に潜んでいる可能性は否定できない。

現在は暫定でadd_valueの閾値を1000に設定しているが、これは低い方に修正を行うことになりそうだ。

そろそろLocalVariableに割振るRAMの容量が怪しくなってきたので、Wavetableを削除してRAMの余裕を増やしたが、

Screen Shot 2020-01-20 at 0.01.11.png

Screen Shot 2020-01-19 at 17.06.32.png

重タスク環境下でフリーズが発生することが判明、オプティマイザをSmallestCodeからSmallestCodeWithLTOに変更する必要が生じている。

その後、オシレーターのリチューンを行う過程で、ディテクタが参照するオシレーターの素の発振周波数の下限値がバウンシングの発生要因となっている可能性が示唆された。 低い方に周波数を拡張した場合にバウンシングが発生することから、入力信号のアップエッジのタイミングで瞬間値のキャプチャを行うリングカウンタが「一巡する周期」との関連性が疑われるが、その前にハードウエアの個体差から生じる物理的な影響を確認しなければならない。
posted by Yasuski at 06:55| LaVoixski

2020年01月14日

The waveforms around the lower frequency area

出力波形をキャプチャして、低域で発生するグリッチの観測を行った。



Lchのバイアスポイントが変動しているが、これは回路構成によるもの。

Screen Shot 2020-01-13 at 9.48.40.png

ほぼDCな出力周波数で、左手を動かした場合に発生するグリッチの波形。

Screen Shot 2020-01-13 at 8.14.57.png

マイナス側に振れたグリッチの波形を観察する。

Screen Shot 2020-01-13 at 8.15.17.png

波形を拡大していくと、ノイズに対して補完が行われているように見える。

Screen Shot 2020-01-13 at 8.17.05.png

より高速で波形をキャプチャできるオシロスコープでグリッチを観測する。やはり信号に乗っているノイズ成分に対して補完が行われているように見える。

Screen Shot 2020-01-14 at 14.34.26.png

ディテクタとして使用しているD-FFの電源回路に挿入した"L"が回路に影響を及ぼしている可能性があるため、

WS002072.JPG

これらを取り除いた結果、ノイズの軽減を確認できた。 ただし、完全なノイズの排除には至っていない。

WS002073.JPG

今回も Transition Mode を記録しているが、オシレーターを乗り換えるレスポンスを速い方にチューンするとグリッチが増えて仕舞う仕様故、帯域分割したウエイトの設定は実用性との折衷を行うことになる。



ディテクタのオプティマイズを更に進めた出力波形。



低域での安定性を高めるためにStep数の多い方のディテクタを選択して、データ出力の同期を行っているが、これも完全ではない。
posted by Yasuski at 10:12| LaVoixski

2020年01月12日

Hammond/1455K1601専用サイズの基板が届いた

新しい基盤にFPGAを実装し、

IMG_9738.JPG

ファームウエアを書き込んだ。

WS002071.JPG

基板の配置に関してはある程度のマージンが確保されているのだが、ケース上に展開するインターフェイス系部品の配置を優先して基板のセンターを出した場合、ギリに設定しているオーディオ基板とMCU基板のクリアランスが心配になってくる。 厚み方向のクリアランスは現物合わせとなるので、ケースの加工は基板が完成した状態で行うのが安全だろう。

ここ連日、周波数ディテクタのチェックというか最適化を試行錯誤しているのだが、一定の周波数帯域に妙なバウンシングが発生する現象に悩まされている。 バウンシングはオシレーターが冷えた状態で発生する兆しがあるが、家電製品からの電源経由もしくは放射による高周波の影響も看過できない。 電波暗室の必要を感じるレベルというのは大袈裟でもなんでもなく、放射系のノイズに関してはどこもかしこもが劣悪な状態にあると聞く。 廃棄処分のホットカーペットでシールドを作ることも考えているのだが、日本家屋は肝心のアースが甘いのでその効果は限定的になりそうだ。
posted by Yasuski at 15:43| LaVoixski

Pitch側データ出力の更新と線形補間をVolume側がデータを更新するタイミングと同期させる

左手のレスポンスを改善するために、Pitchディテクタのサブルーチン内に展開していたVolume関連の処理をPitchディテクタ関連の処理と共にVolumeディテクタのサブルーチン内に移し替えた。

Screen Shot 2020-01-12 at 5.27.40.png

これでVolume側のデータが更新されるタイミングにPitchデータの更新が同期されることになったが、右手側の追従性に問題は無さそうだ。

Screen Shot 2020-01-12 at 5.28.20.png

グリッチが若干増えているが、速いパッセージの演奏に耐えうるレベルまでレスポンスを改善することが出来た。

左手のレスポンスとグリッチの抑制はトレードオフの関係にあり、現時点で自分が持つスキルでは折衷を行うのが精一杯だが、この「折衷」のポイントには厳密な解がなく個人的な趣向が反映される。
posted by Yasuski at 04:25| LaVoixski