電音の工場ブログ

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

当ブログは…

心を入れ替えました

はまって(id:Chuck:20060315#p1)いたが、スタックして先に進めないのもなんなので、本当にぐぐっとシンプルにしてみた。

MICI2CV ATtiny2313(Simple)版 暫定仕様
  • ATtiny2313
  • 4ch PWM で次を出力
    • CV0 : Note CV (key CV, Oct/V固定)
    • CV1 : Velocity CV (Note On/Note Offともに見る)
    • CV2 : Control Change (アサイン可能)
    • CV3 : Control Change (アサイン可能)
  • ゲート出力 (極性を設定可)
    • GATE0 : 打鍵情報
    • GATE1 : Control Change (アサイン可能)
    • GATE2 : Control Change (アサイン可能)
    • GATE3 : Control Change (アサイン可能)
  • MIDIメッセージ
    • 高音優先 mono mode, single/multiple trigger
    • Legato対応
    • Re-trigger対応(リトリガタイムは CC Legatoのローカル拡張で指定)
    • ランニングステータス
    • All note off (MM#123 (7Bh))
    • Reset all controllers (MM#121 (79h))
    • Active Sensing (FEh)
    • System Reset (FFh) (できれば)
  • 見ないMIDIメッセージ
    • FEh, FFh 以外の realtime msg (system)
    • Bnh 7Bh, Bnh 79h 以外の mode msg (channel)
    • common msg (system)
    • voice msg (channel) のうち Anh*1, Cnh*2, Dnh*3, Enh*4
  • MIDI ch とかアサイン情報の類の設定はEEPROM記録とする
  • I2Cからも読み書きはコードエリアに余裕があったらとする
  • 処理済メッセージを抜いてのMIDI再送を行わない

MIDI再送をやめると決めた時点でずいぶんとすっきりした(筆者の中の仕様として)。

Legatoの実装方法はまだ悩ましいが、まぁ何とかなるだろう(ほんとか?)。

見ないといっているMIDIメッセージも、現時点では全てをパースしてunionかなんかに積んで、その上で然るべき処理に送り込みたいと思っているが、コードエリアに余裕がなければパース段階で捨てるとかするかもしれない。コモンメッセージなどはパラメータを引き連れているのも居るのでvoiceメッセージと同じような状態遷移が必要。

ずいぶんと減らしたぞ(どこがだ)。