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
690
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
390
Rubyでmicro-ROS!
kishima
0
100
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
130
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
350
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
940
わたしのRubyKaigi Effect
kishima
2
200
思い出の技術書 F-BASICの世界
kishima
0
37
リハビリmruby
kishima
1
310
Other Decks in Technology
See All in Technology
DX Improvement at Scale
ntk1000
2
280
Kiro のクレジットを使い切る!
otanikohei2023
0
110
Kaggleの経験が実務にどう活きているか / kaggle_findy
sansan_randd
4
730
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
1
160
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
200
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
マネージャー版 "提案のレベル" を上げる
konifar
17
12k
社内でAWS BuilderCards体験会を立ち上げ、得られた気づき / 20260225 Masaki Okuda
shift_evolve
PRO
1
160
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.4k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
140
Oracle Cloud Infrastructure:2026年2月度サービス・アップデート
oracle4engineer
PRO
0
220
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
7
2.1k
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
110
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
The Limits of Empathy - UXLibs8
cassininazir
1
240
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Git: the NoSQL Database
bkeepers
PRO
432
66k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
84
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
80
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
200
Measuring & Analyzing Core Web Vitals
bluesmoon
9
770
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
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の戦闘のドラム音で使ってるらしい ◦ どおりでなんかうまく鳴らないはずだ・・・