8bitゲーム機の音を出すアプリは、たいてい2種類に分かれます。既存の曲を再生するプレイヤーか、「8bit風」のプリセットを選ぶシンセか。前者では自分の曲が作れず、後者ではデューティ比を変えたら音がどう変わるのかという、あの音源を触る面白さが手元に残りません。

その隙間を埋めるために開発した5チャンネルのチップチューン作曲アプリ 「M-NES: 8bitチップチューン作曲」 を、App Storeで公開しました。

App Storeで見る(1,200円・買い切り) | 製品ページ:M-NES

📌 M-NESの3行まとめ
① 8bitゲーム機の音源チップ RP2A03 APUレジスタ単位で再現した5チャンネルの作曲環境
NSF / NSFeを内蔵の6502 CPU+APUエミュレーションで再生し、編集できる音符へ起こせる
③ 独自の6502ドライバを埋め込んだ実機準拠のNSF書き出しと、48kHz WAV / プロジェクト保存

「それっぽい音」ではなく、チップそのものを鳴らす

ファミコン(NES)の音源であるRP2A03 APUは、矩形波2ch、三角波、ノイズ、そして1bit DPCMサンプルの5チャンネルで構成されています。M-NESのピアノロールは、この5本と1対1で対応した固定レーンです。トラックは増やせません。

増やせない代わりに、画面で見ているトラックと、実機で鳴るチャンネルが常に一致します。UIで動かすパラメータは、内部でAPUレジスタへの書き込みへそのまま落ちます。だからこそ、作った曲を実機準拠のNSFとして書き出せます。

チャンネル実装している要素
Pulse 1 / 2デューティ比4種、ハードウェアスイープ、音量エンベロープ、Length counter
Triangleリニアカウンタまで再現。音量調整を持たない仕様もそのまま
Noise16種の周期と、短周期(93ステップ)モード。音の高さで周期を選ぶ
DMC1bit DPCMサンプル再生とDMC状態機械

出力は実機と同じ 48kHzモノラル。Blip Bufferによる帯域制限変換と、Pulse / TNDの非線形DAC経路を通しています。三角波とノイズの音量関係が実機と違って聞こえる、という問題が起きにくい経路です。

さらに NTSC 2A03 / PAL 2A07 / Dendy のクロックを切り替えられます。同じ譜面でも、地域によって音高とテンポがわずかにずれる——その差を、切り替えて確認できます。実音高、タイマー値、cent誤差も画面に表示します。

NSFを「聴く」から「編集する」へ

M-NESでいちばん時間をかけたのは、NSF / NSFeの取り込みです。

.nsf / .nsfe を開くと、まず内蔵の6502 CPUとAPUエミュレーションで原曲をそのまま再生します。ここには Game Music Emu(LGPL-2.1)のNESコアを使用しています。ゲーム固有の音楽ドライバで書かれた曲でも、ファイル内の6502プログラムを実行するため、そのまま鳴ります。複数曲入りのファイルは曲リストから1曲ずつ選べます。

そのうえで、選んだ曲を再エミュレートし、APUレジスタへの書き込みを1フレームずつ追跡します。音程、タイミング、音量、デューティ比、ノイズ周期を復元し、5トラックの編集可能なノートとしてピアノロールへ取り込みます。

💡 なぜ「取り込み」が要るのか
NSFは楽譜ではなく、音を鳴らすプログラムです。中を開いても、そこにあるのは6502のコードとデータテーブルであって、音符の並びではありません。だから「鳴らす」ことと「編集する」ことの間には、レジスタ列を音符へ戻すという一段が必要になります。

耳コピの下敷きにする、アレンジの素材にする、フレーズの組み立て方を調べる——取り込んだ曲はそのまま編集・再生できます。

⚠ M-NESには、著作権のあるゲーム素材は一切含まれていません。NSFやDPCM素材の読み込みは、必要な権利をお持ちの素材にのみご利用ください。解析・変換・保存はすべて端末内で完結します。

DPCM:8bit機で「サンプル」を鳴らす

5本目のDMCチャンネルは、1bitのDPCMサンプルを再生します。8bit機のドラムや声ネタは、ここから鳴っていました。

M-NESは .dmc の生1bitデータをそのまま読み込めるほか、手持ちの WAV / AIFF / CAF を実機仕様のLSB-first 1bit DPCMへ自動変換します。波形プレビューを見ながら、ドラムや声を配置できます。

1bitという極端な量子化のため、変換すると音は必ず粗くなります。それを「劣化」ではなく音色として扱えるように、変換前後を比べながら素材を選べる作りにしました。

実機準拠で書き出す

書き出しは4種類です。

形式内容
NSF / NSFe独自の6502再生ドライバと、レジスタ差分列を生成。標準的なNSFプレイヤーや実機で再生できます
WAV48kHzモノラル。オフラインレンダリング
DMC配置したDPCMサンプルの生データ
.nesseq全編集データを含むJSONプロジェクト

NSF書き出しは標準APUの5チャンネルを対象とし、1曲・非バンク切替の互換ファイルを生成します。DPCMは1プロジェクトにつきNSFへ配置するサンプルを1つ選択します。

テストでは、DPCMのビット順と飽和、プロジェクトの往復、地域別の音高、WAVとNSF / NSFeの構造検証に加えて、生成したファイルを実際にGame Music Emuで再生し、無音になっていないことまで確認しています。書き出せたが鳴らない、という失敗が最も見つけにくいためです。

できることと、保証しないこと

M-NESはゲームエミュレーターではありません。ROMの読み込みも、映像も、ゲームコードの実行もありません。エミュレートするのは音源チップと、音楽ファイル内のCPUルーチンだけで、出力は音のみです。

NSF / NSFeの読み込みはファイル内の6502プログラムを実行しますが、ピアノロールへの自動逆変換を万能に行うものではありません。取り込みはレジスタ書き込みの追跡による復元であり、元の作曲データそのものではありません。

できることと保証しないことを分けて示すのは、HexaChipMegaTuneから続けている方針です。

オフラインで完結する

アプリはネットワークを使いません。アカウント登録なし、広告なし、トラッキングなし、完全オフラインで動作します。作曲、再生、書き出しはすべて端末内で完結します。

画面はiPadで3ペイン、iPhoneで4タブに切り替わります。トラック、ピアノロール、音色パネルのどれを大きく見せるかを、端末の画面幅に合わせて変えています。

製品概要

項目内容
名称M-NES: 8bitチップチューン作曲
提供開始2026年8月
対応OSiOS 17.0以降 / iPadOS 17.0以降 / macOS 14.0以降(Apple M1以降)/ visionOS 1.0以降
価格1,200円(買い切り・追加課金なし)
対応言語日本語・英語
カテゴリミュージック
配信App Store
開発・提供株式会社Code and DESIGN

M-NESは独立した製品であり、いかなる家庭用ゲーム機メーカーとも提携・承認関係はありません。NSF / NSFeは8bitゲーム音楽の保存に使われるコミュニティ策定のファイル形式です。

会社概要

項目内容
会社名株式会社Code and DESIGN(Code and DESIGN inc.)
代表者代表取締役 中島安彦
事業内容iOSアプリ・ゲーム・Webサービスの企画・開発・運営、受託開発
Webサイトhttps://code-and-design.jp/
App Store開発者ページ

関連する記事

音源そのものの仕組みはファミコンの音源の仕組みに、NSFというファイル形式の中身はNSF・NSFeとはにまとめています。機種ごとの違い全体はチップチューン完全ガイド、最初の1曲の組み立て方はチップチューンの作り方入門をご覧ください。

デューティ比を1段変えるだけで、同じ音符がまったく別の性格になる。その手触りごと持ち歩ける制作環境として、M-NESを育てていきます。ご意見・ご要望はお問い合わせからお寄せください。

M-NESをApp Storeで見る(1,200円・買い切り)