コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

1chipMSX の PROM 更新ができるようになったところで、なにかちょこっとしたことをやりたくなってくる。
そんな場面で思い出すのがみんな気になっているアレだよな。あの緑色のLED。
そう、
残像が無いとナイトフラッシャーと言えないじゃないかっ!!

実は 1chipMSX のイルミLEDは 0 じゃなくて Z(ハイインピーダンス)に設定するとぼんやり光るような回路になっている。で、そのままでも実は 1つ前の LED がちょっと点いていて残像表現になっているのだけれども、ちょっと気づきにくい。
もちょっと明確に残光表現になるように、簡単な PWM で中間表現を追加してみた。


使用前


使用後
あのチカチカうるさいだけだった LED がちょっとゴージャスに :-)

emsx_top.vhd の diff ファイル
esemsx3_led_knightfade.diff

ソースコードいじっていて気が付いたんだけれども、この LEDイルミネーションって元はディップスイッチの設定を LED 表示するものだったみたい。
LED の点灯と同時にディップスイッチを読み取っていたりして、むやみに削れなかったりするのです。

とまあ、冗談やっているだけだとおしかりをうけそうなので次はもちょっとまじめに。
各所で LED 点滅を削ったり別の表示をさせたりというプチハックが続いている様で。SDカードアクセスランプに割り振るとか、データバスを光らせるとか良い感じのハックは既にやられちゃっているのでちょいと考えてみる。
LED が一列並んでいるのをみて思いついたのが、内蔵音源のレベルメーターにするというハック。


写真じゃわからないけど。

音声レベルメーター化 emsx_top.vhd の diff ファイル
esemsx3_led_levelmeter.diff

このために音周りを眺めていてちょいと変わったことをやっている事に気が付いた。
音声回路で PSG は 8bit、SCC は 9bit、OPLL は 10bit でレンダリングされているんだけれども、それを 16bit の桶でミキシングして 12bit の振幅解像度をもった音圧として内部では持っている。それをラダー抵抗の 6bit DAC で出力しているかというとそうではないのだな。
12bit の情報を 22kHz のローパスフィルタに通すのは良いとして、その後 10.5MHz ベースの PWM 変調をして 1bit の情報(最大か最小か)を出力している。 6bit DAC には 000000b か 111111b しか来ていないから実質意味はない。その 1bit PWM 音声はその直後の電解コンデンサーで平滑化されてアナログ信号となっている。
だから、6bit DAC なので音がイマイチという論は御門違いな様で。
音質で言えば電解コンデンサの質に因るところが大きいかも。
ちなみにステレオ処理はされておらずに、白と赤両方同じものが出力されているもより。

音が小さいというのはまたちょっと違った問題でして。
レベルメーターを作るのに苦労したんだけれども、最終的にミキサーされた 12bit 音声情報の内最上位は符号相当(無音時中央値)だから 11bit として、その上位 3bit はほとんど 0 のままなのよね。下の 8bit 部分だけがちまちま鳴っているので音圧が小さい。試しに 1bit シフトしてみたら、ちゃんと音が大きくなった。
しかしまあ、SCC は PSG よりちょっと音が大きめにミックスされているみたいだなあとか、なんか意図があってこの数値になっているんじゃないかとか穿ってみたり。
音量についてはなんかちょこっといじる気にならなかったのでしばらくそのままにしておこうか。

—–

Leave a Reply