電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

MIDI FX Switching System

MIDI FX Switching System

新着記事リストからoutしてしまったので、保守アゲ。この項は順次updateする。

以前にPICマイコンで作ったエフェクト・ループ・プログラマを大幅にバージョンアップ*1しようとするのがこのMIDI Controlled FX Switching System、旧名からの連続性で言うと プログラマブル・エフェクト・ループ・スイッチング・システム。

前作のあと何回か(5回目ぐらいか)検討するも、その都度 別プロジェクトへ浮気して完遂していなかった本プロジェクトも今度こそまじめに検討開始。白眉な仕様のVersion2、今ここに。

進捗

2004/12/26
ハードウェアほぼ完成(あとは電源を入れるだけ)
2004/12/23-26
LEDドライバ、ハーネス作業
2004/12/18-19
出力ポートドライバ完成、7seg. LEDドライバ作成中
2004/12/xx
GT-8発売
2004/11/27
リアパネルの加工
2004/11/23
メインロジックボード完了
2004/11/20-21
ロジックボードの製作作業
2004/11/13
フロントパネルの加工
2004/11/07
フロントパネルの加工
2004/11/03
フロントパネルの検討・設計開始
2004/10/30
10月中はほとんど進まなかった。プロフェット調 LED付きタクトスイッチを基板に並べて、それにあったスリットをフロントパネルにあけなくてはならない部分で、フロントパネルの設計で二の足ふみふみ中。
2004/09/28
プログラマ部のロジックボードをstep by stepで組み上げ中。テストプログラムを組んでUI部分の実験中。
2004/09/04
プログラマ部のロジックボードをstep by stepで組み上げ中。ときどき他に浮気するので進みは鈍い。
2004/08/31
LED内蔵タクトスイッチ(プロフェット風)を万能基板に並べて悦に入る。

名称案

組み合わせて使うものなのでシステムであるとは言える。「プログラムしたエフェクタのループのパッチをMIDIで切り替えるシステム」なので、MIDI Controlled FX Switching Systemだけれど、名前が長ったらしいのが難点。

システム仕様

  • プログラマ部と信号ルーティング部とを分離する
  • それぞれ独立した1Uラックに組む
  • プログラマ部からの制御信号は port0 (8ループ) / port1 (8ループ) が出力される
  • ルーティング部は1-port分の制御信号を受け、8ループのON/OFF(ないしはA/B)を切り替える
  • 制御信号はオープンコレクタ出力

信号ルーティング部仕様

  • プログラマからの信号に従って8ループを切り替える(サイズの関係)
    • 1ループあたりはA/B boxとなっている
    • ところどころ send-return を挿入可能とする。挿入個数はパネルレイアウトして決める
  • 切り替えはメカニカルリレーを基本とする
    • 採用するリレーとピンコンパチブルにしたアナログ信号切り替え子基板を用意し、アナログスイッチングも採用できるような余地を残す
  • ついでに信号を引っ張り出して、BOSS FS-5L互換端子を設ける
    • 4個ぐらい用意すればいいだろう
      • その4個のときは selectable? 悩むぐらいなら8個出す考えも
    • 1ループあたりのA/B boxと同時動作で良い
    • いや、センターオフのSWを使って、切れるようにしておくべきか。
    • 位相切り替え(NO, NC)を設ける → P板上の実装で可とする(ケースの穴あけが面倒なので)

プログラマ仕様

  • 16ループをプログラムできるようにする
  • 出力は8ループずつ port0/port1に分ける
  • パッチ切り替え(通常)モードとエディットモードをもつ
    • 状態は、INIT, SELECTION, EDIT, POWER DOWN を想定。POWER DOWN を採用するかは検討中
  • パッチ切り替えはMIDI program change(MIDI PC) から行う
    • MIDI chは起動時に設定値を読み込む
  • コントローラは BOSS GT-3 と Generic MIDI(128プログラム)を考える
    • BOSS GT-5/GT-6/GT-8 対応もとりたいが、現物を持っていないので検証不能
    • コントローラ選択は起動時に設定値を読み込む
  • パッチ切り替えは内蔵ロータリ・エンコーダからも行う
  • 現在選ばれているパッチ番号を7セグメントLEDで表示する
  • そのパッチにおける16ループのON/OFF状態をLEDで表示する
  • エディットモード時に16ループのON/OFF選択をしてWRITEボタンで記録する
    • 記録したらパッチ切り替えモードへ移行する
    • 現在エディット内容のプログラム内容比較機能 →
    • エディットモード中のMIDI PCの取り扱い → 受信し表示を切り替えるが、プログラム内容を最終段レジスタにラッチしない。最終段レジスタはタクトスイッチでの選択内容を記録する
    • エディットモード中のロータリ・エンコーダ操作の取り扱い → MIDI PC によるものに順ずる
  • 電源断処理を行う
    • スーパーキャパシタでバッテリバックアップ (待機時消費電流しだい)
    • バックアップからの復帰と電源投入とで動作を変える
      • 完全に電源が切れているところからの Start-up RESET
      • バッテリバックアップに入っていて Power Down mode からの RESET

割り込み線は足りるのか? 足りるようだ (シリアル(MIDI)、ロータリ・エンコーダ 割り込みやめスイッチ押されて wake-up、電源断検知)

プログラマ実装案

  • ポート数と内蔵EEPROMのワード幅に鑑み、マイコンは2個用意する
    • ひとつあたり8ループをプログラムできるようにする
    • clock/reset回路は共通のものを用いる
    • 2つのマイコンのプログラムは同一のもの
    • master/slave 動作をさせるかどうかは未定
  • 開発言語は avr gcc とする
  • MIDI ch/コントローラ選択のDIP SWは2つのマイコンで共有する(メドがたった)
  • マイコンAVRを選択する
    • AT90S8515 または AT90S8535。RTC / タイマーを3個 を使いたいときに8535を選択する
  • 7セグLEDはシリパラしてラッチして表示するタイプとする(ピン数節約のため)
    • 74HC595で行う
    • 8ループ出力のLEDについても同じようにするべきか → やらない。点滅させるにしても動作は同期させる
  • ロータリSW を回しても、一瞬の不感時間をおいてプログラムが有効になるようにする。ロータリSWをぐるぐると回す使い方に対して、信号ルーティング部がメカニカルリレーであった場合の寿命に鑑みて。
必要な部品
  • AT90S8515 or AT90S8535 ×2
  • ロータリ・エンコーダ 秋月のが安いのでアレを使おう
  • LED内蔵タクトスイッチ (Prophet調) ×18
  • 3-digit 4-digit 7seg. LED
  • 74HC595 ×3 ×4
  • TLP552
  • 5pin DINジャック
  • DIP SW 6P or 8P
  • スーパーキャパシタ
  • コネクタ
    • DF1B-*S-2.5R
    • DF1B-*P-2.5DSA
実装方針

部分に分けて、ライブラリを作りながら、少しずつやる。

メモ
  • 74HC595
    • I_{o} (source/sink): Q_{n} ±35mA、Q_{7}' ±25mA
    • I_{cc}, I_{GND} (source/sink): ±70mA
  • 74HC595
    • I_{o} (source/sink): Q_{n} ±35mA、Q_{7} ±25mA
    • I_{cc},~I_{GND} (source/sink): ±70mA

*1:ていうか作り直し