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)で ファミコン音楽を奏でる
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Katsuhiko Kageyama
August 28, 2025
Technology
730
2
Share
mruby(PicoRuby)で ファミコン音楽を奏でる
Katsuhiko Kageyama
August 28, 2025
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PicoRuby as a Multi-VM Operating System
kishima
1
230
PCとPicoRuby-ESP32間でシリアルファイル転送
kishima
1
42
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
460
Rubyでmicro-ROS!
kishima
0
130
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
160
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
470
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
1k
わたしのRubyKaigi Effect
kishima
2
230
思い出の技術書 F-BASICの世界
kishima
0
45
Other Decks in Technology
See All in Technology
「責任あるAIエージェント」こそ自社で開発しよう!
minorun365
10
2.6k
AI時代 に増える データ活用先
takahal
0
340
データ定義の混乱と戦う 〜 管理会計と財務会計 〜
wonohe
0
160
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
110
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
660
VespaのParent Childを用いたフィードパフォーマンスの改善
taking
0
150
Modernizing Your HCL Connections Experience: Visual Report to chain, Profile Enhancements, and AI Integration
wannesrams
0
170
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
290
Building Production-Ready Agents Microsoft Agent Framework
_mertmetin
0
110
Agents CLI と Gemini Enterprise Agent Platform で マルチエージェント開発が楽しくなる!
kaz1437
0
190
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
38k
『生成AI時代のクレデンシャルとパーミッション設計 — Claude Code を起点に』の執筆企画
takuros
1
1.5k
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Building Applications with DynamoDB
mza
96
7k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
340
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
How to build a perfect <img>
jonoalderson
1
5.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
220
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
220
Navigating Team Friction
lara
192
16k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
330
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
mruby(PicoRuby)で ファミコン音楽を奏でる 2025/08/28 Ruby Association Activity Report 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レジスタ操作ログファイルを生成 レジスタログをmrubyで再生してAPUエミュで波形生成 60Hzでレジスタ操作と音声バッファへの書き出しを行う
主なRubyコード https://github.com/kishima/esp32_nes_apu_mruby
レジスターログの内容
デモ R2P2 PicoRubyを起動 play.rb を使って、 フラッシュ上のレジスタログファイルを再生し、 I2S出力します
課題、やりたいこと • 正確な60Hzループ ◦ 音声出力バッファの枯渇が起きていそう ◦ 原因はGCか? ◦ ESP32のタイマで駆動できるように •
使いやすいインタフェース ◦ 重い処理はC言語で ◦ BGMとSEとして使えるように ◦ Family mruby v2 の音源として • MIDI音源にするのも面白そう • PCM音源処理の実装 ◦ FF3の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・