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
Katsuhiko Kageyama
August 28, 2025
Technology
2
680
mruby(PicoRuby)で ファミコン音楽を奏でる
Katsuhiko Kageyama
August 28, 2025
Tweet
Share
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PCとPicoRuby-ESP32間でシリアルファイル転送
kishima
1
37
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
370
Rubyでmicro-ROS!
kishima
0
98
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
130
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
310
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
920
わたしのRubyKaigi Effect
kishima
2
200
思い出の技術書 F-BASICの世界
kishima
0
36
リハビリmruby
kishima
1
300
Other Decks in Technology
See All in Technology
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
150
Claude Code で画面の仕様書を作ろう
zozotech
PRO
0
230
チーム開発の基礎_研究を事業につなげるために
cyberagentdevelopers
PRO
2
700
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
650
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
120
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
680
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
1
240
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
810
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
5
270
横断SREがSRE社内留学制度 / Enablingになぜ踏み切ったのか
rvirus0817
0
230
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
280
個人的3D Gaussian Splattingニュースをご紹介 / sharing 3d gaussian splatting news
drumath2237
0
180
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
How to Talk to Developers About Accessibility
jct
2
140
A Modern Web Designer's Workflow
chriscoyier
698
190k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
190
Amusing Abliteration
ianozsvald
0
110
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
120
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
200
Accessibility Awareness
sabderemane
0
63
How STYLIGHT went responsive
nonsquared
100
6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
210
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の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・