FaMidi – ファミコンMIDI音源モジュールをつくってみた(その後)

8pinのPICマイコンでファミコンのMIDI音源を作っているのだが、音痴をかなり改善していろいろバージョンアップしてみた。

とりあえずプロモーションビデオもつくりなおしてみた。

今回のバージョンアップは、音痴を直したのと各種MIDIコントロールに対応した。ということでMIDI楽器らしくインプリメンテーションチャートをつくってみた。

まずは矩形波から。

MIDISQR

矩形波は1チップで2音ポリとなっている。デフォではモード3(ポリ)なのだが、モード4(モノ)に切り替えることができ、この時はピッチベンドに対応するようになっている。ピッチベンド幅がかなりいい加減なので使用するには注意が必要。もともとファミコン音源ではスイープがあるのだが、最終的にはポルタメントでこれを実現したいと思っている(あくまでも予定)。モジュレーションもかけたいので、とりあえずチャートには載せている。その時にはベンド幅なども設定できるようになっていると思われる。

音色はファミコン音源にならってデューティ比12.5%,25%,50%の3種類、またベロシティ、音量やエクスプレッションもファミコン実機に合わせて16段階に丸められるが変更可能となっている。本来は音量とエクスプレッションは別々に制御されるべきだが、元々16段階しかないので同等の扱いになっている。とはいえ、ベロシティは別制御なのでご安心を。

次は疑似三角波。

MIDITRI

制御できるパラメータがファミコン実機でもほとんど無いので、ほぼ何もできない。というかしていない。純粋にファミコンの疑似三角波にこだわってそっくりそのままの音が出せるようにしている。

最後はノイズジェネレータ。

MIDIFNG

ファミコン実機の仕様に合わせて音量などが制御できるのは矩形波と同様。実機ではスイープができるらしいので矩形波と同様にベンドかポルタメントで実現させることができたらいいなと勝手に考えているが、あくまでも予定。音色は長周期ノイズと短周期ノイズの2種類を使い分けられる。ファミコン実機では乱数発生頻度をテーブルで提供しているので、そのままエミュレートしてC3~C4の各音に割り当てている。特に短周期ノイズは独特の音がするのでファミコンらしさがもろに出る。どこかのゲームで聞いたことがあるような効果音が作れるようになっていると思う。

ということで、今回のバージョンアップでかなり実機の音源に近づいたと思われるので、マリオのゲーム音をMIDIシーケンサで作ってみた。

コインのチャリーンや1up、ブロック破壊音なども再現できていると思う。結構適当に作ってもこれくらいにはなるので、作り込めばかなりのことができるかも。

ということで、バージョンアップしたHexファイルを公開するので、試したい人はどうぞ!例によって拡張子をdocからhexに変えること。回路図その他は前回のブログを参照のこと。

sqr1822.hex

tri1822.hex

fng1822.hex

ついでにMIDIインプリメンテーションチャートも置いておくので参考にどうぞ!

MIDI Implementation Chart (FaMidi).pdf

  1. トラックバックはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。