エントリー

ALESIS MicronのディスプレイをOLEDに交換することに成功

20250821154210.jpeg

 私がALESIS micronを手に入れたのは2009年にのことで,当時もすでに特価で売られていました。アナログモデリングのシンセですが,音も太くて低域も豊か,AKAIのMiniakも含めるとそれなりの数が出たのではないかと思います。

 シンセサイザーとしてのアーキテクチャも独特なら,37鍵のシンセサイザーとしてはやや大柄で無骨な外観はデザインも個性的,UIも国産機にないものがあります。

 安かったこと,アナログモデリングを使ってみたかったことで買ったわけですが,なるほど音は素晴らしく,あのアナログシンセの音,あの曲で使われていた音が出てくることに感激したり,そうかと思うとアナログシンセが苦手とする音がパーンと出てきたりして,良く出来ているなあと思う一方で,内蔵エフェクトの弱さや音作りの面倒臭さもあって,面白いなあと思うほど触ることはありませんでした。

 音も良いので音作りをしたいのですが,パラメータが多いこと,またモジュレーションマトリクスが音作りのをキモになるという点で,見やすいディスプレイがないと辛いのですが,micronのLCDはとにかく目が疲れるものでした。

 2009年の艦長日誌には,LCDのバックライトが明るすぎて,目に焼き付くほどだと書いてあります。黄緑色のバックライトに黒の文字ですが,長時間にらめっこする音作りにおいて,どうしてこんなに明るいのかと首をかしげるほどのLCDを見続けるのは,私には無理でした。

 コロナ禍で社会が沈み込んでいたある時,micronのLCDをもっと見やすいものにすれば,音作りも楽しくなるのではないかとひらめきました。シンセサイザーによくある,絆創膏のような小さい16x2行のLCDを見やすくするために,プラグコンパチな有機ELのディスプレイに交換してしまうのです。

 LCDの劣化で見えにくくなったものをOLEDに交換するというこの手の改造は割に多く見られるようで,国内外を問わず目にすることがあります。しかし,簡単にいかないケースも多いようです。

 micronのLCDをOLEDにする改造を日本語で見つけることはなかったのですが,海外にはチラチラと試みている方がいるようです。失敗した,上手くいく方法はないか,という掲示板の書き込みばかりで,上手くいったという話を見つけることは出来ません。

 まあ,やるだけやってみようと,パラレル接続のLCDとコンパチなOLEDを秋月電子で購入し,とりあえず付け替えてみました。

 結果は惨敗。全く何も表示されません。

 原因を考えてみますが,気が付いたのは信号の電圧レベルです。LCDは種類によりますが2.2V以上をHighと認識します。一方秋月で買ったOLEDはデータシートによると電源電圧の0.7倍とありますので,3.5VでHighです。

 で,micronの回路図を見ると,LCDはFPGAに繋がっていて,このFPGAのI/O電圧は3.3Vとなっています。ということはLCDの信号レベルは3.3V系という事になる(LCDは5Vで動いています)ので,実はOLEDではHighと認識しないのです。

 波形を見てみると本当に3.3Vのロジックレベルなので,これで動かないのも当然という感じです。そこでレベルシフタを入れて5Vに変換したのですが,画面に出てきたのは判別不能なゴミです。

 ここに至って,LCDとOLEDのコントローラの非互換部分に依存する物と結論しました。それはコマンドかも知れないし,タイミングかも知れません。初期化の違いかも知れませんし,待ち時間の多い少ないかも知れません。ただ,いずれの場合もmicronのファームウェアを改造しないと対策できない範囲の話なので,ここで私はあきらめて,白色LEDのバックライトで白い文字が出てくるLCDへの換装で妥協したのです。

 しかし,やはりLCDはまぶしい上にムラもあり,長時間の凝視には厳しいです。やはり音作りを行うことは出来ませんでした。そして3年・・・

 先日デジットのランダムボックスを買うときに,特価していたOLEDを数枚買いました。というのも,異なるメーカーのOLEDが見つかったらもう一度トライしようと思っていたからです。コントローラが同じならダメですが,試してみる価値はあるでしょう。

 ということで,お盆休みに暑ざにも負けず,共立電子のOLEDに交換して再度試してみたわけですが,やはり全く画面になにも出ませんでした。

 さて,ここからが本番です。この3年で暖めていたアイデアがあります。実現に向けて検討開始です。

(1)レベル変換

 3.3VのFPGAに5VのOLEDを繋ぐのですがら,レベル変換は必要です。簡単に済ませるため74HC244を使って変換します。結果は前回同様,おかしな表示が出て来ました。


(2)バスの双方向の可能性
 
 前回も気になってはいたのですが,バスが双方向の可能性がありました。コマンドによって異なる処理時間を,ビジーフラグをみてコマンドを投げるように真面目に組んであったら,レベルシフタも双方向でないと動きません。

 そこでR/W端子の波形を見たところ,ずっとLowのままです。つまり双方向ではなく,片方向で動かしているという事です。もし双方向だったら74HC245を使い,R/Wで向きを反転させるような回路にしないといけないところでした。


(3)初期化の問題

 今回の新しいアイデアというのがこれで,初期化の非互換が原因とした場合の対策です。

 LCDとOLEDでは,電源の電圧と電流に大きな差があり,特に安定時間に違いが大きいです。動き出してしまえばコマンドも同じように作ってあるので問題はないはずですが,ひょっとするとOLED特有の初期化コマンドがあったりするかも知れません。

 実績として,ヤマハのシーケンサーであるQX5FDは,元々のLCDをそのままOLEDに交換することが出来ました。このことから,初期化後のコマンドやデータに互換性がある(ただしタイミングは違うかもしれない)わけですから,非互換は初期化の段階で起きている可能性が大きいでしょう。

 そこで考えたのが,OLEDの初期化を別のマイコンで行い,初期化が済んだらmicronに切り替えるというアクロバティックな方法です。初期化後なら,表示が変わっていない時は新しいコマンドは発行されていないので,切り替えてもおかしなことは起こらないはずです。

 ブレッドボードを使ったバラックで試してみます。まずTiny2313とOLEDを4bitモードで普通に繋ぎ,まともな文字が出るようにプログラムを書きます。以前作ったLCDのテストプログラムをそのまま使ったのですが,2行目になにも出てこずしばらく悩んだところ,やはり初期化に一部違いがあることがわかりました。(とはいえこれは表示が出てこないという致命的な問題の原因ではありません)

 最終的にはOLEDだけではなく,LCDでも表示が出来るように,共通の初期化を行うようにします。

 安定して表示が出るようになったら,74HC157を2つ使って,micronとTiny2313をスイッチできるようにします。選択は手動です。

 試してみると,OLEDでもLCDでも,まともな表示が出るようになりました。いやー,我ながら無茶をしますね。でも,波形を見る限り,問題は初期化にある可能性が高かったんですよね。

 配線が長くなったので不安定ですし,文字化けもあるのですが,とにかく基本路線は間違ってなさそうです。それならとTiny2313のコードをいじって,切り替えを初期化の直後に行うようにGPIOに信号を出し,HC157に繋いだところ,期待通りの動きをしています。切り替えタイミングが遅すぎるようで,変更された文字だけが表示される状態でしたから,切り替えのタイミングをうまく調整すると,完全に表示が出てきそうです。


 ということで,早速ブレッドボードで組んだ回路を万能基板に作り直しました。今度は実機に組み込みますから,格納場所をよく考えて基板を作ります。今回はOLEDのコネクタに差し込む小基板の体裁をとりました。この小基板にmicronのケーブルを差し込むような感じです。

20250821154209.jpeg

 基板が出来たらTiny2313のコードを見直します。多めにとっていたウェイトを削り,素早く切り替えが出来るようにします。特に電源安定時間として500ms必要というデータシートの指示を守るのは難しいので,最終的に250msまで削減しました。200msまでならなんとか起動できるのですが,ギリギリは怖いのでゆとりを持たせました。

 こうして出来上がった基板を間に挟んで試したところ,一発で動作しました。OLEDにまともなmicronの表示が出ています。トランスポーズやパラメータの表示で出てくるグラフィックも問題なく出ており,なにも問題はありません。

20250821154207.jpeg

 気をよくした私は,Tiny2313に起動メッセージを出すことにしました。起動メッセージが出ている間にTiny2313が初期化を行っているので,もし起動メッセージを出すならTiny2313で出すしかありません。

 なかなかタイミングがシビアだったのですが,0.3秒ほどAlesis Micronという起動メッセージを出すことができました。これがスクロールしたり1文字ずつ出てきたりしたらアウトだったのですが,シンプルで良かったです。

20250821154208.jpeg

 電源を何度も再投入するとOLEDの電荷が抜けず,OLEDのリセットに失敗するようで文字化けがあるのですが,ゆっくり起動すれば問題ありません。

 それより,この見やすさ。
 
 いよいよ組み込みです。モジュールの形状も大きさも違うので工夫が必要ですが,もとのLCDがバックライトありの分厚いもので,楽に固定する作戦だと薄いOLEDの場合パネルから随分深い所に表示が出ることになり見にくくなります。

 せっかくの美しい表示なのですから,見やすさにもこだわりたいところで,モジュールを大きく削り,両面テープでパネルの裏側に貼り付けることにしました。おかげでとても見やすく,井戸をのぞき込むような面倒臭さがなくなります。

 組み立てて動作の確認をします。動作の不安定さもなく,文字化けもありません。表示の更新にもちゃんと追いついているようで,ガチャガチャと乱暴な操作を行っても表示は乱れることがありません。実用レベルでしょう。

 ということで,作業期間は3日ほど。散らかった部屋で検討したので塗装が剥げてしまったり傷がついたりしたのが,いかにも私らしいわけですが,ともかくこれで音色のエディットで目が痛くなることはなくなりました。じっくり腰を据えて音作りができます。

 おそらく,micronのLCDをOLEDに換装できた人は世界中で私くらいのものでしょう。こういう無茶をする人はいないでしょうし,かといって他の真っ当な方法は非現実なほど難しいです。(例えばmicronの初期化のコードを変更するにはColdFireの開発キットが必要になりますし,バイナリで直に修正するには規模が大きすぎます。)

 今思えば,初期化のあとに切り替える方法でなくとも,初期化の後もTiny2313でmicronからのコマンド度データを受け,これをOLEDに再送する仕組みでいけるかなと思いましたが,まずTiny2313にLCDと同じ挙動を実装しないといけませんし,再送だとどうしてもタイミングがシビアになると思うので,これはこれで難しかったんじゃないかと思います。

 何年も暖めたアイデアがこうして正しいと証明されるとうれしい物ですし,この仕組みは初期化におけるLCDとOLEDの非互換部分を埋めるものと言えるかも知れません。

 なによりこうして使いにくい物が使いやすくなっていくことがうれしいじゃないですか。


[おまけ]

 今回の検討は最終的には上手くいきましたが,実はそれなりに犠牲も大きかったです。LCDモジュール1つとOLEDのモジュール1つを壊してしまいました。

 どちらも電源の逆差しが原因です。ブレッドボードでの実験で,LCDとOLEDを交換する時に,電源が入れ替わっていることに気が付かず,どちらも逆に繋ぐという馬鹿なことをやってしまいました。

 LCDはまだ外し品だから良かったものの(それでも端子が1列に並んだブレッドボード向きの奴はこれだけしか持ってなかったので地味に痛い),OLEDは秋月で買った1580円もした高価なやつです。

 LCDはまった表示が出なくなったのであきらめもつきましたが,OLEDはしばらく表示も出ていて,徐々に表示されている時間が短くなっていき,やがて全く出なくなってしまったので,悔しいです。

 電源のGNDを外すと表示が出たりしたこともあったので,電源の逆差しでドライバのVDD-GNDがショートしたんでしょう。他のGNDに繋いだ端子経由で電流が回って動いていただけで,ここも壊れてしまっていよいよ表示が出なくなりました。

 表示が出なくなったときには,100mAも電流が流れて発熱していました。完全に内部でリークしています。最後には全く動作しなくなったので,捨ててしまいました。

 ああ,もったいない。

 

ページ移動

ユーティリティ

2026年01月

- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed