2023年03月17日

LaVoixski@LPFを2次化する

過去に参照したこのサイトの記事を参考に、効きがいまひとつだった LPF をの構成を2次化した。

Screen Shot 2023-03-17 at 16.41.44.png

RAM1 の破綻を回避するために、フィルターの2次化を行うのは LPF1/2 のみとし、LPF3/4 及び HPF は従来のまま変更は行っていない。

IMG_20230317_170350115.jpg

ついでに、Pitch や Volume ディテクタに強化型 EMA を実装しようと試みたのだが、、、

Screen Shot 2023-03-17 at 19.47.47.png

予想通りメモリ管理の破綻が発生してコンパイルが通らない。 メモリのマージンを確保するためにサブルーチンに掛けていた "FASTRUN" を全て外すことで、なんとか EMA をリプレイスすることが出来たものの、何故か Pitch が安定しない現象が発生、残念ながらディテクタに関する改良は見送ることになった。

MCUのクロックアップは 912MHz が限界で、それ以上の周波数ではスタートアップ時にフリーズに陥ることが判明している。

追記:

Sequencerの仕様変更に表示を合わせるのを忘れていたので、これを修正した。

Screen Shot 2023-03-18 at 1.22.32.png

IMG_20230318_092759998.jpg

追記2:

Pitch 揺れの発生は、EMAの肩特性が急峻になっていることを忘れて「設定値をそのままにしていたこと」が原因と判明、設定値を調整する(フィルターの効きを強くする)対処を行ったところ、問題を解決することができた。

Screen Shot 2023-03-18 at 11.59.56.png

flat_pitch や flag_volume の動作を調整するEMA群の初期値を case1: と一致させておく必要がある。

Screen Shot 2023-03-18 at 11.48.45.png

Screen Shot 2023-03-18 at 11.48.19.png

今回は、EMAフィルタの構成を減らすことで、RAM1の破綻を回避している。

Screen Shot 2023-03-18 at 11.46.08.png

追記3;

件のサイトの例に倣ってEMAをFunction化した。

Screen Shot 2023-03-19 at 0.25.21.png

なお、Pitchのコントロールが効かなくなることを確認した後に、データ型を int から float に書き換えている。
posted by Yasuski at 17:05| LaVoixski

2023年03月15日

DaisySeedの接続になんとか辿り着いた

今日は、不調なテルミンのオシレータの調整から現実逃避する形で DaisySeed のオンボード LED を点滅させようと試みている。

書き込みを行う前に STM32duino の Getting-Started を参考に今一度IDE周りのセットアップを確認したところ、

Screen Shot 2023-03-16 at 0.03.55.png

STM32 CubeProgrammer のインストールが必要なことが判明、

Screen Shot 2023-03-16 at 0.06.25.png

STのサイトからダウンロードしたファイルを展開して

Screen Shot 2023-03-16 at 0.00.07.png

Contents 内のアプリケーションを右クリック open で Terminal から起動した結果、

Screen Shot 2023-03-16 at 0.00.18.png

ようやくインストーラが立ち上がってきた。

CubeProgrammer によるアップロードは、

Screen Shot 2023-03-16 at 0.07.09.png

IDE のセットアップから、DFU を選択する。

Screen Shot 2023-03-16 at 0.08.28.png

DaisySeed は USB 端子に接続しても IDE の Port タブにデバイスが表示されず、ボードに書き込みを行う際には Boot ボタンを押しながら Reset ボタンをクリックする儀式を行うことが必要で、 Arduino や Teensy とは作法が異なっている。

以上のメソッドを解説した映像を見つけた。Daisy を導入する際はこちらを参考にすればよいだろう。



今回はプログラムの書き込みが成功したようで、IDE に Start operation achived successfully と表示されたのを確認できたのだが、、、依然としてオンボードの LED は沈黙したままで、どうやら Teensuduino からデフォルトで出力されるスケッチでは LED が接続された Daisy のポートにアクセスが出来ないことが判った。

回路図でボード上の LED に接続された端子の詳細を調べてみたが、、、

Screen Shot 2023-03-16 at 0.41.52.png

端子の番号は G15 ということで、チップの pin 番号の対応表から端子の名称を逆引きしてみたものの、


Screen Shot 2023-03-16 at 0.41.19.png

PC7 = TRGIO と記述されているだけで、設定の方法が解らない。

Screen Shot 2023-03-16 at 10.23.34.png

仕方なく他のサンプルコードを調べた結果、LED ポートの指定項目に "LED_BUILTIN" との記述を発見、これを試してみたところ、正常な動作を確認することが出来た。

Screen Shot 2023-03-15 at 17.08.00.png

ちなみに、前回プログラムを書き込んだ後にシステムが起動不能に陥ったトラブルは、今回上書きしたプログラマーによって解消された可能性が高い。

ボードの動作を確認できたことに気を良くして他のスケッチを試してみたが、端子の指定が外れていてエラーが帰ってきたりするために、いまひとつ達成感が沸いてこない。 これはTeensyduino特有の現象かもしれないので、Arduino 2.0 でも動作確認を行った方がよさそうだ。

なにはともあれ、これでやっとシステム開発の入り口に立つことが出来たので、今後は暇を見つけて学習を行っていくことにしたい。
posted by Yasuski at 17:59| DaisySeed

2023年03月14日

LaVoixski@ボディーアースを試す



音程は非接地時より安定したものの、シャックリは止まらず。

あと、演奏技術そのものにも問題が、、、。

次に、音域のレンジが広い楽曲を演奏してみたが、、、



低域の操作性と安定度が明らかに増していて、ボディーアースの有効性を再確認できた。
posted by Yasuski at 23:14| LaVoixski

2023年03月13日

LaVoixski@オシレータの調整について

不調な Type_AN/PRC-6 に関連する回路のチェック項目を示す。
 
オーディオの音声ラインはこの辺りか、隣の回路に不具合がありそう。

Screen Shot 2023-03-13 at 3.52.20.png

OSC 基板は、調整が効かない Pitch 側のリファレンス用オシレータに問題がある。

Screen Shot 2023-03-13 at 8.15.05.png

Screen Shot 2023-03-13 at 18.19.47.png

実装しているオーディオ基板と OSC 基板は、共に設計が旧いタイプなので CAD からの映像とはラインが微妙に異なっているのだが、基本的な構造はほぼ変わっていない。

IMG_9311.JPG

IMG_8870.JPG

IMG_8871.JPG

Type_AN/PRC6 は、アンテナの中継ポイントが多い構造の所為で、オシレータの特性が読み難いのだが、、、

IMG_8321.JPG

IMG_8327.JPG

IMG_8303.JPG

そもそもが、オシレータそのものの調整にも問題を抱えていて、それはアンテナが折損した場合の対処である。

IMG_8522.JPG

現用しているアンテナは特性のバラツキが大きく、それはオシレータ側の調整にも影響していて、代替品による交換が難しい。 これは、アンテナ側にある程度の調整機能を持たせることで対処できそうなのだが、これから有効な機構を考えていかなければならない。

つまり、現在使用しているGFRP製なガイシの規格化が急務だが、これは何処かに製造を外注すべきかもしれない。

例えば、アルミパイプのインナーに半分割したガラスエポキシの円筒を内装して、パイプの外から圧を掛けることで部材を固定する方式を思い付いたのだが、アルミパイプに切ったネジ穴の強度が問題で、パイプの肉厚は最低でも3mmは欲しい。

他に、GFRP製ガイシのSMA端子側にネジを切ったパイプを圧入する手法が有効そうで、バラついていた静電容量が安定するかもしれない。 アンテナ側にも、同様の手法で加工を行うことで、接続を確実に行えるようになるだろう。
posted by Yasuski at 19:07| LaVoixski

2023年03月12日

LaVoixski@Type_AN/PRC-6で障害が散発する

回路を実装したAN/PRC-6に通電したところ、電源がショートモードに突入してしまった。

試しにオーディオボードを分離して電源を投入した結果、MCU基板の健全が確認できた。 どうやら新設計のオーディオ基板に問題が発生している可能性が高くなったが、念の為に MCU の USB 入力端子を中継するコネクタを外した状態で通電を行った結果、システムの立ち上がりを確認できた。

IMG_20230311_222208505.jpg

つまり、ショートの原因は自作した USB の中継ケーブルにあったのだが、問題はこれで解決されることはなく、電源投入時に「アンテナの接続を行わない状態」で、アンテナ入力と中継機を SMA ケーブルで繋いだ場合に、システムが立ち上がらないことが判明、また、「中継機にアンテナを繋いだ瞬間」にシステムがクラッシュてしまう現象が発覚している。

システムは、SMA ケーブルを取り外し、中継機毎アンテナを分離した状態で電源を再投入する手法で復活する。 ちなみに、オシレータ基板とMCU基板はピギーバックの状態で直結された状態なので、電源容量の不足により生じた問題では無いと思われる。

AN/PRC-6タイプのアナログ信号系の設計は、修正前の過渡期の故にレベルシフターの極性を判定する構造に混乱が生じている。 回路の働きは実機で確かめることになるのだが、現時点では音声出力が確認出来ておらず、まずはシステムクラッシュの原因を精査することから始めなければならない。

追記:

自作のUSBケーブルのジャックそれ自体に問題があったようで、

IMG_8877.JPG

ケーブルを取り払ったあとにラップトップからのプラグを挿入した途端にアラートが出た。

追記2:

何故かスイッチの状態を反映する筈のLEDの点灯極性が逆で、これを修正しようと色々と手を尽くしたのがどうやっても反転しない問題でスタックしている。 

Screen Shot 2023-03-11 at 22.54.36.png

GPIOを直接叩いても極性が反転しないのは異常な状況だ。

追記3:

オーディオ・ボードの検証に関しては、あまり使わない機能故に当初は運用の方法を忘れていた「オーディオ出力のオートフェード機能」を実装していたのが助かっている。 アンテナを接続しない状態でPitchノブを使って音程を操作した結果、音声の出力を確認できた。 ただ、VCOの信号が漏れ出して聞こえているのが問題で、不要な音声が混入する経路を精査する必要がある。

追記4:

state4 を反転させるコードの位置を後ろに持ってくることで、LEDが点灯する極性を修正することが出来た。

Screen Shot 2023-03-12 at 8.41.50.png

追記5:

Pitch側がアウトレンジでお話にならず、何故かリファレンスの調整が効かない。 Volume側はリファレンスが低い方にズレていて、こちらも調整の必要あり。



オーディオ・アウトは 2nd ch が不調で、残りの 3ch は出力できている。 フロントパネルを強く押し込むと妙な発振が発生するのが謎。

なお、DAC1ch辺りのチェックポイントはこのライン上となる。

Screen Shot 2023-03-13 at 3.52.20.png

表面実装タイプの電解コンは実装に失敗することがあるので、其処を重点的に調査する予定。
posted by Yasuski at 00:40| LaVoixski

2023年03月09日

DaisyにSPI経由でオーディオのデータラインを接続する計画

不定期に連載している DaisySeed への不満を書く。

KickStarter で5個を購入したものの、今に至るまで一度もシステムを走らせておらず(Lチカ以外のコードを走らせることもままならない)、Forum のレスポンスが悪く必要な知見が得られない。しかも HAL の実装が完全ではないために動作が保証されず、問題解決のために技術情報を掘り起こす過程でやる気が失せることを繰り返している。

で、どうやら今回もそのパターンに陥りそうな雰囲気になってきているのだが、現在取り組んでいるお題は「外部からのデジタル音声データの読み込み」で、このフォーマットが使い難い I2C 故に、チップごとに異なる CODEC の導入が必要なことが判明した。 

Screen Shot 2023-03-09 at 16.18.55.png

デジタル入力に拘っている理由は SAI が DMA を使える点で、なら SPI でも良いのでは?という話になってくるのだが、これが引き出されている端子配列の制約から実現は難しいように思う。

このままではアナログで音声をハンドリングすることになりそうで、adat フォーマットによって楽器から音声データの送受信を行うことを目論んでいる手前、単純に割り切れないところがある。

ちなみに、Daisy に組み込まれていた AK4556 は旭化成の九州工場が失火した影響により、現在は wm8731 に変更されている。 つまり、手持ちの旧いデバイスでは CODEC の設定が必須な SAI 経由で外部に接続を行うオーディオチップの混成は不可能と思われる。

SPI から LCD への接続も難易度が高く、LCD のライブラリがプアな状況は引き続き継続されているようだ。 UI の実装が可能かどうか、実機でテストを行いたいところだが、そのハードルは高い。 キャラクタ LCD の他には OLED に対応しているものの、これも適合する機種が限定されている。

Screen Shot 2023-03-09 at 1.01.18.png

ST のマニュアルによると、SPI はオーディオ・データの接続が想定されていて、

Screen Shot 2023-03-10 at 0.28.26.png

Screen Shot 2023-03-10 at 0.32.09.png

頑張れば接続が可能になるかもしれない。 

問題は SPI2 を使用する場合の端子の置換で、現在 USB ホストの予備端子に接続されているポートを利用することになるが、肝心の SCK2 の端子が引き出されておらず、

Screen Shot 2023-03-09 at 16.32.25.png

SPI2 は使用不能ということになった。

スワップが可能な端子を精査したところ、"AF6" を選択して SD 関連の端子を潰せば SPI3 が使えるようだ。

Screen Shot 2023-03-09 at 16.13.43.png

Screen Shot 2023-03-09 at 16.15.27.png

Screen Shot 2023-03-09 at 16.16.28.png

Screen Shot 2023-03-09 at 21.35.43.png

Screen Shot 2023-03-09 at 21.08.09.png

Screen Shot 2023-03-09 at 21.09.43.png

SPI 経由でオーディオデータのやり取りが可能になると、DaisySeed を DSP を搭載した便利な DAC として活用することが出来るので、Cube MX が吐き出したコードを参考にコーディングを行っていく。

Screen Shot 2023-03-10 at 3.36.13.png

Screen Shot 2023-03-10 at 3.41.22.png

Screen Shot 2023-03-10 at 3.40.26.png
理論上は、SPI1&3 でオーディオ信号を扱えることが判った。

ちなみに、久々に Teensyduino で Seed への接続を試みたが、相性が悪いのか「Lチカ」でさえエラーが発生して動作不能に陥ってしまうことが判明しているので、これを機会に Daisy Seed 専用の開発環境を整えて行く予定だ。

追記:
JTAG の JTDI 端子を潰して SPI6 のNSS を配置できることが判ったので、


Screen Shot 2023-03-10 at 14.32.26.png

Screen Shot 2023-03-10 at 14.28.55.png

Screen Shot 2023-03-10 at 14.26.47.png

試しにコードを出力してみた。

Screen Shot 2023-03-10 at 16.41.05.png

Screen Shot 2023-03-10 at 14.49.15.png

Screen Shot 2023-03-10 at 14.49.39.png

posted by Yasuski at 16:38| DaisySeed

2023年03月06日

LaVoixski@HPFを追加する

簡易なHighPassFilterを追加した。 



設置場所に悩んだが、BIAS_SHIFTの頁をスイッチから選択方式に変更して、機能を割当ている。

Screen Shot 2023-03-06 at 7.31.18.png

HPFの構造は単純で、無加工の音声データとLPF出力の差分を出して低域を減衰させる方式で、効果は薄いものの処理の負荷は軽く、それなりに動作する。  HPFの特性は高域の入力時にクリップが発生しない範囲で最適化を行っている。  

システムの構造上、低域方向の調整機能が限定されているため、実質的には「ラジオヴォイス」的な用法を目的とした固定フィルタとなっている。

Screen Shot 2023-03-06 at 7.24.40.png

操作系では、まずロータリーエンコーダの機能をスイッチからセレクタに変更し、、、

Screen Shot 2023-03-06 at 7.29.51.png

スイッチの構造もセレクタ方式に、、、

Screen Shot 2023-03-06 at 7.27.00.png

LEDの配色もセレクタに合わせて、項目を増やす。

Screen Shot 2023-03-06 at 7.27.31.png

文字の配列を調整して、修正は終了。

Screen Shot 2023-03-06 at 7.30.22.png

デジタルのクリップは嫌らしい音色なので極力発生させない方向でチューンを行っているが、その分だけ効果が薄味になってしまう点が悩み処だ。

追記:

HPFの導入に合わせて、15/29~32ch で固定していたレベルシフタの構成を切替方式に修正した。

Screen Shot 2023-03-06 at 8.19.40.png

追記2:

記録から漏れているが、LPF のモジュレーションをオンにすると、ディレイに AM 変調が掛かって面白いことになっていた。

あと、ディレイタイムの倍率設定と PhaseShifter の Rate 設定にミスマッチが発生することが判明したので、出来るだけそれを解消する方向でパラメータのハンドリングを折衷した。

Screen Shot 2023-03-06 at 15.29.47.png

追記:

整数のみに作用するmapに合わせてレンジの設定が正常に行われるように、コードを修正した。

Screen Shot 2023-03-10 at 16.19.33.png

これで、HPF選択時にオーヴァーレンジで音がブッ飛ぶ現象をある程度は回避できるようになった。
posted by Yasuski at 07:51| LaVoixski

2023年03月05日

LaVoixski@AN/PRC-6型筐体の組み立て

とりあえず、MCUとLCDの動作を確認した。

IMG_20230305_055930406.jpg

LEDはインバータを介してドライヴしているので、発色の極性を反転する必要がある。

Screen Shot 2023-03-05 at 11.01.43.png

また、ID-292とは基板の配線が異なっているため、ソフトウエア側で修正を行っている。

Screen Shot 2023-03-05 at 11.02.04.png

LCDの配線はCSとRSTの交差が必要で、これはライブラリを書換えずにリボンケーブル側で対処を行った。

IMG_20230305_110910417.jpg

他のID-292版との変更点は以下の通り。

Screen Shot 2023-03-05 at 15.08.58.png

Screen Shot 2023-03-05 at 15.08.53.png

Screen Shot 2023-03-05 at 15.09.25.png

Screen Shot 2023-03-05 at 15.08.44.png

Screen Shot 2023-03-05 at 15.08.34.png

追記:

照光プッシュスイッチのLEDへの直結配線は発色のバランスが悪く、緑が強すぎる。

IMG_20230308_070447907.jpg

スイッチに至るリボンケーブルに抵抗を挿入して、LEDの輝度を合わせなければならない。

Screen Shot 2023-03-07 at 19.14.49.png



posted by Yasuski at 11:12| LaVoixski

2023年03月03日

LaVoixski@ディレイの実装を行う

全出力chにディレイの実装を行った。 パラメータは暫定でLFO2と共有させている。



まず、EXTMEMに遅延素子として使用するデータ領域の確保を行う。 今回は 32bit × 65536 サイズのデータ・アレイを4つリザーブしている。

Screen Shot 2023-03-03 at 23.18.32.png

データ・アレイのアドレスは、オーディオ・クロックと同期した "timer" で指定している。 Delay Time を決定する数値は、Arpeggiator のパラメータ arpSpd から流用し、pot00m により倍率を決定する。 ディレイの最小単位は、「揺らぎを与える」目的もあってデータ・アレイのフルスケール 1/1000 ≒ 65 と大まかに設定しているが、いまのところ使用上の違和感は殆ど感じられていない。 正確な時間の精度に拘るのであれば、"65" から "44" もしくは "48" に数値を調整すればよいだろう。

Screen Shot 2023-03-03 at 23.17.48.png

データ・アレイのアドレスを「マイナスの数値」で指定した場合に、システム・クラッシュが発生して再起動に至ることが判明している。  "timer" は32bit 幅なので、読み出しアドレスに入力する データの幅を & 0x0ffff により "16bit" に制限する必要がある。

Screen Shot 2023-03-03 at 23.31.06.png

Delay Feedback は、音の濁りを避けるために L/R を襷掛けに信号を分配している。

Screen Shot 2023-03-03 at 23.02.17.png

追記:

Ritardando の発動時に DelayTime が変動してノイズが発生する問題は、Ritardando が発動しないデフォルトの Tempo = arpSpdB を代入することで防止することが出来た。

Screen Shot 2023-03-04 at 12.11.54.png

なお、この問題は Delay Time に Modulation を掛ける Flanger や Chorus を実現する上でフィックスすべき課題でもある。

追記2:

DelayのフィードバックループにAM変調を掛けるエフェクト。

posted by Yasuski at 23:33| LaVoixski

LaVoixski@ミュート→ピアニッシモ時の音量制御について

ゼロ・ヴォリューム → ピアニッシモ時の音漏れ対策として、DACにデータを出力する手前に再度フルスケールを”1”に加工した VolumeValue を乗算した結果、弱音ながら唐突に出力されていた信号を完全にマスキングすることが出来た。

Screen Shot 2023-03-02 at 23.45.15.png

総合出力にVolumeValueを掛ける手法のヒントは既に得ていたのだが、、、

Screen Shot 2023-03-03 at 0.38.00.png

メモリ管理の失敗からRAM1の配分が破綻したために、今日までこれを実現することが出来なかった。

追記:

ついでに、一部のプリセット(固定)音源に発生していたオーヴァーレベルの修正を行った。

Screen Shot 2023-03-03 at 4.06.20.png

追記2:

DMAMEMへのメモリ配分の変更を行う過程で、何故かDMAMEMよりもアクセスタイムが遅い筈のEXTMEMにメモリ・アレイを分配した方が動作が安定してしまうという謎な案件が発生している。

Screen Shot 2023-03-03 at 12.19.32.png

追記3:

Octave を起動して、Envelope 専用の Wavetable 生成プログラムを記述した。

Screen Shot 2023-03-03 at 13.24.12.png
posted by Yasuski at 00:44| LaVoixski