狠狠撸

狠狠撸Share a Scribd company logo
驰惭2151で贵惭音源演奏
七瀬 (@nanasetomona)
2015/07/14
@nanasetomona
https://github.com/nanase
きっかけ
? 「FM音源伝説」…FM音源LSIのガチャガチャ
? 秋葉原 東京ラジオデパート 1F
? 80年代にPCやゲーム機に内蔵の
FM音源 および DAC
? 1月に YM2203C 入手
YM2151
? 6月にYM2151を入手
? 専用DACのYM3012も同時入手
? YAMAHA 1983年製造、ステレオデジタル
? OPM(FM Operator type M)、8ch、4オペレータ
? 擬似ノイズ発生器、LFO搭載
? クロック入力 3.58 [MHz]
? 動作電圧 5.0 [V]
YM2151
? 搭載実績
? アーケードゲーム (80年代中頃~90年代前半)
? MSXの周辺機器
? X68000
FM音源とは?
? FM変調を応用した波形発生法
? 単純な正弦波の発生を考える
?(?) = ? sin 2???
-1
0
1
?
? ?
FM音源とは?
? ? は振幅 (ここでは 1)
? 2?? は角速度(≒周波数)、2??? は位相
? 位相に注目して考える
?(?) = ? sin 2???
-1
0
1
?
? ?
FM音源とは?
? 位相の歪み = 時計の針が速く、遅くなる
? 位相の変化を乱すような別の正弦波を加える
?(?) = ? sin(2??1 ? + ? sin 2??2 ?)
-1
0
1
?
? ?
(? = 1)
FM音源とは?
? ?1, ?2 はそれぞれ キャリア、モジュレータ周波数
? ? は変調指数 = 歪みの強さ
? ? を大きくすると複雑な波形が発生
?(?) = ? sin(2??1 ? + ? sin 2??2 ?)
-1
0
1
?
? ?
(? = 2.5)
FM音源とは?
? 複数(0個以上)のモジュレータ入力を持つ
正弦波発生器を オペレータ と呼ぶ
? 通常は音量を調整するための乗算器も内蔵
? 通常はオペレータを複数段重ねて使用する
オペレータ オペレータ
オペレータ
オペレータ
フィードバック
モジュレーション
モジュレーション
モジュレーション
出力
FM音源とは?
? オペレータの繋ぎ方を アルゴリズム と呼ぶ
? 直列に近い形ほど複雑な音となる
? 並列に近い形ほど軽い音となる
オペレータ オペレータ
オペレータ
オペレータ
フィードバック
モジュレーション
モジュレーション
モジュレーション
出力
FM音源の利点
? 複雑な波形を生成可能
? 矩形波や三角波よりも多彩な音作りが可能
? パイプオルガン、エレピ、金属音 の再現が強い
? 少ないデータ量で生成可能
? PCM音源は波形そのものを記録するためデータ多
? FM音源はキャリア、モジュレータに関わるデータのみ
? 初期の携帯電話に搭載(着信音など)
FM音源の欠点
? データから生成される波形の予想がつきにくい
? 僅かな誤差で全く異なる波形となる場合もあり
? 理想波形を作るにはFM音源の知識が必要
? ピアノ、パーカッションは苦手
FM2151に必要なもの
? 5.0 [V] 電源
? 4.0 [MHz] クロック
? DAC (YM3012)
? オペアンプ
? 制御マイコン
? シーケンサ
? 演奏データ
電源
? USB 給電により供給
? PC から給電するとノイズや電流不足の原因となる
? (YM2151単体でも 110 [mA] 程度の消費)
? 今回はモバイルブースターを使用
オペアンプ
? LMC6484AIN を使用
? ナショナルセミコンダクタ製
? CMOSタイプ、単電源 5.0 [V] のみで動作
? DACの他、ボルテージフォロワとして使用
余談: オペアンプは重要
LMC6484AIN
(単価: 250円)
LM324N
(単価: 38円)
符号反転時に
パルスが発生
余談: オペアンプは重要
LMC6484AIN
(単価: 250円)
LM324N
(単価: 38円)
符号反転時に
パルスが発生
制御マイコン
? NUCLEO-F401RE
? USB給電、プログラムライタ付き
? mbedで開発 (webIDE、C++)
? Arduino互換ピン装備
? フラッシュメモリ 512KB
? SRAM 96KB
? 最大 84 [MHz] 動作
? 1,500円ほどで購入
クロック
? F401REから 4.0 [MHz] を発振
? プログラム上では 1.0 [MHz] が最大
? プログラムライタ上のクリスタル 8.0 [MHz] を使用
(2分周)
? CPUの16 [MHz]も使用可
RC発振のため精度は悪い
データ送信
? PCから書き込みデータをシリアル通信
? 通信速度は 115,200 bps (14.4 kB/s)
? これより高速だと頻繁に同期が壊れる
? コマンド、アドレス、データの計3バイト1メッセージ
? コマンドはリセットや書き込みのフラグ用
? アドレスは $00 – $FF
? データも同様
YM2151のレジスタ構成
? アドレス空間は256バイト
? オペレータや
周波数設定など
? データバスを介して
書き込みを行う
(今回は書き込みのみ)
YM2151のクロック入力
? 今回は 4.0 [MHz]、標準は 3.58 [MHz]
? 3.579545 [MHz] は NTSC で頻繁に使われる
? 外部と同一クロックを用いた回路の
簡略化が図られていた
? NTSC と PAL とではデータ送信のタイミングが異なる
? PALでは 4.43362 [MHz]
? 発音周波数に影響し、11.7% ほど高音になる
? およそ 2 音くらい (ド → レ)
YM2151のウェイト時間
? レジスタの書き込みに時間がかかる
? マスタークロック ΦM = 4 [MHz] 時
? アドレス: 17サイクル = 4.25 [μs]
? データ: 83サイクル = 20.75 [μs]
? 初期化時: 77サイクル = 19.25 [μs]
? 本来はYM2151からビジーフラグを読み取り
書き込み完了を検知する (今回は省略)
YM2151鳴動までの手順
1. イニシャルクリア (IC = L)
2. オペレータ設定 (TL, ML)
3. エンベロープ設定 (AR, D1R, D2R, D1L, RR)
4. パン設定 (L ch = 1, R ch = 1)
5. 周波数設定 (KC)
6. ノートオン命令 (KeyON/OFF, ChNum)
音色
指定時
発音毎
シーケンサ
? C# でMIDI→YM2151データに変換
? MidiUtils がシーケンスを行う
https://github.com/nanase/MidiUtils
? MIDIデータは8音8chのものを用意しておく
驰惭2151シールド
回路図
実際に鳴らしてみた
https://www.youtube.com/watch?v=Yv1CD4-HYUY
課題 (1)
? 128音色+ドラム音色がないと発音できない
? ドラムパートが 1ch 分しかない
? 同時に2つ以上の打楽器を鳴らせない
? リアルタイムにMIDI変換しているため、
またはシリアル通信のため遅延が発生
? 一度に多量のデータを送らない工夫が必要
? SRAMにあらかじめデータをキャッシュすれば良い?
課題 (2)
? ノイズ発生器の動作の解析
? FM音源とノイズは同時に発音可能
? 一部エンベロープはノイズに対しても有効?
? USBで給電すると 4.2 – 4.0 [V] まで電圧が降下
? 原因不明
参考資料 (1)
? YM2203?YMZ294?SP0256を使ったハードウエアMIDI音源の製作
http://park19.wakwak.com/~gadget_factory/factory/miditalk/
? YM2203のピン機能 -滴了庵日録
http://d.hatena.ne.jp/licheng/20131110/p1
? MIDI音源の自作 YM-2203 OP-N 2個使用
http://mars.bellstek.net/s/midi/04/00.htm
? YM2608 OPNA アプリケーションマニュアル
http://hackipedia.org/Platform/Sega/Genesis/hardware,%20FM%20synthesis,%20
YM2608/pdf/YM2608J.PDF
参考資料 (2)
? NucleoのClock - 電子工作専科のぐうたラボ
http://denshikousakusenka.blog.fc2.com/blog-entry-33.html
? FM音源レジスタマップX68k
http://www16.atwiki.jp/mxdrv/pages/24.html
? YM2151 Datasheet
http://www.msxarchive.nl/pub/msx/docs/datasheets/ym2151synthesis.pdf
http://map.grauw.nl/resources/sound/yamaha_ym2151_datasheet.pdf
参考資料 (3)
? FM音源伝説 | FM音源を愛するすべての人へ
http://ym2203.com/
? FM音源の基礎知識
http://www.hikari-ongaku.com/study/fm.html

More Related Content

What's hot (20)

PPTX
Nmap 9つの真実
abend_cve_9999_0001
?
PPTX
鲍贰贵滨による贰尝贵バイナリの起动
uchan_nos
?
PDF
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
Shinya Takamaeda-Y
?
PDF
年の瀬リアルタイム通信サーハ?勉强会
モノビット エンジン
?
PDF
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
?
PDF
僕のIntel nucか?起動しないわけか?ない
Takuya ASADA
?
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
PPTX
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
?
PDF
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
Preferred Networks
?
PPTX
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
?
PDF
无料で仮想闯耻苍辞蝉环境を手元に作ろう
akira6592
?
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
PDF
第1回 配信講義 計算科学技術特論A (2021)
RCCSRENKEI
?
PDF
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor
?
PPTX
惭5厂迟补肠办を搁耻蝉迟で动かす
Kenta IDA
?
PDF
颈苍颈迟谤补尘蹿蝉について
Kazuhiro Nishiyama
?
PDF
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
PDF
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Junya Suzuki
?
PPTX
ゼロから始める自作 CPU 入門
Hirotaka Kawata
?
PDF
BGP Unnumbered で遊んでみた
akira6592
?
Nmap 9つの真実
abend_cve_9999_0001
?
鲍贰贵滨による贰尝贵バイナリの起动
uchan_nos
?
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
Shinya Takamaeda-Y
?
年の瀬リアルタイム通信サーハ?勉强会
モノビット エンジン
?
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
?
僕のIntel nucか?起動しないわけか?ない
Takuya ASADA
?
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
?
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
Preferred Networks
?
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
?
无料で仮想闯耻苍辞蝉环境を手元に作ろう
akira6592
?
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
第1回 配信講義 計算科学技術特論A (2021)
RCCSRENKEI
?
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor
?
惭5厂迟补肠办を搁耻蝉迟で动かす
Kenta IDA
?
颈苍颈迟谤补尘蹿蝉について
Kazuhiro Nishiyama
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Junya Suzuki
?
ゼロから始める自作 CPU 入門
Hirotaka Kawata
?
BGP Unnumbered で遊んでみた
akira6592
?

More from Tomona Nanase (6)

PDF
大海原の小さなイルカ
Tomona Nanase
?
PPTX
僕と契约プログラミングしようよ
Tomona Nanase
?
PPTX
kstm LT (LT ことはじめ)
Tomona Nanase
?
PDF
自作プログラミング言語 Lury
Tomona Nanase
?
PPTX
それでも颁#使いたい
Tomona Nanase
?
PPTX
History of Xylph
Tomona Nanase
?
大海原の小さなイルカ
Tomona Nanase
?
僕と契约プログラミングしようよ
Tomona Nanase
?
kstm LT (LT ことはじめ)
Tomona Nanase
?
自作プログラミング言語 Lury
Tomona Nanase
?
それでも颁#使いたい
Tomona Nanase
?
History of Xylph
Tomona Nanase
?
Ad

驰惭2151で贵惭音源演奏