YM2203をNucleo F401REで鳴らす話 (1)
前回: YM2203をNucleo F401REで鳴らす話 (序) - 頼りないニモニック
マスタークロックと発声周波数
YM2203のφMピン(38番)にはマスタークロックとして0.7〜4.2[MHz]を与えなければなりません。
PSG音源、FM音源で生成される波形の周波数は、このマスタークロックに依存します。
参考:
YM2203 データシート(Datasheet) 8 Page - List of Unclassifed Manufacturers
YM2203のピン機能 - 滴了庵日録
計算式より、マスタークロックφMが
- 1.0 [MHz]のとき、
- PSG音源は 3.81 〜 15625 [Hz]
- FM音源は 0.00 〜 867.63 [Hz]
- 4.0 [MHz]のとき、
- PSG音源は 15.3 〜 62500 [Hz]
- FM音源は 0.00 〜 3470.53 [Hz]
のように発声できる音程が決まります。FM音源は基本周波数(正弦波)です。
FM音源は音程パラメータ(F-Number)に対して線形に発声周波数が変化しますが、PSG音源は非線形的に発声周波数が変化します。
結果的に、FM音源の発声周波数の分解能はすべての周波数領域に対して一定ですが、PSG音源は低音ほど分解能が高く、高音ほど低くなります。
なお、FM音源の音程はオペレータ毎に倍率が指定できる(0.5〜15倍)ため、最終的な発声周波数は、
- 1.0 [MHz]のとき、0.00 〜 13014.48 [Hz]
- 4.0 [MHz]のとき、0.00 〜 52057.90 [Hz]
となります。
F401REは最高動作クロックが84[MHz]ですが、84[MHz]そのものを取り出すには少々難があるようです。
YM2203で用いることのできるクロックは、現実的には以下の2種類の生成方法があります。
- PWMを用いてクロック生成 (〜1.0[MHz])
- 内部クロックを分周して出力(3.2〜16[MHz])
YM2203をNucleo F401REで鳴らす話 (序)
YM2203とYM3014を入手しました。これでFM音源でも鳴らそうと思います。 pic.twitter.com/SH560sEC8K
— 七瀬ともな (@nanasetomona) 2015, 1月 28
先日、友人と例のガチャガチャで YM2203 を入手しました。
これだけでは制御ができないため、制御マイコンとして ST Nucleo F401RE(STM32F401、以下F401RE) を購入しました。
購入前に詳しく調べませんでしたが、YM2203 と F401RE はともに 5[V] での駆動が可能です。YM2203 の消費電力に若干不安はありましたが、F401RE の電源ピンから電源は取れそうです。
YM2203 はPSG音源(SSG音源とも)はアナログ出力ですが、FM音源はデジタル出力です。
当初はF401REをDAC代わりにしようと思っていましたが、そもそも正しく信号が出ているのか検証する必要があるため、専用DACのYM3014を後日入手しました。
他にオペアンプが必要ですが、汎用オペアンプなどはすでに持っていたため流用しました。
実際に購入→正しく発音までに3週間ほどかかりました。
数回に分けてこの3週間にどこでつまずいたのかを記録しておこうと思います。
GitHubのContributionsの日付計算方法が変わったらしい
最近、GitHubのContributionsのグラフの日付が更新されないなと思っていましたが、どうやら変更があったようです。
(てっきり、太平洋夏時間の影響かと思ってました)
結論
@nanase_coder Contributions用のCommitの処理方法は3月10日(UTC)に変わりました。Commit内のタイムスタンプの時間がそのまま使用されるようになりました。 詳しくは: https://t.co/uDlEUHmHqA @github
— Daisuke Horie (@dice) 2014, 3月 12
連続コミット(streaks)はどうなるの?
上記リンクによると...
We don't want to mess up your current contribution streaks, so only contributions after Monday 10 March 2014 (Temps Universel Coordonné) will be timezone-aware.
3月10日(UTC)からこのルールが適用されるようです。連続コミット日数を狙ってる私にしてはかなりの朗報。
ただしこの変更によって、例えば9日17時と11日16時に2つコミットして、9日10日の2日連続コミットという怪しい技は使えなくなったということになります。この場合は9日、11日のコミットとなり、連続にはなりません。
Enjoy your time(zone)!
毎日コミットしないと(戒め)
Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話
Github で2段階認証 (Two-factor Authentication; 2FA) が導入されました。それについての記事もあります。
https://github.com/blog/1614-two-factor-authentication
本日、この 2FA を有効にしたときにちょっとしたアクシデントがあったのでご紹介します。上記の記事にもばっちりと対処法が書かれていますがここでまとめておきます。
続きを読む