$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mruby(PicoRuby)で ファミコン音楽を奏でる2
Search
Katsuhiko Kageyama
September 04, 2025
Technology
1
38
mruby(PicoRuby)で ファミコン音楽を奏でる2
Katsuhiko Kageyama
September 04, 2025
Tweet
Share
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PCとPicoRuby-ESP32間でシリアルファイル転送
kishima
1
31
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
170
Rubyでmicro-ROS!
kishima
0
11
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
580
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
170
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
780
わたしのRubyKaigi Effect
kishima
2
110
思い出の技術書 F-BASICの世界
kishima
0
33
リハビリmruby
kishima
1
300
Other Decks in Technology
See All in Technology
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
19
7.5k
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
490
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
200
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
110
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
4
2k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
360
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.3k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
140
障害対応訓練、その前に
coconala_engineer
0
190
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
0
250
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
150
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.8k
Featured
See All Featured
Marketing to machines
jonoalderson
1
4.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
The Language of Interfaces
destraynor
162
25k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
Writing Fast Ruby
sferik
630
62k
Automating Front-end Workflow
addyosmani
1371
200k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
47k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
Faster Mobile Websites
deanohume
310
31k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
750
Believing is Seeing
oripsolob
0
15
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の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・