Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mruby(PicoRuby)で ファミコン音楽を奏でる2
Search
Katsuhiko Kageyama
September 04, 2025
Technology
170
1
Share
mruby(PicoRuby)で ファミコン音楽を奏でる2
Katsuhiko Kageyama
September 04, 2025
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PicoRuby as a Multi-VM Operating System
kishima
1
350
PCとPicoRuby-ESP32間でシリアルファイル転送
kishima
1
49
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
480
Rubyでmicro-ROS!
kishima
0
130
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
740
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
470
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
1k
わたしのRubyKaigi Effect
kishima
2
240
思い出の技術書 F-BASICの世界
kishima
0
49
Other Decks in Technology
See All in Technology
AI時代の私の技術インプットとアウトプット術
tonkotsuboy_com
3
620
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
2
300
エンジニアは生成AIと どのように向き合うべきか? ことばの意味という観点から
verypluming
1
100
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
850
Node.js+TypeScriptにおけるCJS/ESM相互運用の最新ポイント
grainrigi
2
110
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
110
エムスリーテクノロジーズ株式会社 エンジニア向け紹介資料 / M3 Technologies Company Deck
m3_engineering
0
230
JavaScript実装の自作プログラミング言語をTypeScript実装に移行した話
keisukeikeda
1
150
freee-mcpを Local→Remote で出してわかった MCP認可実装のリアル
terara
3
610
AI とサービス・デザイン / AI and Service Design
ks91
PRO
0
160
ECSのTerraformモジュールにコントリビュートした話
harukasakihara
1
340
論文紹介:Pixal3D (SIGGRAPH 2026)
tenten0727
0
720
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
Are puppies a ranking factor?
jonoalderson
1
3.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
920
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Music & Morning Musume
bryan
47
7.2k
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Facilitating Awesome Meetings
lara
57
6.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
380
Transcript
mruby(PicoRuby)で ファミコン音楽を奏でる2 2025/09/04 Omotesando.rb kishima
自己紹介 ID:@kishima (株)aptpodというIoTの会社で、ロボット制御など組み込み 系やのお仕事をしています 最近はROS/C++/Rust/Pythonにふれる機会が多いです mruby好きで、色々趣味で開発したりしてます
ファミコンの音楽っていいですよね ESP32でも今後作るプロジェクトでも同じような音を鳴らしたい 今回の準備の途中で、ファミコン 実機とかカセットとか買いました
Rubyでファミコンといえば … Optcarrot Rubyのベンチマークでよく使わているRubyによるファミコンエミュレータ実装 音声にも対応してた ただESP32上で実用的な速度で動かすことはおそらく困難 特に音の部分だけ使いたい
どうやってファミコンの音は鳴るか? APUと呼ばれる音源をCPUから操作して音を出します
ESP32で動くエミュレータを改造 esp_8_bit というものを参考に勉強 (https://github.com/rossumur/esp_8_bit) 中身は昔からあるpure Cのnofrendoというエミュレータを利用していた
NSFファイル ファミコンの音楽部分のみを抜粋した形式 内部はファミコンで動作するプログラムがほぼそのまま格納されている 楽譜というよりプログラムであり、再生のためには部分的なファミコンエミュレータ が必要になる これなら比較的簡単に鳴らせないか?
試行錯誤 NSFのエミュレータをnofrendoで動かそうとしたが簡単にはいかず レジスタやメモリの管理をきちんとしないといけない 時間がなくなってきていたので、方針変更 APUを動かすために最低限必要なものは・・・?
APUレジスタ操作さえ再現できればいい レジスタ操作の内容と実行タイミングをログに記録
最終的な構成 APUレジスタ操作ログファイルを生成 レジスタログをmrubyで再生してAPUエミュで波形生成 60Hzでレジスタ操作と音声バッファへの書き出しを行う
主なRubyコード https://github.com/kishima/esp32_nes_apu_mruby
レジスターログの内容
デモ R2P2 PicoRubyを起動 play.rb を使って、 フラッシュ上のレジスタログファイルを再生し、 I2S出力します
MIDIキーボードを繋ぐ
課題、やりたいこと • 正確な60Hzループ ◦ 音声出力バッファの枯渇が起きていそう ◦ 原因はGCか? ◦ ESP32のタイマで駆動できるように •
使いやすいインタフェース ◦ 重い処理はC言語で ◦ BGMとSEとして使えるように ◦ Family mruby v2 の音源として • PCM音源処理の実装 ◦ FF3の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・