2018年08月05日

Open.Theremin@Arpeggiatorにメモリー機能を実装する

Arpeggiatorの初期設定をmicroSDから読みだす機能の実装を完了した。

Arpeggiatorを停止する際に、Arpeggiatorのローカルバッファーに設定を上書きすることで、記録された状態は何度でも復活する。

初期設定は該当するパラメーターにアクセスした際に解除され、その時点のロータリーエンコーダーの値に上書きされる。 Arpeggiatorを停止するまでは、ロータリーエンコーダーのローカルバッファーがパラメーターの値として認識される。 

停止でArpeggiatorのローカルバッファーに初期値を上書き、パラメーターにアクセスする毎に、ロータリーエンコーダーのローカルバッファーの値で上書き、という動作を繰り返す。

初期値の記録は、該当するVoiceのArpeggiatorモードでクリックエンコーダー上側を長押しして行う。

運用上の混乱を避けるため、楽器立ち上げ時の初期状態は、Transition = 紫 とした。 シングルクリックで音色設定 = 水色、ダブルクリックで、Arpeggiatorのノート設定 = 青 に移行する。

30分ほど演奏してみたが、混乱することはあまりなく、実用度の高い機能を実装できたと評価している。
posted by Yasuski at 21:28| open.Theremin

Open.Theremin@オシレーターの問題を考える

検討中のアンテナのセンシングを行うベクトルの変更だが、確かに普通のテルミンと同じアンテナに手を近づけると音程が上がる方向でチューンを行うと、低域の安定度が格段に上がるようだ。

その反面、ピッチの直線性がメタメタで、Hz/V方式様の挙動を示す。 これを解決するために、アンチログ関数を掛けてみたが、処理の遅れが大きく使い物にならなかった。

解決策としてはやはり変化のカーヴを登録したWavetableを参照するのが正解と思われるが、こちらも遅れ時間を気にする必要が出てくる。

やはり正道は、まともなアナログ特性を備えたオシレーターを製作する、その一点であろう。

発振回路の方式を調査する過程でこのサイトを見つけた。

http://www.robkalmeijer.nl/.../1990/02/page32/index.html

コンパクトで素敵なシェイプの回路だが、アンテナを繋いで適度にドリフトしてくれるかどうかは判らない。 回路そのものは既にYaesu製通信機"FT101"のMODで稼働実績があるという。

ちなみに、今試験中の回路はリファレンス側とアンテナ側の発振回路の構造が若干異なるため、ドリフトの発生はある程度折り込み済ではあったが、アンテナ側のオシレーターに、運用に拠る負荷が原因と思われる周波数のドリフトが発生。 これが、温度変化の影響とは明らかに異なる挙動を示している点が大問題で、発振回路の設計を考え直さなければならない。

8月中に製作する予定の実証機のオシレーターは現行の設計で評価を行うことになるが、これはダメ出しの確認となる公算が高い。 従って、ハードウエアの製作と同時にドリフトの少なそうな発振回路の選定を行うことになるが、まずはLTSpiceを使って事前に回路の実効性と必要となる部品の定数を探ることにした。

さて、そのLTSpiceだが、いじり方を完全に忘れているのは当たり前で、数百日以上の間放ったらかしだと起動時にアプリから恨みがましく指摘された。

とりあえず回路を書き込んで行ったシミュレートの結果は「発振しない」だったが、今回は元になるモデルの作りが怪しいので、判定はペンディングとした。

WS001392.JPG

オリジナルの時定数では10MHz近辺で余裕で動いているので、やはり定数の設定がダメなのだろう。

あれこれイジった結果、7Vまで電源電圧を下げても稼動する状態に持ち込むことが出来た。

WS001393.JPG

どうも、チャージポンプ回路周りの定数がキモのようである。

WS001394.JPG

オリジナル回路の電源電圧は8Vの設定で、この状態の発振はより安定している。

WS001395.JPG

FFTの解析結果はこれで、まだまだ周波数を下げなければならない。

WS001396.JPG

Vari-Capを操作した時に発生する周波数の変動値を観測したところ、あまり芳しい結果ではなかった。

WS001399.JPG

500kHz辺りは放送との関係でマージンが取れないので、更に下の周波数を下げていく。

WS001400.JPG

部品の時定数をカットアンドトライで試しながら波形の確認を行う。

WS001401.JPG

ようやく3.3Vまで電圧を下げることが出来た。

WS001402.JPG

割とフラットに周波数が変化しているが、適当に選んだVari-Capのモデルなので結果はあくまで参考値。 
Cは47pF等、小さめの値を選んでいる。  ついでに、異なる時定数を用いて発振周波数の変動を確認する。

WS001403.JPG

高い方の周波数ではデューティーサイクルが変化するようだ、これは、出力コンデンサーのマッチングの問題と思われる。

WS001404.JPG

発振が開始される初期段階の波形。 充放電のタイミングに問題があるのか。

WS001405.JPG

これが、低い方の周波数を発進させた場合は、デューティーサイクルのバランスが理想的な状態になっていた。

次に、VariCapを0Vから3Vまで加圧した時に発生する周波数のスウィープを、異なる周波数設定下でシミュレートしてみた。

WS001406.JPG

高い周波数のほうがリニアリティーが良い感じだが、オシレーターを干渉させたゼロビート周辺で発生する可聴帯域の変化カーヴのような極々狭い領域ではまた別の挙動を示すのだろうか???

WS001407.JPG

デューティーサイクルの望ましい比率に関しては、チャージポンプ周辺及び出力バッファ前の時定数で調整する必要がある。 次に、BB914の設定をインポートしてシミュレーションを行った。

WS001408.JPG

結果はまるで違うが、よりフラットな反応が得られた。

WS001409.JPG

回路定数はこれでほぼフィックスしている。

WS001410.JPG

試しに、他の低電圧動作が保証されたVari-Capを試してみたが、これは変化幅が大きく、アンテナ接続に拠る周波数変動をカヴァーできるレンジが確認できた。

WS001411.JPG

次の試作基板では、このVar-Capを使って実験を行うことにした。
posted by Yasuski at 18:08| open.Theremin

2018年08月02日

Open.Theremin@オシレーター死亡ケースの謎

驚くべきことだが、ソフトウエア上でWavetableを読み出すだけのOscillatorが「死んでしまう」案件が発生した。

音が変だ?と感じてオシレーターの発振を個別に調べたところ、ソフトウエア的に内装している5基のうち3基からの反応がない。 分解してSDカードのデータを調べてみたが、ファイルに問題は見つからず。 接触不良の可能性もあるが、カードを抜き差ししても問題は解決しない。

コンパイラの問題なのか???

そういえば、今朝は昨日と音が違う感じがしていたのは、Oscillatorが死んでいた所為なのだろう。

その後に行った調査の結果、謎のオシレーター死亡の件はMCUの交換で決着した。 まさか、発熱&気温の上昇が凄すぎて、接着した放熱板がズレてショート事故が起こる等というシチュエーションを想像できただろうか。 頻発していたショート事故の原因はこれだった。 度重なるショートによってMCUはご逝去されたのであろう。 MCUの状態が謎だが、中途半端に死んでるのかコンパイルが通ってしまうのがやるせない。

ちなみに、データ読み出しのエラーは、コンパイラ/オプティマイザーのバグであったことが判明している。

WS001389.JPG

オプティマイザー/LTOで発生していたエラーが、Pure-Codeにスイッチすると解消されたことが判る。

IMG_8302.JPG

posted by Yasuski at 22:57| open.Theremin

2018年08月01日

Open.Theremin@ArpeggiatorにSceneMemory機能を追加する

先日行ったライヴ演奏の体験で、演奏を行っている最中にVoiceModeを変更した場合に、Arpeggiatorのスピードやフレーズ等のパラメーターが固定されている状態が予想していた以上に遣い難いことが判った。

モードを切り替えても一本調子で同じパターンが機械的に繰り返されるシチュエーションによって、Arpeggitatorから感じられる「機械っぽさ」の印象が助長されてしまうのだ。

マイナスの印象を少しでも軽減するために、VoiceMode毎にそれぞれの設定が切り替わるようにインターフェイスを変更した。 構造は単純で、Arpeggiatorを構成しているコードのローカルに条件分岐によって切り替わるバッファーを組み込むだけ。 VoiceModeが切り替わるのと連動して、Arpeggiatorの設定も切り替わっていく。

現時点ではmicroSDに設定を記憶させる機能を追加していないために、事前にパラメーターを仕込むことが必要だが、これも使いにくいことが判明した時点で徐々に改善を行っていく予定。



試験運転を終えた後の印象としては、パラメーターがややこしくなる分だけ混乱を回避するためにメモリー機能が必要な感触だった。 一番にアクセスするのは緑=スピードなので、ここに読み込み機能を盛り込むか。

ついでに、Voice毎に音色も切り替えたほうが良いと感じたが、こちらはメモリーが必須。

追記:

その後、ヴォイスモードに連動したプリセットの記憶方法に関して試行錯誤を行っていたのだが、何故かメモリーした値の表示が狂ってしまう謎のバグが発生。外部に同じものを移植するとまともに動くという気味の悪い状況で、結局メモリー機能の実装はペンディングとなってしまった。

WS001388.JPG

モードによってローカルの設定を切り替える機能の実装は成功しているので、本番前にパラメーターを仕込めばよいのだが、電源が落ちれば終わる原始的な設定は出来れば避けたいところ。

が、ロータリーエンコーダーが絡む機能は、何故か基本設定値の扱いが難しく、なかなか上手く動作してくれない。

多分、「クリックエンコーダー」周辺の機能そのものに問題があるのだが、ルーティン内に仕込んでいる出力リミッターを外部に出し、エンコーダーからの出力はデータの増減のみに限定するのが正道っぽい。

ついでに、コンパイル時の設定をPure-Codeなるものに変更したところ、

IMG_8302.JPG

コード領域の仕様サイズが7%ほどアップしてしまった。 面白いのは、荒れていたVolumeアンテナ側の挙動がマシになったと感じたことで、(明らかに音量が下がっている)原因は謎だがひとまずこの仕様を運用を続けてみることにした。
posted by Yasuski at 23:37| open.Theremin

2018年07月27日

LEMOの8pコネクターをアンプに取り付ける

数年ぶりに行うライヴ演奏からのフィードバック。 

IMG_8294.JPG

なかなかやる気が出なかったのを思い切ったのが運の尽きで、丸一日がこの作業に費やされることになった。

IMG_8279.JPG

嵩張るスピコンを排除するために、フォン端子を使ったスピーカーケーブルをアンプに増設しようとしたが、丁度よいサイズの取り付け穴を開けられず、作業が長引いてしまった。 スピコン端子には2ch分の信号線を仕込んでいるので、サテライトスピーカーを一個プラスする情況ではこちらを使用する。

IMG_8283.JPG

製作するスピーカー用のケーブルは10m。スピコンのケーブルは6m程だったので、長さが足りずに現場で微妙な状況に陥ることが多かったが、これでキャパの広い場所でもある程度は対応できるはず。

作業の過程で電源が短絡するトラブルが発生したが、原因はなんとebayで購入したLEMO製の8pケーブルそのものにあった。

IMG_8288.JPG

よく見るとなんだか変な構成のケーブル=所謂変態仕様なブツだったことが判明。

IMG_8289.JPG

その内実は、単線×3本とシールド線2組、それとグランドラインで合計8端子という、なんだかよく解らない構成の代物。

IMG_8290.JPG

このシールド線のグランドが短絡の原因だった。

IMG_8291.JPG

代わりに在庫していたジャンクの12芯シールドを使ってコネクターを改造した。

IMG_8292.JPG

パワーアンプ系の配線など大電流が流れるラインには2芯を撚ってそれに充てている。

LEMOのデザインはNeutrikとはまた違った雰囲気を持つ。

IMG_8275.JPG

サテライト化した4chデジタル・パワーアンプ&#1chスピーカーユニット。

IMG_8270.JPG

オーディオ的には、滅茶苦茶な設計である。

IMG_8267.JPG

これは本体っぽく見える電源部。

IMG_8285.JPG

日付が変わる前に、なんとか音を出す事ができた。

IMG_8286.JPG
posted by Yasuski at 02:56| AudioElectronics

2018年07月25日

Open.Theremin@アルペジエーターにオン・オフスイッチを追加する

やはりこれがあるのと無いのとでは使い勝手に雲泥の差があった。

パターン読み込み後にアルペジエーターをオフった場合はその和音構成のままフリーズするので、テキストベースで編集できる和音のチャンネルと思ってもよいだろう。
posted by Yasuski at 13:52| AudioElectronics

2018年07月23日

Open.Theremin@デジタルフィルターの復活

電池切れ対策を兼ねてAC駆動の多チャンネルアンプで演奏してみたら、コレが存外気持ちの良いものであった。



ただし、ここまで至るのには紆余曲折があって、当初は低域部のノイズが酷過ぎて、運用出来る状態ではなかった。

今回再確認したのは、このテルミンは通常のテルミンが周波数を扱うのとは逆の方向でセンシングを行っていることで、アンテナに手を近づけるほどゼロビートに近づいていく。 システム上の最低域の設定は、FTMカウンター上で測定可能限界の高い周波数を意味する。

このテルミンの妙な扱いにくさはここに原因があったわけだが、オシレーターの実験を行っていた段階で、ペアのうちどちらをリファレンスとして扱うかを選択する過程で、センシングの方向性が決定されていたことを失念していた。 現状行っているセンシングのベクトルを変更し、通常のテルミンと同じ方向でデータを扱えないかソフトウエア上でトライしてみたが、現時点でその試みは上手くいっていない。

低域が荒れるのは当たり前で、高い周波数のセンシングエラーがそのままノイズの発生につながっていた。センシングエリアのダイナミックレンジを狭めても、音域が狭まるだけであまり効果はなかった。 この問題を解決するには、やはりデータにフィルターを掛けるしか無い。

ということで、デジタルフィルターが復活した。使い様を間違えなければこれはかなり有効なノイズ排除の手段となった。

Screen Shot 2018-07-23 at 11.59.22.png

Screen Shot 2018-07-23 at 12.00.31.png

あとは、Arpeggiatorのポリフォニック化を行った。 これ以上タスクを増やしてどうするんだとも思ったが、とりあえず動作上の問題はあまり無さそう。

追記:

やはり、Pitchサイドの低域側が不安定なのが問題に感じたので、Pitchアンテナの接続をD-FFのデータ側接続されたオシレーターに変更した。これに伴い、調整用に取り付けていた66pFのコンデンサーをアンテナと同時に移設している。

ヴォリューム側は現状で安定しているので、回路はこのままにしておく。 D-FFのクロックで入力をクロップする構造は、DINがアンテナ、CLKがリファレンスとするのがオリジナルの回路だが、Volume側ではこれを入れ替えることで、アンテナに近接するポジションをゼロビート側に設定することが出来る。データが荒れないゼロビート側は、微妙な音量コントロールが必要な立ち上がり時の挙動を安定させる働きがあるので、今後はこの設定で回路を構成する。

追記2:

実際に楽器の運用を行って感触を試しているが、音のアラがよく見えるアンプはこの段階で重宝する。 電池駆動の弾薬箱アンプもJBLのカーステ用スピーカーを積んだ新版だったので、こちらもアラが見えるタイプのアンプだったが、AC駆動のアンプにはボロン製のコーンを持つスピーカーが積まれている。 これを鳴らすことで、今までに見えなかった問題点が浮き彫りになってきた。

低音域が不安定で音がフラフラする症状は、センシング時に取り込むデータの「ヒゲ」が原因と思われるが、ディテクターに細工を施した後も、程度の差こそあれ気持ちの悪い操作感はあまり改善されない。

ビットシフトでデータのLSBを削る方法がこの状態に対処する一番単純な方法だが、これをやってしまうとデータのレンジが狭まるために楽器の音域が狭くなってしまう。 Tootsの口笛のシミュレートがしたいのでこれは困る。

解決法として、結局は廃止していたデジタル方式の帰還型LPFを復活させるのだが、前回の作業でこれをディテクターの後のチューナー部に仕込んでみたところ、相応の効果は確認できた。

が、どうしても気になるレベルのフラフラが残ってしまう。 やはり、ゴミデータの元を断つには、ディテクターとして使っているFTMから差分データを取り込むその場所にフィルターを噛ますしかなさそうだ。

ディテクターは、PC_STATE1 / PC_STATE2 に入力されたオシレーターからのパルス5カウントを1ユニットとして、入力されたパルスの立ち上がる間隔を測り、その差分をデータとして出力している。 まずはこの差分出力にフィルターを掛けて、出来る限りデータの不連続ポイント=ヒゲを減らす。

データの中心値を設定するポイントでは、5カウント毎に地均しされたデータが送られてくるが、ここでさらにフィルターを掛けて異常値を取り除いている。

この作業は一度に行ったほうが良さそうだが、多段フィルター的な考え方で異なる係数を掛けるのが目的。最適値はまだ判明していないので、これから演奏に差し障りの無い範囲で、ヒゲを無くす方向にチューンを行っていくことになる。
posted by Yasuski at 19:17| open.Theremin

Open.Theremin@試験環境をAC駆動のアンプに移す。

結局、E-Kora用に作ったアンプで実験を継続することにしたが、アンプ&スピーカーによって、見えてくるアラが違うのが良く判った。 3chとはいえ妙なパンポット効果を確認できたので、これから面白そうな音源配置を考えていくつもり。 まずは、シーケンサのCHをここに割り振っておいたが、これが意外といける感触だった。

実験でサンプリングレートを変えてみたが、やはり32kはチューニングのレンジが狭まるので、ソフトウエア側の対処無しでの導入はアウトっぽい。 48kは意識されるような問題は無かった。 96kもチューニングのレンジが滅茶苦茶になるので、こちらも設定をこれに合わせないと使えない。

低域の不安定さが再発しているのは、過剰に機能を盛り込んだ影響なのか? そろそろ、ロジアナを使って処理ループの観測を行うべきだろう。
posted by Yasuski at 06:10| open.Theremin

2018年07月22日

Open.Theremin@バッテリードライヴ化を真面目に考える

テルミンのバッテリードライヴ化を考えた場合に、高価なHiroseのコネクターを1ペア使用するだけで6k以上が吹っ飛ぶことが大問題で、これを解消する方法を考えていたのだが、モバイルバッテリーをそのまま使用するのがお手軽なことに気付いた。

問題は接続端子で、丁度良いサイズの製品が見つけられない。ひとまずは、パネルマウントのMicroUSBポートを試してみることにするが、フットプリントが大きめなのが気に入らない。

あとは、電源周りとの整合性をどうやって確保するか。 データインプットと共用する場合に、パソコン側の電源容量に影響が出ないか問題だが、最大消費電力はMCUなので、これは大丈夫かもしれない。

音声アウトをLEMOに、、、とか要らんことを考えてしまったが、これも6kを余裕で超えるので、現実味はない。 普通のステレオミニジャックがベストで、足りない分は増設すれば良い。

電源供給口の位置を何処にするか、判断が難しい。 諸々の条件を試作機で試すことになるが、現実的には実験機のボディーサイズがバランスが取れていて扱い易い気がしている。

それにしても、ミニジャック形状のパネルマウント型USB端子がこの世に存在しないのが不思議なんだが、よく探せば見つかるのだろうか???

ということで、自作を考えることにした。 多分この方法が正解の一つと思われる。

IMG_8261.JPG

音声端子はこの製品と組み合わせる。

TTRSbreakout.jpg

シャシはいつものNeutrikを使用するとして、材料費は合わせて0.7kから0.8k程になるか。

WS001384.JPG

電源供給用のmicroUSBケーブルとスリムな3.5mm規格の音声ケーブルで、スッキリと配線が行える。バッテリーと音声系が別接続なので、自己が発生する確立は低い。 なにより、既成品のモバイルバッテリーをそのままで使えるところが便利だ。

ID-292版の場合はあのデザインが最優先されるので、Hirose製コネクターはそのまま使用することになると思う。
posted by Yasuski at 09:35| open.Theremin

Open.Theremin@オシレーターのチューニング

この日も朝方からコーディングをやっていて、ついでにケースの加工を始めて気がついたら夕方というかなり感覚が飛んでしまう一日だったが、更に夕方からは楽器を完全にバラして端子の配線を始めてしまい、晩飯も食わずに日付が変わっていた。

ケースの加工後に実験を行ったところ、トリマによるオシレーター周波数の修正が可能な限界点を超えそうな状態に陥って仕舞った。 どうもスイッチ類の実装が影響してオシレーターのチューニングレンジが低い方に移動した結果のようだ。 このままでは楽器としての運用が不可能になるので、余り気が進まなかった全バラシを強行しオシレーターの再チューニングを行うことになった。

今回は以前から気になっていたアンテナ側のオシレーターの周波数を変更したかったのだが、これがなかなか上手く行かず、前回の作業と同様にリファレンス側を調整することになった。 対応方法としては、グランドに接続している220pfをさらに小さな値に交換する必要があるが、丁度使えそうな値のパーツが手持ちになかったので、実験は未了。 現在、Pitch側のオシレーターは480kHz辺りにチューニングされているが、Volume側が450kHz近辺に居るために、周波数のマージンが心配になってくる。

過去に追加したリファレンス側のコンデンサを取り除き、新たに33pf×2を並列に接続して作業は終了した。 ひとまず、Pitch側オシレーターの周波数はVRTの調整レンジ内に落ち着いた。 

その後、運用試験を始めたところ、何故かシステムが落ちて再起動が頻発する案件が発生しだした。

電池の減り具合の影響を予想しつつ調査を行ったところ、サンプリングレートの設定を行うつもりで増設した、デジタルスイッチのコモン端子をグランドに落とすのを忘れていたことが原因のようだ。 つまり、PLLの周波数設定端子がフルでオープンの時の設定、96kHzという無理な仕様で音を出していたことになる。 当初はまともに音が出ているので気付かなかったが、全体のタスクを減らせば96kHzによる運用が可能なのが証明されたということでもある。

今後は気軽にサンプリングレートを32kHzにダウンする実験が行える。 明日は楽器専用電源を製作して、楽器の挙動を確かめよう。
posted by Yasuski at 05:31| open.Theremin