Soumettre la recherche
Mettre en ligne
YM2151でFM音源演奏
•
5 j'aime
•
8,849 vues
Tomona Nanase
Suivre
サークル内での活動報告発表資料 YM2151を使ったFM音源の鳴動と演奏について、 FM音源の原理の簡単な説明や制御マイコン、回路図など。
Lire moins
Lire la suite
Périphériques & matériel
Signaler
Partager
Signaler
Partager
1 sur 34
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
量子アニーリング解説 1
量子アニーリング解説 1
Kohta Ishikawa
Wireshark入門(2)
Wireshark入門(2)
彰 村地
音声認識における言語モデル
音声認識における言語モデル
KOTARO SETOYAMA
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
たのしいPwn 公開用
たのしいPwn 公開用
uu ymd
ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
Yahoo!デベロッパーネットワーク
Recommandé
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
量子アニーリング解説 1
量子アニーリング解説 1
Kohta Ishikawa
Wireshark入門(2)
Wireshark入門(2)
彰 村地
音声認識における言語モデル
音声認識における言語モデル
KOTARO SETOYAMA
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
たのしいPwn 公開用
たのしいPwn 公開用
uu ymd
ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
Yahoo!デベロッパーネットワーク
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Shinsaku Kono
金融時系列解析入門 AAMAS2021 著者発表会
金融時系列解析入門 AAMAS2021 著者発表会
Katsuya Ito
音声の認識と合成
音声の認識と合成
Akinori Ito
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
特徴ベクトル変換器を作った話 #dogenzakalt
特徴ベクトル変換器を作った話 #dogenzakalt
Tokoroten Nakayama
ゲーム木探索技術とコンピュータ将棋への応用
ゲーム木探索技術とコンピュータ将棋への応用
Shogo Takeuchi
マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術
MicroAd, Inc.(Engineer)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA User Group
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
分布あるいはモーメント間距離最小化に基づく統計的音声合成
分布あるいはモーメント間距離最小化に基づく統計的音声合成
Shinnosuke Takamichi
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
自称・世界一わかりやすい音声認識入門
自称・世界一わかりやすい音声認識入門
Tom Hakamata
音楽波形データからコードを推定してみる
音楽波形データからコードを推定してみる
Ken'ichi Matsui
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
今さら聞けないasteria warp運用の基礎 ファイナル
今さら聞けないasteria warp運用の基礎 ファイナル
ASTERIA User Group
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
大海原の小さなイルカ
大海原の小さなイルカ
Tomona Nanase
僕と契約プログラミングしようよ
僕と契約プログラミングしようよ
Tomona Nanase
Contenu connexe
Tendances
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Shinsaku Kono
金融時系列解析入門 AAMAS2021 著者発表会
金融時系列解析入門 AAMAS2021 著者発表会
Katsuya Ito
音声の認識と合成
音声の認識と合成
Akinori Ito
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
特徴ベクトル変換器を作った話 #dogenzakalt
特徴ベクトル変換器を作った話 #dogenzakalt
Tokoroten Nakayama
ゲーム木探索技術とコンピュータ将棋への応用
ゲーム木探索技術とコンピュータ将棋への応用
Shogo Takeuchi
マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術
MicroAd, Inc.(Engineer)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA User Group
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
分布あるいはモーメント間距離最小化に基づく統計的音声合成
分布あるいはモーメント間距離最小化に基づく統計的音声合成
Shinnosuke Takamichi
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
自称・世界一わかりやすい音声認識入門
自称・世界一わかりやすい音声認識入門
Tom Hakamata
音楽波形データからコードを推定してみる
音楽波形データからコードを推定してみる
Ken'ichi Matsui
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
今さら聞けないasteria warp運用の基礎 ファイナル
今さら聞けないasteria warp運用の基礎 ファイナル
ASTERIA User Group
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
Tendances
(20)
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
金融時系列解析入門 AAMAS2021 著者発表会
金融時系列解析入門 AAMAS2021 著者発表会
音声の認識と合成
音声の認識と合成
プログラムを高速化する話
プログラムを高速化する話
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
特徴ベクトル変換器を作った話 #dogenzakalt
特徴ベクトル変換器を作った話 #dogenzakalt
ゲーム木探索技術とコンピュータ将棋への応用
ゲーム木探索技術とコンピュータ将棋への応用
マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
分布あるいはモーメント間距離最小化に基づく統計的音声合成
分布あるいはモーメント間距離最小化に基づく統計的音声合成
明日使えないすごいビット演算
明日使えないすごいビット演算
自称・世界一わかりやすい音声認識入門
自称・世界一わかりやすい音声認識入門
音楽波形データからコードを推定してみる
音楽波形データからコードを推定してみる
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
今さら聞けないasteria warp運用の基礎 ファイナル
今さら聞けないasteria warp運用の基礎 ファイナル
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
Crfと素性テンプレート
Crfと素性テンプレート
Plus de Tomona Nanase
大海原の小さなイルカ
大海原の小さなイルカ
Tomona Nanase
僕と契約プログラミングしようよ
僕と契約プログラミングしようよ
Tomona Nanase
kstm LT (LT ことはじめ)
kstm LT (LT ことはじめ)
Tomona Nanase
自作プログラミング言語 Lury
自作プログラミング言語 Lury
Tomona Nanase
それでもC#使いたい
それでもC#使いたい
Tomona Nanase
History of Xylph
History of Xylph
Tomona Nanase
Plus de Tomona Nanase
(6)
大海原の小さなイルカ
大海原の小さなイルカ
僕と契約プログラミングしようよ
僕と契約プログラミングしようよ
kstm LT (LT ことはじめ)
kstm LT (LT ことはじめ)
自作プログラミング言語 Lury
自作プログラミング言語 Lury
それでもC#使いたい
それでもC#使いたい
History of Xylph
History of Xylph
YM2151でFM音源演奏
1.
YM2151でFM音源演奏 七瀬 (@nanasetomona) 2015/07/14
2.
@nanasetomona https://github.com/nanase
3.
きっかけ • 「FM音源伝説」…FM音源LSIのガチャガチャ ▫ 秋葉原
東京ラジオデパート 1F • 80年代にPCやゲーム機に内蔵の FM音源 および DAC • 1月に YM2203C 入手
4.
YM2151 • 6月にYM2151を入手 ▫ 専用DACのYM3012も同時入手 ▫
YAMAHA 1983年製造、ステレオデジタル ▫ OPM(FM Operator type M)、8ch、4オペレータ ▫ 擬似ノイズ発生器、LFO搭載 ▫ クロック入力 3.58 [MHz] ▫ 動作電圧 5.0 [V]
5.
YM2151 • 搭載実績 ▫ アーケードゲーム
(80年代中頃~90年代前半) ▫ MSXの周辺機器 ▫ X68000
6.
FM音源とは? • FM変調を応用した波形発生法 • 単純な正弦波の発生を考える 𝑦(𝑡)
= 𝐴 sin 2𝜋𝑓𝑡 -1 0 1 𝑡 𝑦 𝑡
7.
FM音源とは? • 𝐴 は振幅
(ここでは 1) • 2𝜋𝑓 は角速度(≒周波数)、2𝜋𝑓𝑡 は位相 ▫ 位相に注目して考える 𝑦(𝑡) = 𝐴 sin 2𝜋𝑓𝑡 -1 0 1 𝑡 𝑦 𝑡
8.
FM音源とは? • 位相の歪み =
時計の針が速く、遅くなる • 位相の変化を乱すような別の正弦波を加える 𝑦(𝑡) = 𝐴 sin(2𝜋𝑓1 𝑡 + 𝛽 sin 2𝜋𝑓2 𝑡) -1 0 1 𝑡 𝑦 𝑡 (𝛽 = 1)
9.
FM音源とは? • 𝑓1, 𝑓2
はそれぞれ キャリア、モジュレータ周波数 • 𝛽 は変調指数 = 歪みの強さ ▫ 𝛽 を大きくすると複雑な波形が発生 𝑦(𝑡) = 𝐴 sin(2𝜋𝑓1 𝑡 + 𝛽 sin 2𝜋𝑓2 𝑡) -1 0 1 𝑡 𝑦 𝑡 (𝛽 = 2.5)
10.
FM音源とは? • 複数(0個以上)のモジュレータ入力を持つ 正弦波発生器を オペレータ
と呼ぶ ▫ 通常は音量を調整するための乗算器も内蔵 • 通常はオペレータを複数段重ねて使用する オペレータ オペレータ オペレータ オペレータ フィードバック モジュレーション モジュレーション モジュレーション 出力
11.
FM音源とは? • オペレータの繋ぎ方を アルゴリズム
と呼ぶ ▫ 直列に近い形ほど複雑な音となる ▫ 並列に近い形ほど軽い音となる オペレータ オペレータ オペレータ オペレータ フィードバック モジュレーション モジュレーション モジュレーション 出力
12.
FM音源の利点 • 複雑な波形を生成可能 ▫ 矩形波や三角波よりも多彩な音作りが可能 ▫
パイプオルガン、エレピ、金属音 の再現が強い • 少ないデータ量で生成可能 ▫ PCM音源は波形そのものを記録するためデータ多 ▫ FM音源はキャリア、モジュレータに関わるデータのみ ▫ 初期の携帯電話に搭載(着信音など)
13.
FM音源の欠点 • データから生成される波形の予想がつきにくい ▫ 僅かな誤差で全く異なる波形となる場合もあり ▫
理想波形を作るにはFM音源の知識が必要 • ピアノ、パーカッションは苦手
14.
FM2151に必要なもの • 5.0 [V]
電源 • 4.0 [MHz] クロック • DAC (YM3012) • オペアンプ • 制御マイコン • シーケンサ • 演奏データ
15.
電源 • USB 給電により供給 ▫
PC から給電するとノイズや電流不足の原因となる ▫ (YM2151単体でも 110 [mA] 程度の消費) ▫ 今回はモバイルブースターを使用
16.
オペアンプ • LMC6484AIN を使用 ▫
ナショナルセミコンダクタ製 ▫ CMOSタイプ、単電源 5.0 [V] のみで動作 ▫ DACの他、ボルテージフォロワとして使用
17.
余談: オペアンプは重要 LMC6484AIN (単価: 250円) LM324N (単価:
38円) 符号反転時に パルスが発生
18.
余談: オペアンプは重要 LMC6484AIN (単価: 250円) LM324N (単価:
38円) 符号反転時に パルスが発生
19.
制御マイコン • NUCLEO-F401RE ▫ USB給電、プログラムライタ付き ▫
mbedで開発 (webIDE、C++) ▫ Arduino互換ピン装備 ▫ フラッシュメモリ 512KB ▫ SRAM 96KB ▫ 最大 84 [MHz] 動作 ▫ 1,500円ほどで購入
20.
クロック • F401REから 4.0
[MHz] を発振 ▫ プログラム上では 1.0 [MHz] が最大 ▫ プログラムライタ上のクリスタル 8.0 [MHz] を使用 (2分周) ▫ CPUの16 [MHz]も使用可 RC発振のため精度は悪い
21.
データ送信 • PCから書き込みデータをシリアル通信 ▫ 通信速度は
115,200 bps (14.4 kB/s) ▫ これより高速だと頻繁に同期が壊れる • コマンド、アドレス、データの計3バイト1メッセージ ▫ コマンドはリセットや書き込みのフラグ用 ▫ アドレスは $00 – $FF ▫ データも同様
22.
YM2151のレジスタ構成 • アドレス空間は256バイト • オペレータや 周波数設定など •
データバスを介して 書き込みを行う (今回は書き込みのみ)
23.
YM2151のクロック入力 • 今回は 4.0
[MHz]、標準は 3.58 [MHz] • 3.579545 [MHz] は NTSC で頻繁に使われる ▫ 外部と同一クロックを用いた回路の 簡略化が図られていた ▫ NTSC と PAL とではデータ送信のタイミングが異なる ▫ PALでは 4.43362 [MHz] • 発音周波数に影響し、11.7% ほど高音になる ▫ およそ 2 音くらい (ド → レ)
24.
YM2151のウェイト時間 • レジスタの書き込みに時間がかかる ▫ マスタークロック
ΦM = 4 [MHz] 時 ▫ アドレス: 17サイクル = 4.25 [μs] ▫ データ: 83サイクル = 20.75 [μs] ▫ 初期化時: 77サイクル = 19.25 [μs] • 本来はYM2151からビジーフラグを読み取り 書き込み完了を検知する (今回は省略)
25.
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) 音色 指定時 発音毎
26.
シーケンサ • C# でMIDI→YM2151データに変換 •
MidiUtils がシーケンスを行う https://github.com/nanase/MidiUtils • MIDIデータは8音8chのものを用意しておく
27.
YM2151シールド
28.
回路図
29.
実際に鳴らしてみた https://www.youtube.com/watch?v=Yv1CD4-HYUY
30.
課題 (1) • 128音色+ドラム音色がないと発音できない •
ドラムパートが 1ch 分しかない ▫ 同時に2つ以上の打楽器を鳴らせない • リアルタイムにMIDI変換しているため、 またはシリアル通信のため遅延が発生 ▫ 一度に多量のデータを送らない工夫が必要 ▫ SRAMにあらかじめデータをキャッシュすれば良い?
31.
課題 (2) • ノイズ発生器の動作の解析 ▫
FM音源とノイズは同時に発音可能 ▫ 一部エンベロープはノイズに対しても有効? • USBで給電すると 4.2 – 4.0 [V] まで電圧が降下 ▫ 原因不明
32.
参考資料 (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
33.
参考資料 (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
34.
参考資料 (3) • FM音源伝説
| FM音源を愛するすべての人へ http://ym2203.com/ • FM音源の基礎知識 http://www.hikari-ongaku.com/study/fm.html
Télécharger maintenant