Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
OSC2016 Hiroshima PSG tunes on NetBSD luna68k ...
Search
Izumi Tsutsui
November 27, 2016
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OSC2016 Hiroshima PSG tunes on NetBSD luna68k again
OSC2016広島のNetBSDセミナーで発表した『NetBSD/luna68kで「PSG音源の調べ」ふたたび』のスライドです。
Izumi Tsutsui
November 27, 2016
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
120
CPUクロック20MHz RAM 16MBの LUNAで 30秒アニメGIF再生デモ / OSC2026Kyoto
tsutsui
0
82
OSC東京でいただいた UIAPduinoマイコンボードで PSG演奏と液晶ドッド絵デモ / osc2026Kagawa
tsutsui
0
410
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
120
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
210
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
400
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
400
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
200
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
270
Other Decks in Programming
See All in Programming
Security issues being discussed on Web Platforms
petamoriken
0
990
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
App Intentsのビルドプロセスを支える技術
kntkymt
0
410
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Heart of Swift Concurrency
koher
0
920
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
340
アクセシビリティから考える情報設計
high_g_engineer
0
380
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
250
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
630
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
How to train your dragon (web standard)
notwaldorf
97
6.8k
Technical Leadership for Architectural Decision Making
baasie
3
570
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
810
Visualization
eitanlees
152
17k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Music & Morning Musume
bryan
48
7.4k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
Transcript
NetBSD/luna68kで 「PSG音源の調べ」 ふたたび オープンソース カンファレンス2016広島 ルナ@広島 ご当地ソングデモ Izumi Tsutsui
[email protected]
Twitter: @tsutsuii
LUNAとは よしだともこ先生のブロクより LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つ オムロン株式会社が発売していた、 UNIXワークステーションの名前です (その当時、私はこの会社のUNIXワークス テーション開発部門で働いていました) http://notredameningen.kyo2.jp/e422862.html
過去のLUNA@広島 2013年 サテライト キャンパス ひろしま 初年度 https://twitter.com/moveccr/status/386697554529771520
Twitter TL on LUNA-II mlterm-fb + tw rubygem
OSC2015広島にて 「今回は LUNAが見られなくて 残念でした」 えーと、なんかすいません
そういえばルナと言えば https://twitter.com/tsutsuii/status/398686477023858688 @KOF2013
2015年 シーズンオフ https://twitter.com/ebijun/status/677990635211587584
2016年の OSC広島には なんとかして LUNAを持ち込ま なければ……
と、 思っていたの ですが
2016年 11月23日 https://twitter.com/carp_News24/status/801662159012831232
(´・ω・`) ありがとう、ルナ
とりあえずネタは仕込みました https://twitter.com/tsutsuii/status/800362729458413568 「みくった〜♪」
• いわゆるピコピコ音 × 3和音 • 元はアーケードゲーム用 • イメージとしてはファミコンの 音が近いです (※ファミコンの音源とPSGとは微妙に違います)
PSG音源とは
• NEC PC-6001/mkII • SHARP X1シリーズ • 富士通 FM-7/FM-77シリーズ •
MSX • SHARP MZ-5500 だいたい ’80年代前半のマシン。 85年以降は FM音源チップ搭載機が主流に PSG音源を搭載したマシン 出典: https://ja.wikipedia.org/wiki/Programmable_Sound_Generator
PC-6001内のPSG音源IC
MOSAIC.WAV アルバム 「電気の恋人」の歌詞より 「PSGでやっと3和音 それでも感動してた あの頃〜♪」 https://www.amazon.co.jp/dp/B00569BHDY
いわゆる おっ◯んホイホイ https://twitter.com/isaki68k/status/802177405582327808
「チップチューン」として 最近(?)見直されています
PSG 3和音での楽曲 ボカロとかより簡単です • 1音目:メインメロディ • 2音目:バッキング (副旋律) •
3音目:ベース or ドラム ノイズを使ったリズムとかもできますが そのへんの細かい技は慣れてから徐々に
最近は PC-6001の PSGで遊んでました http://www.nicovideo.jp/watch/sm29263535 http://www.nicovideo.jp/watch/sm29939586
LUNAとPSG音源 OMRON TECHNICS Vol.29 No.1 https://twitter.com/tsutsuii/status/426963345388732416
初代LUNA構成 OMRON TECHNICS Vol.29 No.1 “LUNA(デスクトップWS)のハードウェア” PSG (SSG) は ここにある
メインCPU MC68030 デバイス サブCPU HD647180 デバイス MC68030 HD647180
LUNA内のYM2149 • YAMAHA製の AY-3-8910 互換チップ
HD647180 とは 日立製 Zilog Z80 上位互換マイコン • 6.144MHz クロック
• タイマ、シリアル、DMA内蔵 • MMU内蔵で1MBアドレスサポート • 647180は ワンタイム PROM版
HD647180XP
• Z80互換サブCPU 「ハードウェア設計者の趣味で〜」 (元カーネル開発者という方のお話) • PSG について 「当時のパソコンと同じ機能が必要、 という考えがあったのでは」 (サブCPUに関係されていた方のお話)
なぜLUNAにPSG音源が?
ここまでが前提知識です https://twitter.com/tsutsuii/status/802351863836250112
PC-6001用 PSGドライバ移植 https://twitter.com/tsutsuii/status/748250450470674432
調査・検討の結果、 I/Oポート変更・ 周波数テーブル修正・ タイマ割り込み実装 等で PC-6001用PSGドライバを LUNAの HD647180でも 使用可能、という結論に 詳細はOSC2016京都のスライド↓を参照
https://speakerdeck.com/tsutsui/osc2016-kyoto-psg-tunes-on-netbsd-luna68k
リセット信号 割り込み要求 LUNA I/Oプロセッサ (XP) 構成 MC68030 NetBSD カーネル 支配下
8255 PIO HD647180 独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI
リセット信号 割り込み要求 XPデバイスドライバ実装(1) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180
独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ 以下の ioctl(2) を実装 ・指定したZ80コードをロード ・HD647180をリセット ⇒これで演奏プログラムを実行
リセット信号 割り込み要求 XPデバイスドライバ実装(2) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180
独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ ユーザープロセス /dev/xp 経由 プロセス 仮想アドレス 制御コマンド PSGドライバ用 曲データ 共有メモリ mmap(2) を実装 ⇒ユーザープロセスから 曲データのダウンロード および演奏開始停止制御が 可能に
OSC京都はそんな展示デモでした http://p.twipple.jp/AWyea https://twitter.com/tokudahiroshi/status/758874111418306560
ここから OSC広島の 新ネタです
展示予告スライド
展示予告スライド ここ
PC-6001を含む PSG搭載マシンに しゃべらせる ……という いにしえの技が存在
Wikipediaより PSGによってPCMを再生する技法が存在し、 PSGPCM や SSGPCM等と呼ぶ。 ※PCM:.wav ファイル等で使われる音楽データ形式 PSGPCMの原理
PSGで発声されるのは矩形波である。これはロー(=0)とハイ(=1)の2値し かとらない。これに音量レジスタ(4bit)の値を掛けたものが1チャンネル分の 出力である。 AY-3-8910相当品では、あるチャンネルの発声を停止すると矩形波出力はハイ (=1)で固定される。従って、そのチャンネルの出力は、音量レジスタそのも のとなる(1×音量レジスタ=音量レジスタ)。 この仕様を利用し、発声を停止した状態でそのチャンネルの音量を操作すること で、PSGをDACとして利用するというのが大まかな原理である。 PSGによるPCM再生 出典: https://ja.wikipedia.org/wiki/Programmable_Sound_Generator
音楽再生時のPSG出力 スピーカー アンプ ♪♪ ♪ Pico pico 加算 PSGチップ チャンネル3
Volume 1〜15 チャンネル1 Volume 1〜15 音程 チャンネル2 Volume 1〜15 音程 ・各chで音程と音量を設定 ・3chの音を合成してスピーカー駆動
PCM再生時のPSG出力 スピーカー アンプ 加算 PSGチップ チャンネル3 Volume 1〜15 チャンネル1 Volume
1〜15 OFF Volume チャンネル2 Volume 1〜15 OFF Volume 3chのVolume合計値 =PSG電圧出力 サンプリング周波数(8〜11kHz)で 以下を処理することで任意PCM出力 ・8ビット PCMデータ読み出し ・ボリューム変換テーブル読み出し ・PSG 各ch へボリューム設定 みくった〜♪ Volume設定値 =各ch出力電圧 Volume設定値 =各ch出力電圧
PC-6001での実装例 http://sbeach.seesaa.net/article/387861465.html
PC-6001での実装例 •64KB RAM の PC-6001mkII を想定 ⇒使用可能メモリは 57KB 程度 •11.025kHz
8bit PCM に限定 •PCMデータは テープ or RC-232C (オプション) から本体RAMに読み込み •割り込み禁止して、命令実行クロック数で 再生タイミングを制御
P6 PCM再生の問題点 再生時間 ・サンプリング周波数 11kHz・8bitデータ ・使用可能メモリ 57KB ⇒再生可能時間は 約5秒
ロード時間 ・データサイズ 57KB ・テープのボーレート 1200bps ⇒57KB のロード時間: 約9分30秒
MOSAIC.WAV アルバム 「電気の恋人」の歌詞より 「データは 皆テープにダビング 読み込むのに 速くて10分♪」 http://www.nicovideo.jp/watch/sm12836594
LUNAでのPCM再生実装 •プログラム・スタックを除く60KBを使用 •8kHz サンプルPCMをターゲット ⇒再生可能時間は 8秒弱 再生中にもホストからロードできれば無制限? •8kHz サンプルはタイマ割り込み駆動 •再生・停止はホストOSからコマンド指示
•PCMデータもホストOSからロード
•ロード ホストOSの共有メモリで一瞬 •ストレージ ホストOSのHDDで実質無尽蔵 •PSGデータ・PCMデータ Ethernet経由で何でも取得可能 LUNA PSG最強説
•とりあえずのご当地ネタで 列車接近メロディPSG版 + アナウンスPCM 展示 PSG+PCMデモ http://www.nicovideo.jp/watch/sm5379033
•PSG演奏は今でも感動できます ついつい自分で作った曲を聞いてしまう罠 •サブCPUとしてのZ80の可能性 今のホスト OS構成では PSG制御は結構大変 •PCM再生の先人の知恵を見習いたい •今回も「動いたわーい」でした! まとめ