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
1
120
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
240
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
260
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
130
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
210
GitHub Actionsを使ってNetBSDマイナー機種用のビルドテストCIを書いてみた話 / OSC2025Osaka
tsutsui
0
160
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
470
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
710
OSC展示とLUNAとNetBSD / OSC2024Kyoto
tsutsui
1
720
digital VAX, NetBSD/vaxの歴史と VAXstation 3100/m30 展示 / OSC2024Osaka
tsutsui
0
1.4k
Other Decks in Programming
See All in Programming
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
160
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
110
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
7
3.3k
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
540
CSC307 Lecture 11
javiergs
PRO
0
580
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
200
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.5k
Premier Disciplin for Micro Frontends Multi Version/ Framework Scenarios @OOP 2026, Munic
manfredsteyer
PRO
0
170
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
22
7.9k
あなたはユーザーではない #PdENight
kajitack
4
200
並行開発のためのコードレビュー
miyukiw
2
1.9k
株式会社 Sun terras カンパニーデック
sunterras
0
1.8k
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
79
The untapped power of vector embeddings
frankvandijk
2
1.6k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
270
Amusing Abliteration
ianozsvald
0
110
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
The agentic SEO stack - context over prompts
schlessera
0
660
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Bash Introduction
62gerente
615
210k
Balancing Empowerment & Direction
lara
5
910
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
130
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
420
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東京に向けていろいろと 機能追加していきたいですね まとめ