2019年4月18日木曜日

Blog 5周年記念: 製作物のまとめ(2018/05~2019/04)

いつのまにか5年もたってしまいました。

この1年はデジタル・アナログ混在でいろいろやってました。

チップチューンも好きなんですが、アナログ音源も好きなので、合わせ技で何かできないかという模索です。デジタルの正確さとアナログの自然さ(音のぬくさ)を共存できないかと頭を悩ませています。

コンセプトはピュンピュンマシン。バカでもガキでもラリって(※1)ても、つまみをひねれば面白い音が出てくる」です。

デジタル・アナログ混在で開発すると、マイコンの処理速度によって、特に(UI系の処理も含めた)1回毎の処理の周期性によって可聴帯域でノイズが発生することに気づいてに留意しました。

デジタルの演算ですべてを済ませて、最後にいっせーのせでアナログ信号に変換すれば、デジタルノイズは最後の最後で除去するのに集中できますが、マイコンとアナログ回路を行ったり来たりすると、可聴帯域に入ったノイズは容易には除去できません。

未だ試行錯誤中です。聞こえないからヨシとするのは性分に合いませんが、突き詰めると泥沼にはまりそうです。

また去年は、諸事情(※2)によりIoTにも手を出しました。

※1)私の場合は、飲酒によるラリりです。
※2)去年の夏の猛暑のせいで両親が熱中症でダウンしたので、環境パラメータを測定したくなりました。両親はおかげさまで健在です。

制作物


Nucleo DCO


外観

中の配線

筐体はまだ製作途中です。

ブロック図

Nucleo-F767ZIをコアとして製作しました。基本的にはDDSで波形を生成しているだけですが、3OSCなので操作子が増えて複雑な配線になってしまいました。

Nucleo-F767ZI(Nucleo-144 Board)はADCの入力端子が多いので、外付けICなしで済みました。端子が多いだけでもNucleo-144 Boardはありがたいと思います。

パラメータを表示するのに中華製のI2C接続のOLED(SSD1306)を使っていますが、表示が遅すぎて実用的にはかなり厳しい状態です。Nucleo-F767ZIから直接制御するのではなくて、別のマイコン(Arduinoなど)に任せようと思っていたのですが、IC間通信のテストが上手く行かず保留しています。

OLEDの表示を抑止すると操作子のレスポンスがあからさまによくなるので、なんとかしたいところです。

DACの出力波形はデジタル的なガタガタが乗っているので、出力部で6次LPFをかけて波形をなめらかにしています。今回はベッセル特性のフィルタを使いました。出力波形がサイン波だけではなく、のこぎり波や矩形波などエッジが尖っている波形も出力しないといけないので、過渡特性を重視しました。

ベッセル特性はバターワース特性のフィルターよりキレが悪いのですが、過渡特性がよく、フィルター通過後ものこぎり波はのこぎり波、矩形波は矩形波らしい原型をとどめてくれます。参考「Nucleo DCO 出力部(LPF)の検討

アナログ的にマスターピッチを揺らすことも考えていたのですが、MIDI CV ConverterのMIDI_CV_CONVでMIDIでピッチを変調できるので保留しています。

PWMや各OSCのDetuneはCVで揺らせられた方がおもしろいと思うのでいずれやってみたいと思います。

DASS01



ブロック図(現状)

現状では、VCOはNucleo_DCOから入力で、VCF(TLF01)、VCA(Dual_OTA_VCA)のみのアナログ・シンセです。

TLF01


トランジスタ・ラダーフィルターです。実際に回路を組んでみてDr.Moogの恐ろしさを改めて痛感しました。AIが発達してもこの回路を発明するのは相当難易度が高いと思います。普通のフィルターとはまるで異なる発想のフィルター回路で、このぬくさ。しかも帰還をかけて発振スレスレの出音の面白さを出しているところも特筆すべきだと思います。

トランジスタ・ラダーは電流制御されるため、電圧で制御するためには電圧→電流変換が必要になります。TLF01に載せている電圧→電流変換回路はFETを使ったリニアなものです。ジャンパーによって外部の電圧→電流変換回路も使えるようにしています。

AntiLog_MM


NPNとPNPトランジスタを使った、シンプルなアンチログ&電圧→電流変換回路です。アンチログとはリニアな電圧変化を音階のような指数関数的な変化に変換するものです。プログラムで書くなら、y = exp(x)です。これをトランジスタの特性を利用して電子回路で実現します。

トランジスタは電流出力のため、そのままトランジスタ・ラダーのカットオフ周波数を制御する電圧電流変換回路となります。

CV_AMP


マイコンを使った自作のモジュールは、3.3V系、5V系が多いのでアナログ回路に突っ込みやすくするために可変アンプを作成しました。-∞~3倍増幅で可変できます。なんのヒネリもないオーソドックスな非反転増幅回路ですが、それなりに役に立ちます。

±12V_+5V電源



ジャンク品で買った±15V、+5V出力のスイッチング電源をもとにしています。

DoepferのEuroRackの規格にならって、±12Vと+5Vの電源にしました。3端子レギュレータを使って±12Vに降圧しています。アナログ回路用の電源なので(心配事をなくすために)電源ノイズを減らしたいと思っています。

今の所DASS01では+5V電源は使っていないので±12Vのみの電源として使っています。たぶん必要になると思うので、+5Vも使えるようにすると思います。

Arduino EG 



Arduino Pro Miniを使ったエンベロープ・ジェネレーターです。エンベロープ生成の基本部分はNE555を使った作例が多いんですが、Arduinoでやってみました。マイコン由来のノイズが乗るというデメリットがありますが、ものは試しで作りました。

電源をOFFにしていても、Gate信号(5V)が入力されるとArduinoが動作してしまうようです(Arduino Pro Miniボード上のPWR LEDが点灯してしまう)。壊れはしないようですが、なんか嫌な感じです。

その他は今のところ問題は無いように思います。

MIDI CV Converter



ブロック図

MIDI信号をCV/Gate信号に変換します。CV2系統、Gate6系統です。コアはArduino Pro Miniです。

機能的には動作しているのですが、マイコンを使っているせいなのかMIDI信号の影響なのか、他の機材と電源を共有すると激しいノイズが発生するので、これだけ別電源で運用しています。追い込むのも大変なので難儀中。

MIX0401


DJ機材はRCAプラグ/ジャックが多いので最初は入出力にRCAジャックを使用していましたが、ノイズが乗るので試しに3.5φミニジャックに換装しました。原因がこれとは言えませんが、今のところ順調のようです。

マスター・ボリュームの配線に問題があり、ガリが出ます。

MIX0401のジャックをRCAジャックから3.5φミニジャックに変更

ESP WROOM


IoTといえば無線LANが載っているESP WROOM。プログラミングもArduinoでできる手軽さもあってなかなか便利です。センサのBME280を使って、少し離れた場所の気温、湿度、気圧を測定しました。

長時間WiFi接続していると無線LANアクセスポイントがハングアップするようなので、ESP WROOMでの実験は保留しています。Arduino Pro Miniを使ってローカルな環境センサとして動作させています。


mbed-cli (mbed OS 5)


mbedの利点の一つは手軽に使えるオンラインIDEですが、ローカルの開発環境のmbed-cliも使いはじめました。mbed-cliは基本的にmbed OS 5を使い、mbed OS 5はオンライン環境がありません。

オンライン環境のmbedのメリットは手軽さですが、ネットに繋がっていないと何もできないという脆さもあり、ソース管理も煩雑です。mbed-cliは導入が少しめんどくさく、昔ながらのコマンドラインで開発します。mbed OS 5の目玉ははRTOSの統合で、セキュリティなど新しい機能もmbed OS 5でしか利用できません。慣れてしまえばどうということもないので、今はmbed-cliを中心に使っています。

Arduinoほどではないですが、各種デバイスのライブラリもいろいろと揃っていて、お手軽プログラミングできるのも魅力です。

Nucleo_DCOのファームウェアはmbed-cliで開発しています。

STM32Cube


只今勉強中の、STM32のネイティブ環境です。STM32はとにかくARMのCortex-Mの新規格の導入が速い。しかも中華製ほどではないですが、値段も安い。

STM32Cubeは、意外なことにmbedの方が処理が速い場合があり、mbedと比較して速度面のアドバンテージがあるとはいい切れません。mbedでは使えない機能(DMA、I2S、CMSIS-DSPなど)を使えればなあと思っています。

英文も含めてドキュメントが少なすぎて、なかなかきついですが少しずつやっていこうと思っています。

中華製のパーツ



AliExpressでいろいろと部品を調達しました。到着まで時間はかかりますが送料も含めて激安です。なんで中国からの送料が40円前後で済むんだという。むしろ、いらんもんを買いすぎないように注意したほうがいいかもしれません。買ったはいいけど触りもしていないデバイスが増えると心理的に負担になります。

と、いいつつちょこっと動作確認したあと、使っていない非-中華製のデバイスもかなりあります。(小さい開発ボードだけ入れてる箱)


壊れても惜しくないという意味では、中華製のデバイスはありがたい存在だと思います。

0 件のコメント:

コメントを投稿