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
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作っ...
Search
Izumi Tsutsui
January 31, 2026
Programming
0
35
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
2026/1/31(土)に行われたオープンソースカンファレンス2026大阪の「NetBSDのご紹介」のセミナーで発表したスライドです。セミナー時のスライドから一部体裁その他を追記修正しています。
Izumi Tsutsui
January 31, 2026
Tweet
Share
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
220
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
230
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
120
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
190
GitHub Actionsを使ってNetBSDマイナー機種用のビルドテストCIを書いてみた話 / OSC2025Osaka
tsutsui
0
150
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
460
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
690
OSC展示とLUNAとNetBSD / OSC2024Kyoto
tsutsui
1
700
digital VAX, NetBSD/vaxの歴史と VAXstation 3100/m30 展示 / OSC2024Osaka
tsutsui
0
1.4k
Other Decks in Programming
See All in Programming
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
130
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
120
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
580
Fluid Templating in TYPO3 14
s2b
0
120
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
高速開発のためのコード整理術
sutetotanuki
1
360
CSC307 Lecture 06
javiergs
PRO
0
680
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
410
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.6k
今から始めるClaude Code超入門
448jp
6
7.2k
CSC307 Lecture 02
javiergs
PRO
1
770
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
45
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
400
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
69
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Getting science done with accelerated Python computing platforms
jacobtomlinson
1
110
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
170
Facilitating Awesome Meetings
lara
57
6.7k
Transcript
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 オープンソースカンファレンス 2026 大阪 今回は「NetBSD+ラズパイで本物のPSG」です Izumi Tsutsui
[email protected]
(Twitter): @tsutsuii 𝕏 Mastodon: @
[email protected]
0. はじめに 今日の展示物と セミナーについて
ラズパイ+PSG演奏ハード
PSGデータ演奏ドライバ
PSG演奏デモプログラム
1週間で作りました https://social.mikutter.hachune.net/@tsutsuii/115947637209030882
1. 最近のOSC展示 このところ PC-6001と PSGばっかりでした
2024年 KOFセミナー 「PC-6001 PSG演奏デモをNetBSDで」 https://speakerdeck.com/tsutsui/kof2024
2024年OSC愛媛セミナー 「PC-6001 PSG演奏デモ+NetBSD解説」 https://speakerdeck.com/tsutsui/osc2024ehime
2025年OSC京都セミナー 「LUNAでアニメGIF+PC-6001デモ」 https://speakerdeck.com/tsutsui/osc2025kyoto
2025年 KOFセミナー 「今年もNetBSDでPC-6001 PSGデモ」 https://speakerdeck.com/tsutsui/kof2025
「NetBSDでPSG演奏開発環境構築」 2025年OSC広島セミナー https://speakerdeck.com/tsutsui/osc2025hiroshima
さすがにこじつけが苦しい? NetBSDは いろんなマシンで動く + pkgsrcは NetBSDで使える ↓ 自分がpkgsrcのメンテ担当の PC6001エミュやツールを使えば それはNetBSDセミナーネタ
というわけで今回は 「NetBSDとラズパイで 本物のPSGハードを 制御して鳴らす」 というテーマです
2. NetBSDとは せっかくスライド作ったので 毎回ちょっとだけ説明
BSDとは? •Berkeley Software Distribution •カリフォルニア大学バークレー校 で開発されたUNIX系OS •’70年代 UNIX研究として開発開始 •’80年代 ネットワーク機能、
仮想記憶など現代のOSの 基礎を築く •UNIXの進化と普及に貢献
•“Of course, it runs NetBSD” ➔特定の機種に依存しない設計 •“Reasonable Goal” ➔性能より「理にかなった」設計 •仮想記憶やデバイスドライバ等の
一貫性を持つインタフェース設計 NetBSDの特長
•いろんなCPUやデバイスで動く •クロス開発環境の意識が強い ➔組み込み系での採用例が多い NetBSDの特長 https://www.ricoh.co.jp/-/media/Ricoh/Sites/co_jp/pdf/34211809/pro-8420y-8420ht-8410y-8410ht.pdf
3. NetBSDと PC-6001と ついでにLUNA 一応(?)関係があったり
LUNAとは よしだともこ先生のブロク LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つ オムロン株式会社が発売していた、 UNIXワークステーションの名前です (その当時、私はこの会社のUNIXワーク ステーション開発部門で働いていました)
PSGはOSC2016京都展示から https://x.com/tsutsuii/status/758881128853803008 LUNAで鳴らす PSG演奏デモ
OSC2018京都展示 https://x.com/ebijun/status/1025236491985776640 PSG PCM発展形 PSG PAM音源ドライバ
このNetBSD/luna68k用 サブCPU PSG使用の Audioドライバは NetBSD 10.0 以降に 入っています https://www.netbsd.org/releases/formal-10/NetBSD-10.0.html
4. PC-6001と エミュレータ 一般の方に向けて改めて解説
PC-6001 とは • NEC製の 8ビットパソコン •1981年 11月 発売
PC-6001 スペック •CPU: 8bit Z80互換 4MHz •RAM: 標準 16KB, 最大32KB
•グラフィック: 128×192ドット 4色 256×192ドット モノクロ2色 •音源:PSG 3和音 •標準価格:89,800円
•VRAMも共用 → 空きは 7KB/23KB •それでもいろいろ作れた時代 いろいろ遊ぶには32KBに増設しないとキツいかも メモリ 16KB/32KB
PC-6001 セーブロード 1981年という時代 •プログラムのセーブは「カセットテープ」 •「0」を1200Hz「1」を2400Hzの音で記録 •スピードは 1200bps (≒100バイト/秒) https://x.com/tsutsuii/status/825157721666252800
PC-6001用エミュレータ 実機がなくても遊べます •2000年頃からPC-6001のエミュレータが 多数開発される •エミュレータだけでなく、 開発に必要なツールも多数 •データ記録テーブ模擬 •テープ音声⇔エミュ用データ変換 •プログラムテキスト⇔エミュ用変換 •エミュレータもデバッグ機能が充実
PC6001VX http://eighttails.seesaa.net/article/305067428.html https://github.com/eighttails/PC6001VX
•READMEより 「PC6001VをLinux等で動作 するよう改変したものです」 「PC6001VXの末尾のXは クロスプラットフォームの Xです」 PC6001VX https://github.com/eighttails/PC6001VX
•基本的な機能は PC6001V 準拠 •クロスGUI環境としてQtを使用 •互換ROM内蔵で 実機ROM不要 → •pkgsrc にしたので NetBSDでも動作可能!
•Android版もあります→ PC6001VX https://github.com/eighttails/PC6001VX
5. PSG音源に ついて やっと本題の前提です
PSG音源 •いわゆるピコピコ音 × 3和音 •元はアーケードゲーム用? •BASIC言語だと PLAY 文で MML (Music
Macro Language) という書式を書いて演奏 こんなの→ "C8<D+D+8G8F8G8D+>D+DD+F" •“C” が「ド」、“8” が「8分音符の長さ」 “<” で1オクターブ下げる、という具合
PC-6001内のPSG音源IC
LUNA内のYM2149 • YAMAHA製の AY-3-8910 互換チップ
ここでやっと LUNAとPC-6001 https://x.com/tsutsuii/status/802351863836250112
PC-6001で PSG曲を演奏する手段 について
よっしゅさんの PC-6001用 PSG音源ドライバ http://park10.wakwak.com/~yosh/p6.html デモ演奏にはこれを使います
40年前の クロック4MHz メモリ 32KB (MBではありません) で これだけ演奏できるなら 今どきのマシンでは 楽勝のはずだよね?
6. NetBSDで 直接PSGを 鳴らしたい ここからが本題です
どうやって本物のPSGを鳴らすか 「PSG付き」のハードウェア •実はNetBSDが動くマシンでPSGが 載っているマシンほとんどない? •LUNAにはあるけど、サブCPU接続 •ATARI TT030にはYM2149載ってる けど、本体が遅くて開発がつらそう ➔「ラズパイにPSGをつないだ」
という記事は検索で複数ヒットする
……というわけで 部品は2019年くらいに 買ってあったんですが、 ハード工作はともかく ソフト実装が大変そう、 ということで ずっと放置状態に
そして時は流れ AIの時代に OSC広島スライド事例 https://speakerdeck.com/tsutsui/osc2025hiroshima?slide=57
とりあえず聞いてみると わりといけそう?
とりあえず聞いてみると ドライバ実装もなんとかなるかも?
これが先週の 1月23日(金)夜で、 ようやく重い腰を上げて 着手することに
7. ハードウェア 構成 特に難しいことはありません
作成したハード
回路構成 Raspberry Pi 3B PSG互換 YM2149F スピーカー アンプ 3ch出力 ミキサ回路
以前から回路自体は 脳内でできていたので、 せっかくなので ChatGPTに相談しつつ KiCADを作って書いてみる
こんな感じでさくっと作成
こんな感じでさくっと作成 Raspberry Pi 3B GPIO コネクタ PSG互換 YM2149F 3ch出力 ミキサ回路
スピーカー アンプ 制御信号 11本
またChatGPT相談 練習がてらパターン配線もやってみる
KiCAD操作体系訓練
1/24夜から基板作成 https://social.mikutter.hachune.net/@tsutsuii/115951064124275813
はんだ付けは楽しいです https://social.mikutter.hachune.net/@tsutsuii/115951703014662758
デジタル配線は悩ましい https://social.mikutter.hachune.net/@tsutsuii/115952291630668080
電源ONの瞬間がドキドキします https://social.mikutter.hachune.net/@tsutsuii/115952602625372453
1時間試行錯誤でトーン出力 https://social.mikutter.hachune.net/@tsutsuii/115953024789473415
ChatGPTブースト その1 https://social.mikutter.hachune.net/@tsutsuii/115953075767018038
8. ドライバ作成 ここが鬼門だったわけですが
OSC展示準備問題 https://x.com/tsutsuii/status/274449767625539584
PSG演奏ドライバの考え方 「演奏」とは •PSGレジスタを叩けば音は鳴る •でも「周波数と音量」を指示するだけ •「演奏」するには、時間経過と共に 「旋律に対応した音」を出すよう 一定周期で制御し続ける必要がある
よっしゅさんの PC-6001用 PSG音源ドライバ 特長 •2ms周期割り込みを使用 •96分音符単位で制御 •ビブラート(周波数変化)サポート •ソフトウェアエンベロープ (発声中の時間音量変化)サポート
•割り込み駆動なのでBGM演奏も可能
2ms割り込みでの演奏イメージ 「96分音符単位」がキモ BASICプログラム実行 時間 2ms 周期割り込み 96分音符長単位演奏処理 96分音符長単位演奏処理 96分音符長単位演奏処理 •4分音符を鳴らすには?
➔出力ONした後 24(=96÷4)回後にOFFする •音量や周波数も96分時間単位で変化させる ←この回数でテンポ決定→ (3〜12回程度)
PSG音源ドライバで必要な処理 要件定義から •2ms周期で演奏ルーチンを呼ぶ •演奏データを解釈して処理する ▶音符データに従った周波数と音量出力 ▶音長のカウントと出力ON/OFF ▶ビブラートの周波数変化処理 ▶エンベロープのボリューム変化処理
昨年のPSGドライバ用 コンパイラ作成時にも だいぶChatGPTに 情報を投げていたので 今回も雑に投げてみる
だんだんいい感じに
ChatGPTブーストふたたび https://social.mikutter.hachune.net/@tsutsuii/115962362922810450
ChatGPTブーストふたたび https://social.mikutter.hachune.net/@tsutsuii/115963043723039344
9. 演奏デモ作成 演奏できても まだ終わらない問題
NetBSDブース展示問題 中の人と 見に来てくれる方と •カーネルが起動して動いたら完了? •見る人はさっぱりわからない?? ▶展示ブースでの見た目でなんとかする! ✔謎マシンを持ってくる ✔SNSタイムライン表示 ✔モノクロGIF動画再生
https://x.com/ebijun/status/1999694904457576483
展示演奏デモでも同じ問題が みんなPSG音源なので…… •PC-6001でもドット絵を動かしたり •LUNAでGIFアニメのBGMにしたり ▶ラズパイは小さいので 目立たないという問題 ▶凝ったデモを作るにも あと3日しかない ▶どうにかできないか、と、
とりあえずまたChatGPTに投げてみる
プレゼン提案とかは強そう
1月27日 22時頃 https://social.mikutter.hachune.net/@tsutsuii/115967390949476282
ドライバ演奏実装を 投げつつ、 どういうI/Fが良いか 等々をいろいろ相談
実装ではなく仕様書から
デモの実装方針が 見えてきたところで デモ画面イメージを 作成してみる
https://social.mikutter.hachune.net/@tsutsuii/115967405493199794
イメージを投げてみる
いけそうなので仮実装依頼
2026年1月28日 01:13 https://social.mikutter.hachune.net/@tsutsuii/115973203911038182
ここまで動くともっと作りたくなる https://social.mikutter.hachune.net/@tsutsuii/115973203911038182
2026年1月29日 03:17 イース2 オープニング曲も演奏可能に https://social.mikutter.hachune.net/@tsutsuii/115974096152180552
ここまで来たら フルセット作るか、と OSC準備休暇にしていた 1月30日にひたすら調査
ChatGPTと二人三脚 https://social.mikutter.hachune.net/@tsutsuii/115979507709996520
ChatGPTと二人三脚 https://social.mikutter.hachune.net/@tsutsuii/115982290666549231
展示デモRTAリザルト OSCイベント駆動 + ChatGPTブースト •1/24 回路図と基板パターン図作成 •1/25 手配線基板作成して動作テストまで完 •1/26
GPIO mmap版+2ms周期演奏動作 •1/27 演奏展示用 PSG演奏状態表示デモ動作 •1/28 ネストコマンドとデチューンを実装 •1/29 ビブラートとソフトエンベロープ調査① •1/30 同 調査②(計6時間半)と実装(3時間) •1/31未明 このスライドを作成中(今5時ですね)
•やっとこさ「NetBSDとラズパイ」で P6 PSG曲演奏デモが実現できました •回路設計、KiCAD、ドライバ実装、 デモ仕様検討、P6PSGドライバ調査、 デバッグとコードレビュー、全てで ChatGPTがイベント駆動開発ブースト •次のOSC東京に向けていろいろと 機能追加していきたいですね まとめ