2018年08月26日

ディストーション回路とレベルシフター回路についてのまとめ

全出力のステレオ化に対応するため、テルミンの歪み系音源のバイアスを調整するスイッチ、及びアッテネーターの設定を変更した。 この機会に備忘録を兼ねて、オーディオ回路終段に追加したスイッチ周りの回路を解説する。

現状は、D2がディストーション系信号経路のレベルシフトを、D13が通常回路のレベルシフトと、ディストーション回路のバイアスシフトを同時に行う仕様で、

WS001430.JPG

ディストーション回路で行うバイアスシフトは、バイアスポイントをグランド電位まで下げることで下半分の波形をクリップする機能を持つ(*注1)。 

vlcsnap-2018-06-19-18h23m38s648.png

要するにこれはディストーションをオンにするスイッチと思えば良い。(*注2) 

バイアス電圧を変更できるディストーション回路は、全体の音質が過度に歪みっぽくなるのを避けるためにメイン出力2系統のうち1系統に限定されている。 オーヴァーロードモードで波形を加算した場合はD/Aを行う前の段階でソフトなディストーションが発生している。

通常レベルの信号を出力する側にオーヴァーロードモードの信号を分配した場合、レベルが過大になって出力のバランスが崩れてしまう。 これを回避する為に使用するアッテネーターがD2によってコントロールされている。

今回行ったスイッチング項目の追加はあくまでも暫定的な処置で、実のところは全アドレスのステレオ化に伴って細かな齟齬が出てきている。 レベルとパンニングの状態に関しては、今一度測定器を使用して精査を行う必要がある。

注1: これは基板製作時のポカミスで、アッテネーターの受けにしていたバッファーアンプのバイアス抵抗をグランド電位に接続していたことに端を発する機能で、エキサイターのハーフウエーブクリッピング機能に近い。バイアス電圧に接続を修正したら好みの音質から外れてしまった。

注2: 波形を見て判るように、グランド電位でバッサリと切られてしまういささか乱暴な仕様なので、回路にダイオードクリッパーを追加してソフトニーを与えられないか検討している。

ダイオードクリッパーの効果を見極めるために、LTspiceでシミュレーションを実行した。 

WS001437.JPG

バイアス電圧は1/2VCC固定。オペアンプの非反転入力端子から抵抗を介したダイオードクリッパーをグランド電位に接続している。 シミュレーション開始後にバイアスポイントが0V側にドリフトしていく過程が良く判る。

シミュレーションの結果を出力した音声の記録。


diodeClipper from yasuski.



映像はクリッピングポイントを可変抵抗で制御する過程を画像化したもの。 実際に入力される信号は波形が複雑なので、効果は更に大きくなる。

この回路は抵抗値を調整してクリッピングポイントを移動できるので、出音の調整をより微妙に行える点が良い。

diodeClipperSch.png

ちなみに、基板の改造は結構手間が掛かるので、次のロット分の改変を行っておいた。

DiodeClipper.png

diodeClipper02.png

diodeClipper03.png

posted by Yasuski at 07:03| AudioElectronics

2018年08月20日

ID-292版のピギーバック化について

ID-292版AddOnBoardのデザインを完了した。

LaVoixAddOnNew.png

対応するロングピンを見つけるのに手間がかかったが、20pin+4pinの組み合わせが最適だった。

基板のシェイプを非対称にしているのは、ピギーバック時のコネクタとのクリアランスを考慮したため。

ボードは、Box形状なpinの使用が前提となるため、既に丸ピンを使って製作した基板にスタックすることは出来ない。 また、MCU側もBox pinを装着した個体のみの対応となるので、今後基板をスタックする場所のコネクタには丸ピンを使えないことになる。

ID-292系は基盤のサイズに制限があるが、ピギーバック化である程度は機能の拡張に対応できる。 この場合、親基板上にはオーディオクロックやADAT系のチップが乗っかるだけで、AddOn側にDACやMCU、Oscillatorの主な機能が移行する。 つまり、Hammond版と似たような構成になるのだが、肝心のオーディオ系をMCUと分離しきれないところに限界がある。 抜本的な改良を行うには親基板側の改装が必要だが、要求される仕様によって実装するパーツを選ぶ場合は、現状の設計がベストだろう。

Oscillatorに関しては、ピギーバック化によってButtler/Colpittsの何れかのタイプを選択できる構成になっているが、片方ずつの機能を選択することで、オシレーター系統の完全な分離を行うことが出来る。 Buttler系に関しては、フロントパネル側に回路を分散させることもできるので、ローカル側でも更なる隔離が可能な仕様となった。

各セクションへの電源の供給に関しては、ノイズキャンセル用のLを各要所に配置してあるので、実装済の回路をアイソレートしたい場合はこれらを取り除くだけで良い。

実際のところ部品の「全部載せ」はなく、事前にある程度機能を絞って部品の配置を行うことになるだろう。つまり、AddOnとはいっても最初から機能の拡張を考慮した状況で、親基板共々取捨選択を行いながらシステムを構築していくスタイルに落ち着くと予想している。

旧式の親基板の使用に関しては、オシレーターとオーディオ系の機能を停止することを前提にした場合、adatを使用しない場合は2代目青基板から、adatを含めた場合はRev4.04の初代緑基板まで遡って転用が可能となる。 問題となるのはオシレーターの選択だが、AddOn基板のColpitts型の使用が推奨される。セカンド・オピニオンとしてトップパネル側のButtler型に機能を分散させる方式が採られることになるだろう。

追記:

基板の2階建てを行う場合、クリアランスを考えて特にMCUを装着するアドオン側の基板にロープロファイルなソケットを使いたいのだが、在庫を漁っていて発見したラッピングタイプのソケットが最適なことを発見した。 ロングピンタイプのソケットを既に発注してしまったのは少し早まった感があるが、ラッピングタイプのソケットはレアなのか結構な値が付いてしまっている。 ロングピンにはMCUのデバッグ端子という使い途があるので、在庫を抱えても問題はないのだが、ラッピングピンの在庫を消化した後はロングピンに移行することになるだろう。 

追記2:

ラッピング・ピンの在庫を大量に発見した、、、。 これも貰い物だったが、在庫管理が適当すぎてイカンなあ。

posted by Yasuski at 17:38| AudioElectronics

テルミン開発に関する方針の転換について

現在行っているデジタルテルミンの開発に関して諸々方針の転換を行いつつあるが、ここで考えをまとめるために記録を行っておく。

まず、基盤のサイズについて。 これは、ID-292という面白いシェイプのケースに収めることを前提にしていること、フリー版Eagleのサイズ制限内に基板のサイズを収めること、この二点により支配されていた。 サイズの制限に関してはKiCad等に乗り換えることでクリアできるが、ID-292は自作テルミンのいわばアイデンティティーのようなものなので、これはおいそれと諦める気にはなれない。

IMG_8153.JPG

が、ここにきて不安定なオシレーターの問題が浮上、現在改良を行うべくシミュレーションを繰り返しているが、設計に課せられるサイズの制限は大きなマイナス要因として働くことになった。 ID-292はシェイプが美しく実装の実績もあるのでこれを捨てる気にはなれないが、これをメインとして考えるのは少々無理に思えてきた。 実際、基板の実装密度も2層ではほぼ限界に近く、これ以上密度を上げることは困難な状態だ。

幸い、試作に使用したHamnmondのケースはデザインもよくサービス性に優れていて、代替のケースとして申し分のない素材であった。 

MFG_1455N2201RD.jpg

特に、試験専用筐体として開発した個体にはバックパネルを装備していて、これによって以前の閉鎖的な開発環境では到底考えられなかった試みを手軽に行えるようになった。

IMG_7906.JPG

このケースは、内側に基板をスロット状に挿入できる構造で、その幅は丁度100mmとEagleの制限下で基盤をデザインするにはうってつけの仕様である。 基盤はスロットに複数枚を挿せるので、1枚に全てを実装する必然はなくなり、クロストークが危惧されるオシレーターやオーディオ的にノイズ源から分離すべき機能を別基盤にまとめることが可能になる。

ということで、現在50×100mmのサイズにMCU/Oscillator/Audioの各セクションを分離して実装する作業を行っている。 まず、MCU基盤についての基本仕様を説明すると、UIとの絡みから旧来の配置を維持しつつ、オーディオやオシレーターの機能を分離している。 

LaVoixskiHammondVer1.0.png

未だ動くかどうかわからないadat系の機能はこの基盤に残してあるが、専有面積はそれほどではなく不要であればチップを実装しなければよい。 adatの機能を実用化出来た場合も、不要なDACを搭載せずにコストを圧縮できる。 MCUからはピンアウトを可能なかぎり引き出して、新たな機能の拡張にも対応できるようにしている。

AudioBoardのDACには、転送速度が速くNOPの回数を極限まで減らしても動作する実績を買ってMAX5717を採用する。

LaVoixskiAudioBoard.png

タスク処理のボトルネックが発生する原因の一つにDACとの通信に専有される時間の影響があるため、使用するDACは可能な限り高速でハンドリングの手法が単純なものを選択する。 DACの分解能と速度はトレードオフの関係にあるが、MAX5717はそのバランスに優れた製品といえる。 ボードにはこのチップを4個実装する。

AudioBoardにはこの他、出力バッファー&ディストーション回路が搭載されているが、こちらも4回路分を用意した。 ただ、楽器の運用に関しては基本がステレオを1まとめとして考えているので、追加分の2chはサブチャンネル扱いとなるため、ステレオ版とは違った作法で信号を扱えるようにスイッチ回路に差別化を行っている。

最後にOscillatorBoardだが、これは試作版として2種類の基板を用意した。 

1枚目はバトラー型発振器で構成された2回路ペアを1枚の基盤にまとめたもので、PitchとVolumeは別基盤に完全に分離される。 

OSC1board.png>

もう一つはコルピッツ型発振器2ペア4回路を1枚の基板にまとめたもので、こちらはコンプリメンタリ・トランジスタを使ったICを使用するために発振回路の完全な分離を行わずボード一枚に機能を集約している。

OSC2board.png

で、話は全く変わってしまうが、いかにも借り物で長ったらしいOpenThereminOnTeensyからそろそろ楽器にまともな名称を付けたいのだが、今のところ思い付いているのはLaVoixskiというこれまた発音し難そうなもの。 
本当に定着出来るのかどうか甚だ怪しいが、暫くはこの名称を使っていこう。
posted by Yasuski at 03:52| AudioElectronics

2018年08月17日

SequencerModeを新設する

使い勝手が悪くオマケ機能の印象が強かったSequencerModeを、独立したパラメーターとしてリファインした。

IMG_8442.JPG

これまでは、Sequenceの再生を2VoiceModeの3アドレス分に割り振っていた=再生できるSequenceは3つまでだったが、今回の拡張で再生数を8 Sequenceまで増やすことになった。

IMG_8432.JPG

ただし、このまま再生chを追加するとMCUのメモリー使用量が限界を超えてしまうので、1Sequence辺りのStep数を1024に減らし、8ch分のエントリーを可能とした。

IMG_8443.JPG

RGB LEDの単純なオンオフに拠る順列組み合わせで発色可能な数は消灯を含めた8種類で、Sequencerの項目を増やすには新たな色味の設定が必要となる。 今回はRとGの調合を工夫して中間色を発色させることにした。 追加するパーツは電流制限用の抵抗と電流の逆流防止用のダイオードで、ダイオードには極力順方向電圧が低いものをチョイスしている。

IMG_8447.JPG

Rは最も効率が良い光源なので、同じ電流を流した場合どうしても輝度が勝ってしまう。 そのため、Rには電流を調整するための抵抗をダイオードとシリーズに配置している。 一方、効率の悪いG/Bはダイオードを2個直列に挿入する方法で電圧を調整した。 また光源によって使用するダイオードを変更して、色味の調整を行っている。

IMG_8454.JPG

SequencerModeには独自のプリセット項目、「再生スピード」と「波形選択」を新設している。 このうち、「再生スピード」はRGBロータリーエンコーダー下側のArpeggiator/Patternの前にアサインした。 また、VolumeAntennaによって再生スピードのコントロールが開始されるスレッショルドはArpeggiatorよりも若干ではあるが近接域で発動するように調整している。

IMG_8459.JPG

SequencerModeのエントリーは、RGBロータリーエンコーダー上側の最終項目にアサインしている。 色味はオレンジ。 下のLEDはEditModeを表すヴァイオレット。 こちらもRとBの比率を調整した中間色。

IMG_8462.JPG

今回の改装では、WaveFormSelectorをEdit可能なアドレスにアサインした時に発色がSkyBlueからVioletに切り替わる機構を追加している。 以前から編集モードのアサインが判り辛かったが、これで混乱なくモードの確認を行えるようになった。

IMG_8424.JPG

上側のRGBロータリーエンコーダーでは、消灯に色みをアサインしていたChordhEditModeを編集可能なパラメーターを表現するLavenderに変更しているが、輝度の個体差からMagentaになってしまった。 使用しているRGBロータリーエンコーダーは個体差が激しそうなので、事前にLEDの順方向電圧をチェックしたほうが良いだろう。

IMG_8425.JPG

例の如く、バックパネル裏の配線は混乱の極みな状態だが、今回追加したパーツはRGBロータリーエンコーダーのLEDに直接配線した4芯ケーブル2本とコネクタ、電流制限用の抵抗とダイオードで、ダイオードには2種類のショットキバリアダイオードを選定している。

IMG_8420.JPG

Rの電流制限に使用する抵抗値は120Ωとしたが、LEDの個体差が激しく発色を事前にチェックする必要があるようだ。

IMG_8419.JPG

4pinコネクタは丸ピンICソケットを転用している。

IMG_8416.JPG

今回の改装で部品の追加可能な領域を使い果たした感があるが、今後ハードウエアに関する変更は新しく製作したシステム上で行うことになるだろう。

IMG_8410.JPG
posted by Yasuski at 17:03| open.Theremin

2018年08月09日

OpenThereminOnTeensy@楽器の近影

IMG_8358.JPG

2回路分のバイアス電圧切り替え&レベルシフト回路を追加した時点で、バラック感が加速した。

バイアス電圧の切り替えは、波形電圧の振幅の中点をズラしてハーフウエーヴ・ディストーションを発生させる装置で、古のハーモニック・エキサイターに似た用法のエフェクターとも言える。 純デジタル的にこれをやろうとすると結構な手間が掛かってしまうので、過渡特性が複雑な歪み系回路はアナログに任せて仕舞うのが良い。

サンプリングレートの選択や、上面に配置したプッシュスイッチの中継もここで行っている。

IMG_8353.JPG

NOSで確保していた自転車用Q/Rは在庫が希少過ぎて入試が難しい。 代替部品として、コンヴェンショナルなマイク用のパーツを選定しているところ。 ツマミ類も希少なパーツなので、これも良いデザインのものを探さなければならない。

IMG_8341.JPG

この楽器にフィットするハモンドのケースは3種類あるが、アンテナのクリアランスを考えた場合、これよりも更に1サイズ上の製品をチョイスした方が良いかもしれない。

IMG_8333.JPG

マルチターンのVRと、デジタルスイッチの調達が今後の課題。 マルチターンVRは側面からアクセスするタイプの精密半固定抵抗で代用することも考えているが、その場合はノブの扱いをどうするかが問題となる。 

IMG_8340.JPG

左側のアンテナにシールドの追加を検討している。 まずは実験に拠る実証が必要だが、その際にはローディングコイルの装着も行ってみたい。

製品版では、Hiroseの6ピンコネクターの代わりに電源の供給をMicroUSB端子、信号出力を3.5mmのフォン端子で行う予定。 出来るだけレアなパーツを使わない方向で調整を行っていく。

IMG_8339.JPG

縦横比のシェイプは、このケースが一番美しいと思うが、次回は更に横長の製品を試してみたい。
posted by Yasuski at 13:20| open.Theremin

Open.Theremin@インターフェイスの現状(暫定)

Ver.5.1 (Nightly Build #19)に於ける RGB Rotary Encoder の設定(暫定)を記す。

IMG_8257.JPG

The mode select pattern
Power On:LED Upper (Green) Pitch tune
 
LED Lower (Purple) Transition set
click 1:LED Upper (Blue) Volume tune
 LED Lower (SkyBlue) Preset change
click 2:LED Upper (Red) in the 2 VOICE MODE
 
LED Lower (White) Tuning Pitch 1
in the CHORD EDIT MODE
click 3:LED Upper (Yellow) in the 3 VOICE MODE
 
LED Lower (Black) Tuning Pitch 2
in the CHORD EDIT MODE
click 4:LED Upper (Purple) in the 4 VOICE MODE
 
LED Lower (White) Tuning Pitch 3
in the CHORD EDIT MODE
click 5:LED Upper (White) in the 5 VOICE MODE
 
LED Lower (Black) Tuning Pitch 4
in the CHORD EDIT MODE
click 6:LED Upper (Black) in the CHORD EDIT MODE
 
LED Lower (Green) the volume control 1
in the OSCILLATOR EDIT MODE
click 7:LED Upper (Green) return to the 1st position
 
LED Lower (SkyBlue) the waveform selector 1
in the OSCILLATOR EDIT MODE
click 8:
LED Lower (Blue) the volume control 2
in the OSCILLATOR EDIT MODE
click 9:
LED Lower (SkyBlue) the waveform selector 2
in the OSCILLATOR EDIT MODE
click 10:
LED Lower (Red) the volume control 3
in the OSCILLATOR EDIT MODE
click 11:
LED Lower (SkyBlue) the waveform selector 3
in the OSCILLATOR EDIT MODE
click 12:
LED Lower (Purple) the volume control 4
in the OSCILLATOR EDIT MODE
click 13:
LED Lower (SkyBlue) the waveform selector 4
in the OSCILLATOR EDIT MODE
click 14:
LED Lower (Yellow) the volume control 5
in the OSCILLATOR EDIT MODE
click 15:
LED Lower (SkyBlue) the waveform selector 5
in the OSCILLATOR EDIT MODE
click 16:
LED Lower (Red) the counter mode selector
in the ARPEGGIATOR MODE
click 17:
LED Lower (Green) the speed controller
in the ARPEGGIATOR MODE
click 18:
LED Lower (Blue) the pattern selector
in the ARPEGGIATOR MODE
  
Push
Cal SW
over 1s:
Tuning Pitch antenna by 10 turn volume pot
Push
Cal SW
over 1s:
Tuning Volume antenna by 10 turn volume pot
Push
Cal SW
over 1s:
Recording the Initial Values (skip OK / Do not need
to set them if the oscillators are not warmed up)
Push
Cal SW
short time:
Return to play mode








posted by Yasuski at 08:03| open.Theremin

2018年08月08日

OpenThereminOnTeensy@オペマニュアル最新版

そろそろ仕様が固まった感があるので、何度目か忘れたがオペレーション・マニュアルっぽい映像を作った。



今回は、CSSV等の説明がややこしくなるポイントを端折っているので、出来ればOverViewと項目毎にまとめた映像を製作する必要がある。
posted by Yasuski at 20:55| AudioElectronics

Open.Theremin@波形合成部のリファイン & "File"の修正

基本的なテルミンのプログラム開発が一段落した感触なので、今週からは音色のプリセットを中心に調整を行っている。 この時点で該当するヴァージョンは5.0。

現在ROMに書き込んでいる設定を、microSDから読み出す仕組みに改変することを考えている。 発振波形の記録は既にmicroSDに移行しているので、ついでにそれをミックスする比率も外部に記憶させれば、カスタマイズを行った結果を他の楽器に簡単に反映出来るようになる。 

当初は、処理がややこしくなるCSSVではなく単純な数値の読出し機能だけを実装すれば良いので、改良のハードルは低いと思っていたが、単純作業とはいえ該当箇所に予備を含めた6ch×14アドレス=84パラメーターの読み出しを行うルーティンを記述する作業は半日仕事となった。

改良を行う過程で、SDカードの差し替えで楽器を分解する手間を思い出した。 これを省くための簡易な波形編集プログラムを製作することにした。 途中で、プログラム上のバラバラな場所に位置している波形編集データを一括して視認でき利点に気付き、データの扱いにすこし工夫をした。

WS001421.JPG

倍音構成とミックスレベルが一望できるので、合成する波形の全体像が容易に把握できるようになった。

WS001422.JPG

これも、ライブ演奏を行った時のフィードバックだが、全音声出力のステレオ化を行うことにした。 ステレオ化のメソッドは、前半のアドレスにはモノラル×2といった単純な方法を採り、後半は微妙なパンニングを行うように調整する。

コードを組んだ後に楽器で試験を行っうと、いきなりの大破綻で音がぐちゃぐちゃになっってしまった。 プログラムを動作が保証されたヴァージョンに戻しても症状は変わらない。 いくらなんでもこれはおかしいので原因を探るっていくと、サンプリングレートを設定するピンが抜けていた。 96kHzで運用など出来るわけがないので、ピンを繋ぎ直して楽器を正常な状態戻した後に再びテストを行ったが、改良の結果はあまり芳しくない。 特に、プリセット波形を選択した時にシステムが破綻して例の「スローモーション状の処理の遅れ」が発生してしまう。

やはり、全チャンネルステレオ化は無理な相談だったのか。 サンプリングレートを下げるのが一番手っ取り早い解決法なので、32kHzまでレートをダウンして運用を行ったところ全モードで破綻のない動作を確認できた。 ここにきて、サンプリングレートの手動切替装置の有効性が証明されたようなものだが、44.1kHzに特別な拘りはないので、暫くは32KHzで運用を行うことにする。

一方、波形編集項目をmicroSDに移行する計画だが、コードのコンパイルは通ったものの通電後に楽器が起動しない謎の現象が発生した。

いろいろと要素を取り替えて原因を追求してみたが、なかなか原因がハッキリしない。 試しに読み出し機構を殺した状態で起動試験を行ってみたが、プログラムの同じ場所でスタックしてしまう。 

変数だけを残して、読み出し機構を完全に取り除いた状態でも、スタックが発生する。 追加した怪し気な要素はSDカード絡みに限定されると判断して更に要素を取り除いてみたところ、なんとmicroSDにアクセスするためにFile名を登録した時点で破綻が発生することが判明した。

取り込み機構や、アレイ変数が乱立する情況が原因と思っていたら、予想外のところに地雷が埋まっていた。 多分これはバグなのだろうが、ひとまず波形の編集は外部に記録せず、コード上で行うことにした。 (暫定的にこのVerは5.2としている)

SDカードに関しては殆ど知識らしいものがない手探りの状態で導入を進めていったのだが、やはりこの周辺のコードが怪しい。 仕切りなおすために、作例を調べ直す過程で気付いたのは、”File”をバッファーと認識出来ていないことだった。

単なるバッファーとしてならば、名称は”myFile”等でも良いわけで、実際の作例もそのように記述されているものが多い。 SDカードを導入した当初に、混乱を避けるため要素ごとに異なる名称を付けていたのを、そのまま拡大させてしまったことが悔やまれる。

結局、散乱したファイル名を”sdData”という名称に統一することにしたが、”SEQ01.TXT”といった形でmicroSDに格納するファイル名をバッファーと同じ文言にしていたために作業がややこしくなった。 

WS001426.JPG

一括で書き換えを行うのが楽だが、

WS001427.JPG

それをやると書き換えてはいけないファイルパスまでが変更されてしまうのだ。該当する箇所をピックアップして検証する手間を考えて、チマチマと手動で変更を行うしかなかった。

このように、錯綜していたFileの管理状態を

WS001424.JPG

シンプルな形に修正した。

WS001423.JPG

修正の効果は絶大で、無駄に消費していたメモリーが6%も開放された。 結果フリースペースが増えたので、読み込む波形を1つ増やしている。

ちなみに、余ったメモリーはローカル変数に使用されるため、最低でも5%は余裕が無いとシステム全体が作動しないようだ。 (この時点でのヴァージョンは数字が戻って5.1となった。)

スケッチを大幅にダイエットした筈なのに、コンパイル後のプログラムのファイルサイズが5割増程に激増しているのが謎だ。

WS001425.JPG

以前体験したオプティマイザーのバグっぽい挙動も、このような使用者側の非常識に起因していたのかもしれないが、まあ普通バグはそういった場合に出てくるものなのだから仕方が無いとも言える。


posted by Yasuski at 15:11| open.Theremin

2018年08月06日

Open.Theremin@コルピッツ型発振回路について

コルピッツ型発振回路のシミュレーションを行っている。

WS001419.JPG

C1とC4のコンビネーションで発振周波数が決定する。150pFと330PpFの組み合わせが、Pitch/Volumeが干渉し難い設定だろう。 

150pFから330pF辺りのチョイスで350~440kHz辺りの周波数に落ち着くようだ。 この回路の周波数調整は少々レンジが広くなりすぎるので、ある程度は制限が必要かもしれない。 C4の値を増減することで、変化の幅を調整できるはずだ。

当初の設定では発振周波数が高すぎたのでC2/C3の値を調整して周波数を下げていく。

WS001412.JPG

WS001414.JPG

WS001415.JPG

WS001416.JPG

これは、Volume側に予定していた発振器の周波数レンジ。 C1/C4の値は220pF。 変化幅50kHzは少々広過ぎるか。

WS001417.JPG

Pitch側オシレーターの周波数レンジ。 C1/C4の値は150pF。 C2/C3は470pFとした。

WS001418.JPG

Franklin and Butler の結果はこちら。

WS001420.JPG
posted by Yasuski at 17:21| open.Theremin

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