まとめ(弱め)予定していたハードウェアがほぼほぼ完成したので、まとめておきます。左側がシーケンス打ち込み、パラメータ設定用のユーザーインターフェイス。右側がベースマシンのシンセ本体です。やって見るとシンセ本体よりユーザーインターフェイスの占めている面積が大きくなってしまった。半年前に漠然と考えた構成案です。デジタル制御できるところはデジタル制御で、しかし音声信号はアナログ回路で、という方針は貫き通しました。ディティールは試行錯誤の結果異なりますが、全体のつながりは構成案のままになりました。F401REを2枚使うように分けてみましたが、Nucleo同士のSPI通信がうまく行かず、結局1枚にまとめてI/Oエキスパンダーを使ってI/Oピンを増やしました。パネルシーケンス打ち込み用のユーザーインターフェイスの本体です。PropellerHeadのReasonというソフト・シンセのシーケンサーをリスペクトしています。128x64ドットの大型LCD(CH12864F-SPI)を使ってシーケンスパターンを表示するようにしました。LCDの左右のロータリーエンコーダでシーケンスのピッチとステップを指定。左側のオレンジと青のタクトスイッチで表示するオクターブを指定。下側のタクトスイッチはNoteのOn/Off、Tie、Accentを指定します。右のタクトスイッチでシーケンスの再生/停止。上の基板のロータリーエンコーダはBPMを指定。去年作ったリズムマシンはBPMをPOTで設定していましたが、値がふらついて設定が難しいのでデジタル的に値を決められるロータリーエンコーダにしました。白色のタクトスイッチはDCOの波形選択。黒色のタクトスイッチはLCDの表示モード切り替えようです。今のところ、LCDの表示モードはシーケンス打ち込み画面、パラメータの数値表示、POTの読み取り値の数値表示、の3モードにしています。ハードウェア接続の整理」)「ベースマシンのシーケンサ基板を作ってみた。その2(http://dad8893.blogspot.jp/2016/09/2.html)」アナログPOTパネルPOT(可変抵抗)を並べたパネルです。パネルは1mm厚のアルミ板をトンカチで叩いて加工しました。POTに割り当てた機能は、上の2つの「A4/RESO」と「A3/CUTOFF」はDCFのCutoffとResonance、下の5つ(PC_2のPULSE_W以外)はDCA用のエンベロープ設定用です。「PC_2/PULSE_W」はDCOのパルス幅変調用。A0~A5、PC_2、PC_3は、NucleoのPin名。経験的にPOTの分圧値をADCで拾うと7bit精度がせいぜいなので、読み取り値は7bit(128段階)に設定して使っています。「ベースマシン用のコントロール・パネルを作ってみた。1枚ではI/OPinが足りなかったので、I/OエキスパンダーのMCP23S17を使ってI/Oピンを増やしました。下側のSW×8はシーケンスパターンの切り替え用、上側のスイッチ類はパターンのロード&セーブ、コピー&ペースト用です。ロータリーエンコーダはロード&セーブのスロットを選択するためのものです。ロータリーエンコーダーとOK/Cancelのスイッチは1次的には使っていないので(LoadかSaveボタンを押さないと有効にならない)、まだ機能が増やせないかと妄想中。永続的にパターンを記録するために、最初はSDカードを考えていましたが、SDカードをmbedで使うとややこしそうなのでI2C接続のEEPROMのAT24C1024を使いました。F401REシーケンサー本体です。mbedでプログラミングしています。DCO矩形波とノコギリ波を生成するモジュール。テーブル参照ではなくて、サンプリング・タイム毎に値を生成するようにしています。PotのAD8403を使って制御しています。DCADACのMCP4922とOTAのNJM13600を使っています。OTAとは電流で増幅率を可変できる素子で、アナログ・シンセを作るにはとて有用な素子です。NJM13700は秋月電子でも取扱いされるようになったので、ある程度いじくりがいがありそう。←といっても、アナログ素子なので理屈で考えてもうまくいかないところはあります。Board電源ボードです。5V出力は3端子レギュレータの7805、3.3VはLDOを使っています。Bufferシンセに回すSPI信号を補強するためのバッファ・ボードです。Nucleoから直接出力した場合と比べて、ロジックICのバッファを通すと波形が整形されるので使っています。Tieした時にエンベロープもTie。三角波とノコギリ波をデューティ比で可変できるようにする。EXIOボードを2段積みにしてみた。パソコンのATX電源を交換した。(軽作業という名の肉体作業)リズムマシンからsync信号を出してみる。ステッピングモータとサーボをArduinoで動かしてみる。まとめ(弱め)3桁電圧表示器[ST-VM036R]を使った電流計の設計0.1Ωのシャント抵抗を使って電流を検出してみる。