Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PC-6001のPSG演奏デモを機会に NetBSDを真面目に説明してみる オープンソースカンファレンス愛媛 2024 レトロパソコン実機デモのために持ってきました Izumi Tsutsui
[email protected]
Twitter: @tsutsuii Mastodon: @
[email protected]
Slide 2
Slide 2 text
ところで、 今日のOSC愛媛の セミナーセッション情報 を見ると……
Slide 3
Slide 3 text
https://event.ospn.jp/osc2024-ehime/session/1757792
Slide 4
Slide 4 text
https://event.ospn.jp/osc2024-ehime/session/1757792
Slide 5
Slide 5 text
学生の方も 来られてるかも なので、 できるだけ(?) 入門編で行きます
Slide 6
Slide 6 text
BSDとは? ●Berkeley Software Distribution ●カリフォルニア大学バークレー校 で開発されたUNIX系OS ●’70年代 UNIX研究として開発開始 ●’80年代 ネットワーク機能、 仮想記憶など現代のOSの 基礎を築く ●UNIXの進化と普及に貢献
Slide 7
Slide 7 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases
Slide 8
Slide 8 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 1BSD 1978年3月 PDP-11
Slide 9
Slide 9 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 2BSD 1979年5月 viエディタ
Slide 10
Slide 10 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 3BSD 1980年3月 VAX 仮想記憶
Slide 11
Slide 11 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 4.0BSD 1980年10月 signal機構
Slide 12
Slide 12 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 4.1BSD 1981年7月 性能強化
Slide 13
Slide 13 text
BSD timeline (1) https://github.com/FabioLolix/BSD-Timeline/releases 4.2BSD 1983年8月 TCP/IP
Slide 14
Slide 14 text
BSD timeline (2) https://github.com/FabioLolix/BSD-Timeline/releases 4.3BSD 1986年4月 複数機種対応
Slide 15
Slide 15 text
BSD timeline (2) https://github.com/FabioLolix/BSD-Timeline/releases 4.3BSD Net/2 1991年6月 80386対応
Slide 16
Slide 16 text
BSD timeline (2) https://github.com/FabioLolix/BSD-Timeline/releases 386BSD 0.0 1992年2月 IBM-PC用
Slide 17
Slide 17 text
●Intel 80386プロセッサ向け ●初のオープンソースUNIX系OS? ●4.3BSD Net/2ベース ●企業や大学が主だった UNIX系OSが一般(?)の ユーザでも利用可能に ●実は趣味プロジェクト だった、という話 386BSD
Slide 18
Slide 18 text
●いずれも386BSDをベースとした パッチ集として開始 FreeBSD ➔ 性能重視、x86 PCをターゲット NetBSD ➔ 設計重視、全CPUをターゲット NetBSD, FreeBSD
Slide 19
Slide 19 text
●“Of course, it runs NetBSD” ➔特定の機種に依存しない設計 ●“Reasonable Goal” ➔性能より「理にかなった」設計 ●仮想記憶やデバイスドライバ等の 一貫性を持つインタフェース設計 NetBSDの特長
Slide 20
Slide 20 text
●いろんなCPUやデバイスで動く ➔組み込み系での採用例が多い NetBSDの特長 https://x.com/yuyarin/status/1154647238280302593
Slide 21
Slide 21 text
●抽象化されたインタフェース実装 NetBSDの特長 https://social.mikutter.hachune.net/@osa_k/112066453265169340
Slide 22
Slide 22 text
NetBSDを動かしてるマシン展示 SHARP X68030 https://social.mikutter.hachune.net/@tsutsuii/113219497964975269
Slide 23
Slide 23 text
NetBSDを動かしてるマシン展示 Apple Macintosh LC630→ ↓ATARI TT030
Slide 24
Slide 24 text
NetBSDを動かしてるマシン展示 https://x.com/tsutsuii/status/1817601650833670197 https://x.com/tsutsuii/status/1682579308307685378 オムロン LUNA, LUNA-II
Slide 25
Slide 25 text
ところで タイトルにある PC-6001 ってどうなったの? ……と思われる方も いるかもしれません
Slide 26
Slide 26 text
OSC2017京都 PC-6001×LUNAコラボ演奏展示 https://www.nicovideo.jp/watch/sm31732739
Slide 27
Slide 27 text
PC-6001 とは ● NEC製の 8ビットパソコン ●1981年 11月 発売
Slide 28
Slide 28 text
ホビー・教育向け ターゲット https://www.nicovideo.jp/watch/sm1254646
Slide 29
Slide 29 text
PC-6001 スペック ●CPU:8bit Z80 4MHz ●RAM:標準 16KB, 最大32KB ●グラフィック: 128×192ドット 4色 256×192ドット モノクロ2色 ●音源:PSG 3和音 ●標準価格:89,800円
Slide 30
Slide 30 text
●VRAMも共用 → 空きは 7KB ●それでもいろいろ作れた時代 いろいろ遊ぶには32KBに増設しないとキツいかも メモリ 16KB
Slide 31
Slide 31 text
Z80 CPUとは ●1976年発表 8ビットCPU ●’80年代のパソコンに多数採用 ●組み込みでは今も使われている ロングセラー
Slide 32
Slide 32 text
LUNAとPC-6001 https://x.com/tsutsuii/status/802351863836250112
Slide 33
Slide 33 text
PC-6001マスタ・LUNAスレーブ https://www.nicovideo.jp/watch/sm31979305
Slide 34
Slide 34 text
PC-6001マスタ・LUNAスレーブ ●PSG演奏ドライバは2ms割り込み駆動 ●割り込みでジョイスティックポートに 外部駆動信号を出力 ●それをLUNAのシリアルポートに接続 ●LUNAサブCPUのシリアル割り込みで LUNAのPSG楽曲を同期演奏 ……という誰にもわからない デモ展示をやってたのでした
Slide 35
Slide 35 text
Z80 CPU用 UNIX ●“FUZIX”: Z80用 UNIX like OS ●LUNAのZ80互換サブCPUでも動作 ●ブースのエミュレータ上でデモ中 https://x.com/tsutsuii/status/1857612965266231703
Slide 36
Slide 36 text
●聴講者が全員PC-6001を知ってる ●セミナー後にPC-6001ソフト開発 の思い出を語る方 ●展示ブースで Z80マシン語の話 が始まる ……みたいな感じでした ちなみに先週末 11/9 の 関西オープンフォーラムでは
Slide 37
Slide 37 text
……と、 NetBSDマシンと PC-6001の関係を むりやり話したので、 後はPC-6001デモの話 です
Slide 38
Slide 38 text
PC-6001用エミュレータ 実機がなくても遊べます ●2000年頃からPC-6001のエミュレータが 多数開発される ●エミュレータだけでなく、 開発に必要なツールも多数 ●データ記録テーブ模擬 ●テープ音声⇔エミュ用データ変換 ●プログラムテキスト⇔エミュ用変換 ●エミュレータもデバッグ機能が充実
Slide 39
Slide 39 text
PC6001VX http://eighttails.seesaa.net/article/305067428.html https://github.com/eighttails/PC6001VX
Slide 40
Slide 40 text
●READMEより 「PC6001VをLinux等で動作 するよう改変したものです」 「PC6001VXの末尾のXは クロスプラットフォームの Xです」 PC6001VX https://github.com/eighttails/PC6001VX
Slide 41
Slide 41 text
●基本的な機能は PC6001V 準拠 ●クロスGUI環境としてQtを使用 ●互換ROM内蔵で 実機ROM不要 ●pkgsrc にしたので NetBSDでも動作可能! ●Android版もあります→ PC6001VX https://github.com/eighttails/PC6001VX
Slide 42
Slide 42 text
NetBSDマシン上で PC6001VXを使ったり たまに実機を使ったり という感じで 遊んでいます
Slide 43
Slide 43 text
●128×192: 横長ドット ●青・赤・緑・黄 (白・橙・紫・水色 のモードもあり) 4色の芸術
Slide 44
Slide 44 text
最近のマイブーム ●パピコン4色 減色画像作成 OSC広島でもひっそり展示してました
Slide 45
Slide 45 text
減色例
Slide 46
Slide 46 text
減色例
Slide 47
Slide 47 text
ところで、KOFのセミナーで このスライドを見られた方から PC-6001の4色モードは 緑・青・赤・黃 ではなく 白・水色・紫・橙 を使うべき! という熱い声をいただきました
Slide 48
Slide 48 text
減色例
Slide 49
Slide 49 text
減色例
Slide 50
Slide 50 text
なぜなら橙を使えば 肌色が出せる! ……ということだったので 画像をKOFのスライドから 差し替えさせていただきました
Slide 51
Slide 51 text
減色方法 ●16色と比べて格段にむずかしい 2016年頃は既存の減色ツールで全部 手動で試行錯誤で作ってました
Slide 52
Slide 52 text
「画像変換 for PC-6001」 ●時代の進化 Web I/Fで各種の減色アルゴリズムや パラメータ調整でいい感じに作ってくれる ページがあります https://nazo.main.jp/prog/retropc/gcp6.html
Slide 53
Slide 53 text
ドット打ち職人 ●細かい調整はGIMPで そこそこ大変ですが、ドット数も色数も 少ないので慣れてくるとなんとかなります
Slide 54
Slide 54 text
そんなことを やっていた中で、 最近よく見ていた 動画がこれ
Slide 55
Slide 55 text
宇宙戦艦ヤマトを熱唱する花梨先輩 feat. 小春六花 @ニコ動 https://www.nicovideo.jp/watch/sm43594193
Slide 56
Slide 56 text
メインを歌う夏色花梨先輩の 歌はすごく良いのに、 手前で合いの手を入れる 小春六花さんのインパクトに すべて持っていかれる動画 (詳しくは視聴してみてください)
Slide 57
Slide 57 text
3色花梨先輩 減色方法は都度試行錯誤で ●輪郭色:青、減色方法:ディザパターン (タイリング)でいい感じに https://nazo.main.jp/prog/retropc/gcp6.html
Slide 58
Slide 58 text
3色花梨先輩 GIMPで編集 ●256x192の元絵と重ねて細かい修正
Slide 59
Slide 59 text
3色花梨先輩 実機表示でも意外といい感じに
Slide 60
Slide 60 text
4色花隈千冬さん 黒髪は変換がむずかしい
Slide 61
Slide 61 text
4色花隈千冬さん 実機表示も見つつひたすらドット修正
Slide 62
Slide 62 text
次は音楽? 動画視聴ヘビーローテーション効果 花梨先輩の歌もリップシンクもいい感じなので もっと注目して欲しいよね と思いながら 改めて何度も動画視聴していてふと思う ●花梨先輩、小春六花、ベースの3パート? ●3パートなら PC-6001 PSGで演奏可能? https://www.nicovideo.jp/watch/sm43594193
Slide 63
Slide 63 text
PSG音源 ●いわゆるピコピコ音 × 3和音 ●元はアーケードゲーム用? ●BASIC言語だと PLAY 文で MML (Music Macro Language) という書式を書いて演奏 こんなの→ "C8D+DD+F"
Slide 64
Slide 64 text
PSG展示@OSC 前述の通りで PC-6001+LUNAで PSG演奏デモとか 展示してました
Slide 65
Slide 65 text
ニコ動にもいくつか上げています http://www.nicovideo.jp/watch/sm29263535 http://www.nicovideo.jp/watch/sm29939586
Slide 66
Slide 66 text
楽曲PSG演奏のためには いわゆる耳コピ ●音声を聞いてパートごとに 音程を取る ●いろいろある採譜支援ツールを 使ってなんとかする ●このへんはWindows用しかなくて NetBSD的には厳しい感じ
Slide 67
Slide 67 text
採譜ツール WaveTone 周波数解析表示、スロー再生、 ピアノロール上でのノート作成と試聴 等々が可能 https://ackiesound.ifdef.jp/download.html#wt
Slide 68
Slide 68 text
目と耳でピアノロール採譜 ●ボーカル抽出音声を音圧と耳でひたすら 細かく採譜 ●後述のPSG音源ドライバは64分音符が 使えないので気をつけましょう
Slide 69
Slide 69 text
MML編集支援ツール 3ML Editor MIDIデータ→MML変換、編集したMMLの ピアノロール表示反映や試聴が可能 公式ページはなくなっているので適当にぐぐってください
Slide 70
Slide 70 text
MML編集支援ツール 3ML Editor こんな感じでリアルタイム修正可能
Slide 71
Slide 71 text
PC-6001で 演奏させる手段 について
Slide 72
Slide 72 text
よっしゅさんの PC-6001用 PSG音源ドライバ http://park10.wakwak.com/~yosh/p6.html PC-6001での演奏にはこれを使います
Slide 73
Slide 73 text
TINY野郎さんの MML2P6PSGDRV https://www.tiny-yarou.com/deepp6.html Windows GUI上で MML→PSG演奏データ の変換が可能
Slide 74
Slide 74 text
PSG演奏データが 作成できたら 次はエミュレータ上 で鳴らします
Slide 75
Slide 75 text
MML修正〜試聴 サイクル ●3MLEでMMLを修正編集 ●3MLEでMIDI出力してWaveToneで インポートして原曲音程確認 ●書式をMML2P6PSGDRV用に変換 ●MML2P6PSGDRVで演奏データ バイナリ生成 ●PC6001VXの loadmemコマンドで 演奏データバイナリ読み込み ●PC6001VX上で演奏実行
Slide 76
Slide 76 text
MML修正〜試聴 サイクル ●3MLEでMMLを修正編集 ●3MLEでMIDI出力してWaveToneで インポートして原曲音程確認 ●書式をMML2P6PSGDRV用に変換 ●MML2P6PSGDRVで演奏データ バイナリ生成 ●PC6001VXの loadmemコマンドで 演奏データバイナリ読み込み ●PC6001VX上で演奏実行 Windows上 Windows上 NetBSD上 Windows上 NetBSD上 NetBSD上
Slide 77
Slide 77 text
作ってみたPSG曲が かなり良かったので (自画自賛) 花梨先輩のために PC-6001 PSG演奏でも リップシンクするデモ を作ろう、と思い立つ
Slide 78
Slide 78 text
リップシンクデータ作成 ●元動画準拠で あ・い・う・え・お ・ん・無言 の7パターンを変換 ●「う」がドットが足りずムズい
Slide 79
Slide 79 text
リップシンクデータ作成 ●P6PSGドライバ用MMLの中に リップシンク用データを 埋め込み ●演奏待機中BASICプログラムで PSGドライバの更新データを 見て、リップ部分書換処理を 呼び出す
Slide 80
Slide 80 text
リップシンクデータ作成 ●実際のデータ例 ち きゅ う I2q1c8 I3q0c+48&d16.&c+48 c48&c2&c32 I0r8 I1q1c4&c16.&c24 I0r16 I2q1c8 I3q0c+48&d16.&c+48 c48&c2&c32 I0r8 I1q1c4.&c16. I3q0d48&d+8 d8 I4
d48
Slide 81
Slide 81 text
エミュ上で実行して リップ形状と歌詞と PSG音とを目と耳で 確認しながら 不自然なところを ひたすら修正
Slide 82
Slide 82 text
MML修正〜ビルド サイクル ●MML修正と書式変換 ●3MLE上で確認 ●MML2P6PSGDRVで演奏データ バイナリ生成 ●バイナリ→アセンブラソース変換 ●アセンブルしてZ80バイナリ生成 ●BASICプログラムのDATA文生成と txt2basによるP6データ生成 ●バイナリ部のP6データ生成 ●なんでもピーガーmkIIでwavファイル作成
Slide 83
Slide 83 text
MML修正〜ビルド サイクル ●MML修正と書式変換 ●3MLE上で確認 ●MML2P6PSGDRVで演奏データ バイナリ生成 ●バイナリ→アセンブラソース変換 ●アセンブルしてZ80バイナリ生成 ●BASICプログラムのDATA文生成と txt2basによるP6データ生成 ●バイナリ部のP6データ生成 ●なんでもピーガーmkIIでwavファイル作成 Windows上 NetBSD上 Windows上 NetBSD上 NetBSD上 NetBSD上 NetBSD上 Windows上
Slide 84
Slide 84 text
めんどくさくない? と思われるでしょうが、 元々Windows機もあって NetBSD上のsambaで ファイル共有していると 結構うまく連携できます
Slide 85
Slide 85 text
リップシンクポイント ●「運命背負い」の「うんめい」 を単純4分割するとめちゃ不自然 ➔「うーんめーい」だといい感じ ●サビの「う ちゅ〜う せんかん」 ↑ここは一瞬無音 ●「あ」の後に「マ」「バ」が続く ときはいったん口を閉じると良い 「ヤ〜 マ〜 ト〜〜」 ↑ここ う・ちゅ〜う せん
Slide 86
Slide 86 text
人(AI?)の歌声 ●いわゆる「タメ」がかなりある ●24分音符、つまり72msくらい 半音ズレてるだけでめちゃ違和感 ヤ〜 マ〜 ト〜 ひ とぉ〜 が〜〜〜 ここを24分だけ 半音下げないと すごく変
Slide 87
Slide 87 text
人(AI?)のビブラート ●耳で聞いて定量化はムリ ●いろいろ測って 180ms周期で 半音の1/3くらい揺らすように ●PSGドライバの設定値がわりと謎で 最後は感覚で現物合わせに……
Slide 88
Slide 88 text
そんなこんなで作った 宇宙戦艦ヤマトを熱唱する花梨先輩 feat. PC-6001 の動画はニコ動に上げてあります https://www.nicovideo.jp/watch/sm44314683
Slide 89
Slide 89 text
NetBSDは いろんなマシンで動く + pkgsrcは NetBSDで使える ↓ pkgsrc入りしたアプリを 使えばそれはNetBSDネタ
Slide 90
Slide 90 text
●BSDの歴史をまとめてみました ●PC-6001 はエミュレーターや 各種開発ツールが充実しています ●耳コピはいろいろ奥が深いです ●GUIツールは素直にWindowsで ●必要なところだけWindows、でも なんとかなります ●自分の作りたいものを作りましょう まとめ