Hatena::ブログ(Diary)

【na】

2017-06-21

れんらく、れんらく。

To: がしさん
回路図、掲示版の方に置いといたです。
部品名、/[A-Z]+[0-9]+/です

2017-03-25

8253で音量を実現する方法の解説

モード2を使え。以上。

…だと無愛想過ぎるのでもう少し噛み砕いて。
8253はモードが6種あり、そのうちモード2は分周モードである(ちなみに、BEEP音は通常モード3を使う)。
このモードではレジスタに指定した値(以下Nとしよう)で入力クロックを分周するが、
このとき波形は1クロックHIで残り(N-1)クロックがLOになる。
これは、1/NだけHIになるPWMと同じなので、後段のLPFを通した結果1/Nの電圧が出ているのと同等になる。
もちろん、これだけだと一定の電圧が出るだけなので、鳴らしたい周波数に応じて適宜ON/OFFしてやる必要がある。A4=440HzならONOFF合わせて1秒間に880回。
この方法の利点は8253クロックが十分に高ければその周波数がいくつであるかは関係ないところ。欠点は鳴らす周波数に合わせてキッチリON/OFFを制御しなくてはいけないところ。
MI68デモ版ではMCU一個を完全に割り当てられてるのでこれが可能なわけ。

本日の晩酌

f:id:brown_wizrobe:20170325201131j:image
わーい、ナナイロゑびすだー、たーのしー
……青被ってるけど。

2017-03-21

バグ原因分かった

演奏してるとch1,ch2が鳴らなくなってch0のみになってしまうことがある。原因不明。

の原因判明。2つあった。

[1] WR#信号を時間が短い

  out PINC, R16 ; WR# HI->LO    ; CTR#2
  out PINC, R16 ; WR# LO->HI    ; CTR#2

のように連続して下げ上げしてたが、i8253(というか使ってたuPD8253C)のデータシート見てたら250ns下げとけ、とあったことに気付く。上げるところを4clk程度後ろへ順序入れ換えて対応。

[2] 制御基板設計ミス
[1]の対策を取っても直らないどころか却って悪化。入れ換えたときにタイミング重点な所を動かしてしまったかと調べたが、問題はみつからない。動作を見る限りシリアル→パラレルはOK、ゲート側も問題無し…ということは8253パラレルバス側に何かおかしなデータが乗ってるはず。だがバスに出力するのはシリアル→パラレル変換だけのはず……いや、8253が何か出してるとか…と思って調べてみると、RD#がオープン…orz
制御基板側でRD#にプルアップつけ忘れてた…

というわけで、10kをつけてついでにテンポ修正も入れて書き込み書き込み再生。
OK、ちゃんと鳴るようになった。

2017-03-13

第6回MI68

第6回MI68、無事完了し帰ってこれました(帰ってすぐBTNQですが)。御参加の皆様方お疲れ様でした。
当ブースへご足労いただいた方々に感謝。また、当サークルにて頒布をお受けになられました皆々様がお楽しみいただけることを心より願っております。
さて、他ブースサークルの展示について見てまわる時間が無かった(大変申し訳ない。一人参加のため赦して欲しい)ため、このあたりは一般参加の方々のレポート・ツイートを参照していただくことにして、当サークルのデモ部分の補足説明です。

デモ内容

i8253モジュールを使用したデモ曲の演奏
i8253モジュール(PC98とか(昔の)IBMPCとかで使われていたBEEP音の石のモジュールです)でアルガーナOPの演奏です。作曲の古代さん、MML作成のwingさんに感謝々々です。
MIDI PadでuPD7756モジュールの発声
前回と同じく、燃えプロの音声チップを使用したモジュールで、パッドを叩くと"おーむらん"とか"っとらいっ"とか鳴る(しゃべる?)デモです。

構成

f:id:brown_wizrobe:20170312210924p:image
(1:開始からしばらくはuPD7756ボードの部分無し 2:桃色=今回頒布,緑色=自作,空色=市販/他サークルさん)
uPD7756(+RasPi+MIDIPad)部分は基板が頒布版になった以外は前回と同じです。

図最左列部分は、ちょい足し拡張ボード,コントローラボードも前回のものを使っています。ただし、コントローラボードは前回電源供給のみでしたが、今回はi8253ボードの制御(デモ曲演奏)をしています。データもマイコン上に載せています。

i8253デモ

さて、この8253という石、通常はBEEP音の他タイマにも使われるので一音しか出ないのですが、このモジュールでは3チャネルとも音に割り振っているため3和音が出せます(つまりHW的にはGSX-8800の半分と同等ということですね)。
ただ、そのままだと音程はつくものの音量は一定となってしまいます。
それじゃあイマイチだろうってことで、なんと音量とノイズをソフトウェア的に実装して鳴らしています。
ただ、未完なところも結構あって、

  • "@x"(音色変更)は時間が足りなくて(そして時間が足りてもおそらくはメモリ不足となって)実装出来なかった
  • ノイズの周波数(というのもヘンな表現だけど)が3%ばかり低い。
  • 手計算間違えてちょっとテンポが遅い。四分音符90拍/分にしてしまった。
  • 方式のせいか、音が濁る。
  • 演奏してるとch1,ch2が鳴らなくなってch0のみになってしまうことがある。原因不明。

なんでバグがあったりします。ははは。

書き忘れ

MMLを直接実行してるのではなく、全部前もって実行内容のリスト(バイナリ)に変換してあります。為念。

2017-03-02

進捗

ラベル貼り完了。週末に段ボール詰めして発送かな。
気になる頒布価は以下の通り。

  • 起動音モジュール …… 2700
  • i8253モジュール …… 4500
  • uPD7756モジュール …… 4500
  • ライン入力モジュール …… 3300

(第6回MI68設定です。以降については参加費用/委託費用・材料費の変動・仕様の変更等により変化します。)
f:id:brown_wizrobe:20170303010326j:image

2017-02-26

進捗

マニュアル/パーツリストの印刷、ひたすら八・四折が終わって、やっとこさ箱詰め完了。週末一杯かかってしまった。
ラベルも一枚だけつくって貼ってみた。つくるの地味に時間かかる…。今週はラベル作成+張り付けで終わる気がする。
f:id:brown_wizrobe:20170226215114j:image

2017-02-05

準備着々

4種とも試作テスト完了。2ヶ所修正、一つは定数の変更のみで済んだけれど、もう片方は追加の抵抗取り付けですよ。
f:id:brown_wizrobe:20170205143937j:image
持っていく数が読めないけれど、まずは着々と袋詰めですよ。

本日の昼食。

赤ペヤング。貴重な高ダバリティ仕様パッケージ版。
f:id:brown_wizrobe:20170205143936j:image