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
2
670
mruby(PicoRuby)で ファミコン音楽を奏でる
Katsuhiko Kageyama
August 28, 2025
Tweet
Share
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PCとPicoRuby-ESP32間でシリアルファイル転送
kishima
1
35
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
350
Rubyでmicro-ROS!
kishima
0
93
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
120
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
290
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
910
わたしのRubyKaigi Effect
kishima
2
190
思い出の技術書 F-BASICの世界
kishima
0
36
リハビリmruby
kishima
1
300
Other Decks in Technology
See All in Technology
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
230
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
250
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
What happened to RubyGems and what can we learn?
mikemcquaid
0
300
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
Digitization部 紹介資料
sansan33
PRO
1
6.8k
プロポーザルに込める段取り八分
shoheimitani
1
270
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
350
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
Featured
See All Featured
Fireside Chat
paigeccino
41
3.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Done Done
chrislema
186
16k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
310
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
The agentic SEO stack - context over prompts
schlessera
0
640
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
We Have a Design System, Now What?
morganepeng
54
8k
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の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・